diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:35:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:35:49 +0000 |
commit | d8bbc7858622b6d9c278469aab701ca0b609cddf (patch) | |
tree | eff41dc61d9f714852212739e6b3738b82a2af87 /mobile/android/android-components/components/feature/autofill/src | |
parent | Releasing progress-linux version 125.0.3-1~progress7.99u1. (diff) | |
download | firefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.tar.xz firefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.zip |
Merging upstream version 126.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mobile/android/android-components/components/feature/autofill/src')
148 files changed, 7815 insertions, 0 deletions
diff --git a/mobile/android/android-components/components/feature/autofill/src/main/AndroidManifest.xml b/mobile/android/android-components/components/feature/autofill/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..80ef4db858 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/AndroidManifest.xml @@ -0,0 +1,11 @@ +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools"> + + <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" + tools:ignore="QueryAllPackagesPermission" /> + + <application android:supportsRtl="true" /> +</manifest> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/AbstractAutofillService.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/AbstractAutofillService.kt new file mode 100644 index 0000000000..1d0fb7f97e --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/AbstractAutofillService.kt @@ -0,0 +1,83 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill + +import android.os.Build +import android.os.CancellationSignal +import android.service.autofill.AutofillService +import android.service.autofill.FillCallback +import android.service.autofill.FillRequest +import android.service.autofill.SaveCallback +import android.service.autofill.SaveRequest +import android.widget.inline.InlinePresentationSpec +import androidx.annotation.RequiresApi +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import mozilla.components.feature.autofill.handler.FillRequestHandler +import mozilla.components.feature.autofill.handler.MAX_LOGINS +import mozilla.components.feature.autofill.structure.toRawStructure + +/** + * Service responsible for implementing Android's Autofill framework. + */ +@RequiresApi(Build.VERSION_CODES.O) +abstract class AbstractAutofillService : AutofillService() { + abstract val configuration: AutofillConfiguration + + private val fillHandler by lazy { FillRequestHandler(context = this, configuration) } + + override fun onFillRequest( + request: FillRequest, + cancellationSignal: CancellationSignal, + callback: FillCallback, + ) { + // We are using GlobalScope here instead of a scope bound to the service since the service + // seems to get destroyed before we invoke a method on the callback. So we need a scope that + // lives longer than the service. + @OptIn(DelicateCoroutinesApi::class) + GlobalScope.launch(Dispatchers.IO) { + // You may be wondering why we translate the AssistStructure into a RawStructure and then + // create a FillResponseBuilder that outputs the FillResponse. This is purely for testing. + // Neither AssistStructure nor FillResponse can be created by us and they do not let us + // inspect their data. So we create these intermediate objects that we can create and + // inspect in unit tests. + val structure = request.fillContexts.last().structure.toRawStructure() + val responseBuilder = fillHandler.handle( + structure, + maxSuggestionCount = request.getMaxSuggestionCount(), + ) + val response = responseBuilder?.build( + this@AbstractAutofillService, + configuration, + request.getInlinePresentationSpec(), + ) + callback.onSuccess(response) + } + } + + override fun onSaveRequest(request: SaveRequest, callback: SaveCallback) { + // This callback should not get invoked since we do not indicate that we are interested in + // saving any data (yet). If for whatever reason it does get invoked then we pretent that + // we handled the request successfully. Calling onFailure() requires to pass in a message + // and on Android systems before Q this message may be shown in a toast. + callback.onSuccess() + } +} + +internal fun FillRequest.getInlinePresentationSpec(): InlinePresentationSpec? { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + return inlineSuggestionsRequest?.inlinePresentationSpecs?.last() + } else { + return null + } +} + +internal fun FillRequest.getMaxSuggestionCount() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + (inlineSuggestionsRequest?.maxSuggestionCount ?: 1) - 1 // space for search chip +} else { + MAX_LOGINS +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/AutofillConfiguration.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/AutofillConfiguration.kt new file mode 100644 index 0000000000..79b31d81f5 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/AutofillConfiguration.kt @@ -0,0 +1,45 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill + +import mozilla.components.concept.fetch.Client +import mozilla.components.concept.storage.LoginsStorage +import mozilla.components.feature.autofill.lock.AutofillLock +import mozilla.components.feature.autofill.ui.AbstractAutofillConfirmActivity +import mozilla.components.feature.autofill.ui.AbstractAutofillSearchActivity +import mozilla.components.feature.autofill.ui.AbstractAutofillUnlockActivity +import mozilla.components.feature.autofill.verify.CredentialAccessVerifier +import mozilla.components.lib.publicsuffixlist.PublicSuffixList +import mozilla.components.service.digitalassetlinks.local.StatementApi +import mozilla.components.service.digitalassetlinks.local.StatementRelationChecker + +/** + * Configuration for the "Autofill" feature. + * + * @property storage The [LoginsStorage] used for looking up accounts and passwords to autofill. + * @property publicSuffixList Global instance of the public suffix list used for matching domains. + * @property unlockActivity Activity class that implements [AbstractAutofillUnlockActivity]. + * @property confirmActivity Activity class that implements [AbstractAutofillConfirmActivity]. + * @property searchActivity Activity class that implements [AbstractAutofillSearchActivity]. + * @property applicationName The name of the application that integrates this feature. Used in UI. + * @property lock Global [AutofillLock] instance used for unlocking the autofill service. + * @property verifier Helper for verifying the connection between a domain and an application. + * @property activityRequestCode The request code used for pending intents that launch an activity + * on behalf of the autofill service. + */ +data class AutofillConfiguration( + val storage: LoginsStorage, + val publicSuffixList: PublicSuffixList, + val unlockActivity: Class<*>, + val confirmActivity: Class<*>, + val searchActivity: Class<*>, + val applicationName: String, + val httpClient: Client, + val lock: AutofillLock = AutofillLock(), + val verifier: CredentialAccessVerifier = CredentialAccessVerifier( + StatementRelationChecker(StatementApi(httpClient)), + ), + val activityRequestCode: Int = 1010, +) diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/AutofillUseCases.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/AutofillUseCases.kt new file mode 100644 index 0000000000..8a4a882caf --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/AutofillUseCases.kt @@ -0,0 +1,83 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill + +import android.annotation.SuppressLint +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.provider.Settings +import android.view.autofill.AutofillManager +import androidx.annotation.VisibleForTesting +import mozilla.components.support.base.log.logger.Logger + +/** + * Use cases for common Android Autofill tasks. + */ +@SuppressLint("NewApi") // All API calls are checked properly. +class AutofillUseCases( + @VisibleForTesting sdkVersion: Int = Build.VERSION.SDK_INT, +) { + private val isAutofillAvailable = sdkVersion >= Build.VERSION_CODES.O + private val logger = Logger("AutofillUseCases") + + /** + * Returns true if Autofill is supported by the current device. + */ + fun isSupported(context: Context): Boolean { + if (!isAutofillAvailable) { + return false + } + + return context.getSystemService(AutofillManager::class.java) + .isAutofillSupported + } + + /** + * Returns true if this application is providing Autofill services for the current user. + */ + @Suppress("TooGenericExceptionCaught") + fun isEnabled(context: Context): Boolean { + if (!isAutofillAvailable) { + return false + } + + return try { + context.getSystemService(AutofillManager::class.java) + .hasEnabledAutofillServices() + } catch (e: RuntimeException) { + // Without more detail about why the system service has timed out, it's easiest to assume + // that the failure will continue and so disable the service for now. + logger.error("System service lookup has timed out") + false + } + } + + /** + * Opens the system's autofill settings to let the user select an autofill service. + */ + fun enable(context: Context) { + if (!isAutofillAvailable) { + return + } + + val intent = Intent(Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE) + intent.data = Uri.parse("package:${context.packageName}") + context.startActivity(intent) + } + + /** + * Disables autofill if this application is providing Autofill services for the current user. + */ + fun disable(context: Context) { + if (!isAutofillAvailable) { + return + } + + context.getSystemService(AutofillManager::class.java) + .disableAutofillServices() + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/authenticator/Authenticator.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/authenticator/Authenticator.kt new file mode 100644 index 0000000000..e1034c634e --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/authenticator/Authenticator.kt @@ -0,0 +1,61 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.authenticator + +import android.content.Context +import androidx.fragment.app.FragmentActivity +import mozilla.components.feature.autofill.AutofillConfiguration + +/** + * Shared interface to support multiple authentication methods. + */ +internal interface Authenticator { + /** + * Shows an authentication prompt and will invoke [callback] once authentication succeeded or + * failed. + */ + fun prompt(activity: FragmentActivity, callback: Callback) + + /** + * For passing an activity launch result to the authenticator. + */ + fun onActivityResult(requestCode: Int, resultCode: Int) + + /** + * Callback getting invoked by an [Authenticator] implementation once authentication completed. + */ + interface Callback { + /** + * Called when a biometric (e.g. fingerprint, face, etc.) is recognized, indicating that the + * user has successfully authenticated. + */ + fun onAuthenticationSucceeded() + + /** + * Called when a biometric (e.g. fingerprint, face, etc.) is presented but not recognized as + * belonging to the user. + */ + fun onAuthenticationFailed() + + /** + * Called when an unrecoverable error has been encountered and authentication has stopped. + */ + fun onAuthenticationError() + } +} + +/** + * Creates an [Authenticator] for the current device setup. + */ +internal fun createAuthenticator( + context: Context, + configuration: AutofillConfiguration, +): Authenticator? { + return when { + BiometricAuthenticator.isAvailable(context) -> BiometricAuthenticator(configuration) + DeviceCredentialAuthenticator.isAvailable(context) -> DeviceCredentialAuthenticator(configuration) + else -> null + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/authenticator/BiometricAuthenticator.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/authenticator/BiometricAuthenticator.kt new file mode 100644 index 0000000000..8c82fa3452 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/authenticator/BiometricAuthenticator.kt @@ -0,0 +1,81 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.authenticator + +import android.content.Context +import androidx.biometric.BiometricManager +import androidx.biometric.BiometricPrompt +import androidx.core.content.ContextCompat +import androidx.fragment.app.FragmentActivity +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.R + +private const val AUTHENTICATORS = + BiometricManager.Authenticators.BIOMETRIC_WEAK or BiometricManager.Authenticators.DEVICE_CREDENTIAL + +/** + * [Authenticator] implementation that uses [BiometricManager] and [BiometricPrompt] to authorize + * the user. + */ +internal class BiometricAuthenticator( + private val configuration: AutofillConfiguration, +) : Authenticator { + + override fun prompt(activity: FragmentActivity, callback: Authenticator.Callback) { + val executor = ContextCompat.getMainExecutor(activity) + val biometricPrompt = BiometricPrompt(activity, executor, PromptCallback(callback)) + + val promptInfo = BiometricPrompt.PromptInfo.Builder() + .setAllowedAuthenticators(AUTHENTICATORS) + .setTitle( + activity.getString( + R.string.mozac_feature_autofill_popup_unlock_application, + configuration.applicationName, + ), + ) + .build() + + biometricPrompt.authenticate(promptInfo) + } + + override fun onActivityResult(requestCode: Int, resultCode: Int) = Unit + + companion object { + /** + * Returns `true` if biometric authentication with [BiometricAuthenticator] is possible. + */ + fun isAvailable(context: Context): Boolean { + val biometricManager = BiometricManager.from(context) + return biometricManager.canAuthenticate(AUTHENTICATORS) == + BiometricManager.BIOMETRIC_SUCCESS + } + + /** + * Returns `true` if biometric authentication with [BiometricAuthenticator] is not possible + * yet, but the user can enroll and create credentials for it. + */ + fun canEnroll(context: Context): Boolean { + val biometricManager = BiometricManager.from(context) + return biometricManager.canAuthenticate(AUTHENTICATORS) == + BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED + } + } +} + +private class PromptCallback( + private val callback: Authenticator.Callback, +) : BiometricPrompt.AuthenticationCallback() { + override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) { + callback.onAuthenticationSucceeded() + } + + override fun onAuthenticationFailed() { + callback.onAuthenticationFailed() + } + + override fun onAuthenticationError(errorCode: Int, errString: CharSequence) { + callback.onAuthenticationError() + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/authenticator/DeviceCredentialAuthenticator.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/authenticator/DeviceCredentialAuthenticator.kt new file mode 100644 index 0000000000..c8780d9d10 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/authenticator/DeviceCredentialAuthenticator.kt @@ -0,0 +1,51 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.authenticator + +import android.app.Activity.RESULT_OK +import android.app.KeyguardManager +import android.content.Context +import androidx.fragment.app.FragmentActivity +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.R + +/** + * [Authenticator] implementation that uses Android's [KeyguardManager] to authenticate the user. + */ +internal class DeviceCredentialAuthenticator( + private val configuration: AutofillConfiguration, +) : Authenticator { + private var callback: Authenticator.Callback? = null + + @Suppress("Deprecation") // This is only used when BiometricPrompt is unavailable + override fun prompt(activity: FragmentActivity, callback: Authenticator.Callback) { + this.callback = callback + + val manager = activity.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager? + val intent = manager!!.createConfirmDeviceCredentialIntent( + activity.getString( + R.string.mozac_feature_autofill_popup_unlock_application, + configuration.applicationName, + ), + "", + ) + activity.startActivityForResult(intent, configuration.activityRequestCode) + } + + override fun onActivityResult(requestCode: Int, resultCode: Int) { + if (requestCode == configuration.activityRequestCode && resultCode == RESULT_OK) { + callback?.onAuthenticationSucceeded() + } else { + callback?.onAuthenticationFailed() + } + } + + companion object { + fun isAvailable(context: Context): Boolean { + val manager = context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager? + return manager?.isKeyguardSecure == true + } + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/facts/AutofillFacts.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/facts/AutofillFacts.kt new file mode 100644 index 0000000000..51a82dea07 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/facts/AutofillFacts.kt @@ -0,0 +1,106 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.facts + +import mozilla.components.support.base.Component +import mozilla.components.support.base.facts.Action +import mozilla.components.support.base.facts.Fact +import mozilla.components.support.base.facts.collect + +/** + * [Fact]s emitted by the `feature-autofill` component. + */ +class AutofillFacts { + /** + * Items the `feature-autofill` component emits [Fact]s for. + */ + object Items { + const val AUTOFILL_REQUEST = "autofill_request" + const val AUTOFILL_CONFIRMATION = "autofill_confirmation" + const val AUTOFILL_SEARCH = "autofill_search" + const val AUTOFILL_LOCK = "autofill_lock" + const val AUTOFILL_LOGIN_PASSWORD_DETECTED = "autofill_login_password_detected" + } + + /** + * Metadata keys used by some [Fact]s emitted by the `feature-autofill` component. + */ + object Metadata { + const val HAS_MATCHING_LOGINS = "has_matching_logins" + const val NEEDS_CONFIRMATION = "needs_confirmation" + } +} + +internal fun emitLoginPasswordDetectedFact() { + Fact( + Component.FEATURE_AUTOFILL, + Action.INTERACTION, + AutofillFacts.Items.AUTOFILL_LOGIN_PASSWORD_DETECTED, + metadata = null, + ).collect() +} + +internal fun emitAutofillRequestFact( + hasLogins: Boolean, + needsConfirmation: Boolean? = null, +) { + Fact( + Component.FEATURE_AUTOFILL, + Action.SYSTEM, + AutofillFacts.Items.AUTOFILL_REQUEST, + metadata = requestMetadata(hasLogins, needsConfirmation), + ).collect() +} + +internal fun emitAutofillConfirmationFact( + confirmed: Boolean, +) { + Fact( + Component.FEATURE_AUTOFILL, + if (confirmed) { Action.CONFIRM } else { Action.CANCEL }, + AutofillFacts.Items.AUTOFILL_CONFIRMATION, + ).collect() +} + +internal fun emitAutofillSearchDisplayedFact() { + Fact( + Component.FEATURE_AUTOFILL, + Action.DISPLAY, + AutofillFacts.Items.AUTOFILL_SEARCH, + ).collect() +} + +internal fun emitAutofillSearchSelectedFact() { + Fact( + Component.FEATURE_AUTOFILL, + Action.SELECT, + AutofillFacts.Items.AUTOFILL_SEARCH, + ).collect() +} + +internal fun emitAutofillLock( + unlocked: Boolean, +) { + Fact( + Component.FEATURE_AUTOFILL, + if (unlocked) { Action.CONFIRM } else { Action.CANCEL }, + AutofillFacts.Items.AUTOFILL_LOCK, + ).collect() +} + +private fun requestMetadata( + hasLogins: Boolean, + needsConfirmation: Boolean? = null, +): Map<String, Any> { + val metadata = mutableMapOf<String, Any>( + AutofillFacts.Metadata.HAS_MATCHING_LOGINS to hasLogins, + ) + + needsConfirmation?.let { + metadata[AutofillFacts.Metadata.NEEDS_CONFIRMATION] = needsConfirmation + } + + return metadata +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/handler/FillRequestHandler.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/handler/FillRequestHandler.kt new file mode 100644 index 0000000000..154629f320 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/handler/FillRequestHandler.kt @@ -0,0 +1,106 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.handler + +import android.annotation.SuppressLint +import android.app.assist.AssistStructure +import android.content.Context +import android.os.Build +import android.service.autofill.FillRequest +import android.service.autofill.FillResponse +import androidx.annotation.RequiresApi +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.facts.emitAutofillRequestFact +import mozilla.components.feature.autofill.response.dataset.DatasetBuilder +import mozilla.components.feature.autofill.response.dataset.LoginDatasetBuilder +import mozilla.components.feature.autofill.response.fill.AuthFillResponseBuilder +import mozilla.components.feature.autofill.response.fill.FillResponseBuilder +import mozilla.components.feature.autofill.response.fill.LoginFillResponseBuilder +import mozilla.components.feature.autofill.structure.ParsedStructure +import mozilla.components.feature.autofill.structure.RawStructure +import mozilla.components.feature.autofill.structure.getLookupDomain +import mozilla.components.feature.autofill.structure.parseStructure +import kotlin.math.min + +internal const val EXTRA_LOGIN_ID = "loginId" + +// Maximum number of logins we are going to display in the autofill overlay. +internal const val MAX_LOGINS = 10 + +/** + * Class responsible for handling [FillRequest]s and returning [FillResponse]s. + */ +@RequiresApi(Build.VERSION_CODES.O) +internal class FillRequestHandler( + private val context: Context, + private val configuration: AutofillConfiguration, +) { + /** + * Handles a fill request for the given [AssistStructure] and returns a matching [FillResponse] + * or `null` if the request could not be handled or the passed in [AssistStructure] is `null`. + */ + @SuppressLint("InlinedApi") + @Suppress("ReturnCount") + suspend fun handle( + structure: RawStructure?, + forceUnlock: Boolean = false, + maxSuggestionCount: Int = MAX_LOGINS, + ): FillResponseBuilder? { + if (structure == null) { + return null + } + + val parsedStructure = parseStructure(context, structure) ?: return null + return handle(parsedStructure, forceUnlock, maxSuggestionCount) + } + + suspend fun handle( + parsedStructure: ParsedStructure, + forceUnlock: Boolean = false, + maxSuggestionCount: Int = MAX_LOGINS, + ): FillResponseBuilder { + val lookupDomain = parsedStructure.getLookupDomain(configuration.publicSuffixList) + val needsConfirmation = !configuration.verifier.hasCredentialRelationship( + context, + lookupDomain, + parsedStructure.packageName, + ) + + val logins = configuration.storage + .getByBaseDomain(lookupDomain) + .take(min(MAX_LOGINS, maxSuggestionCount)) + + return if (!configuration.lock.keepUnlocked() && !forceUnlock) { + AuthFillResponseBuilder(parsedStructure, maxSuggestionCount) + } else { + emitAutofillRequestFact(hasLogins = logins.isNotEmpty(), needsConfirmation) + LoginFillResponseBuilder(parsedStructure, logins, needsConfirmation) + } + } + + /** + * Handles a fill request for the given [RawStructure] and returns only a [DatasetBuilder] for + * the given [loginId] - or `null` if the request could not be handled or the passed in + * [RawStructure] is `null` + */ + @Suppress("ReturnCount") + suspend fun handleConfirmation(structure: RawStructure?, loginId: String): DatasetBuilder? { + if (structure == null) { + return null + } + + val parsedStructure = parseStructure(context, structure) ?: return null + val lookupDomain = parsedStructure.getLookupDomain(configuration.publicSuffixList) + + val logins = configuration.storage.getByBaseDomain(lookupDomain) + if (logins.isEmpty()) { + return null + } + + val login = logins.firstOrNull { login -> login.guid == loginId } ?: return null + + return LoginDatasetBuilder(parsedStructure, login, needsConfirmation = false) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/lock/AutofillLock.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/lock/AutofillLock.kt new file mode 100644 index 0000000000..406dee8abf --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/lock/AutofillLock.kt @@ -0,0 +1,48 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.lock + +import mozilla.components.concept.storage.LoginsStorage +import mozilla.components.support.base.android.Clock + +// Time after the last unlock that will require a new unlock +private const val AUTOLOCK_TIME = 5 * 60 * 1000 + +/** + * Helper for keeping track of the lock/unlock state for autofill. The actual unlocking or + * decrypting of the underlying storage is done by the [LoginsStorage] implementation. + */ +class AutofillLock { + private var lastUnlockTimestmap: Long = 0 + + /** + * Checks whether the autofill lock is still unlocked and whether autofill options will be shown + * without authenticating again. + */ + @Synchronized + fun isUnlocked() = lastUnlockTimestmap + AUTOLOCK_TIME >= Clock.elapsedRealtime() + + /** + * If the autofill lock is unlocked then this will keep it unlocked by extending the time until + * it will automatically get locked again. + */ + @Synchronized + fun keepUnlocked(): Boolean { + return if (isUnlocked()) { + unlock() + true + } else { + false + } + } + + /** + * Unlocks the autofill lock. + */ + @Synchronized + fun unlock() { + lastUnlockTimestmap = Clock.elapsedRealtime() + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/preference/AutofillPreference.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/preference/AutofillPreference.kt new file mode 100644 index 0000000000..0d5d6913c6 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/preference/AutofillPreference.kt @@ -0,0 +1,59 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.preference + +import android.content.Context +import android.util.AttributeSet +import androidx.appcompat.widget.SwitchCompat +import androidx.preference.Preference +import androidx.preference.PreferenceViewHolder +import mozilla.components.feature.autofill.AutofillUseCases +import mozilla.components.feature.autofill.R + +/** + * Preference showing a switch to enable this app as the preferred autofill service of the user. + * + * When getting enabled this preference will launch Android's system setting for selecting an + * autofill service. + */ +class AutofillPreference( + context: Context, + attrs: AttributeSet? = null, +) : Preference(context, attrs) { + private val useCases = AutofillUseCases() + private var switchView: SwitchCompat? = null + + init { + widgetLayoutResource = R.layout.mozac_feature_autofill_preference + isVisible = useCases.isSupported(context) + } + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + super.onBindViewHolder(holder) + + switchView = holder.findViewById(R.id.switch_widget) as SwitchCompat + + update() + } + + override fun onClick() { + super.onClick() + + if (switchView?.isChecked == true) { + useCases.disable(context) + switchView?.isChecked = false + } else { + useCases.enable(context) + } + } + + /** + * Updates the preference (on/off) based on whether this app is set as the user's autofill + * service. + */ + fun update() { + switchView?.isChecked = useCases.isEnabled(context) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/dataset/DatasetBuilder.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/dataset/DatasetBuilder.kt new file mode 100644 index 0000000000..ff236c6858 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/dataset/DatasetBuilder.kt @@ -0,0 +1,18 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.response.dataset + +import android.content.Context +import android.service.autofill.Dataset +import android.widget.inline.InlinePresentationSpec +import mozilla.components.feature.autofill.AutofillConfiguration + +internal interface DatasetBuilder { + fun build( + context: Context, + configuration: AutofillConfiguration, + imeSpec: InlinePresentationSpec? = null, + ): Dataset +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/dataset/LoginDatasetBuilder.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/dataset/LoginDatasetBuilder.kt new file mode 100644 index 0000000000..24fac38825 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/dataset/LoginDatasetBuilder.kt @@ -0,0 +1,206 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.response.dataset + +import android.annotation.SuppressLint +import android.app.PendingIntent +import android.app.slice.Slice +import android.content.Context +import android.content.Intent +import android.content.IntentSender +import android.graphics.BlendMode +import android.graphics.drawable.Icon +import android.os.Build +import android.service.autofill.Dataset +import android.service.autofill.Field +import android.service.autofill.InlinePresentation +import android.service.autofill.Presentations +import android.text.TextUtils +import android.view.autofill.AutofillId +import android.view.autofill.AutofillValue +import android.widget.RemoteViews +import android.widget.inline.InlinePresentationSpec +import androidx.annotation.RequiresApi +import androidx.autofill.inline.UiVersions +import androidx.autofill.inline.v1.InlineSuggestionUi +import mozilla.components.concept.storage.Login +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.handler.EXTRA_LOGIN_ID +import mozilla.components.feature.autofill.structure.ParsedStructure +import mozilla.components.support.utils.PendingIntentUtils + +@RequiresApi(Build.VERSION_CODES.O) +internal data class LoginDatasetBuilder( + val parsedStructure: ParsedStructure, + val login: Login, + val needsConfirmation: Boolean, + val requestOffset: Int = 0, +) : DatasetBuilder { + + @SuppressLint("NewApi") + override fun build( + context: Context, + configuration: AutofillConfiguration, + imeSpec: InlinePresentationSpec?, + ): Dataset { + val dataset = Dataset.Builder() + + val attributionIntent = Intent().apply { + `package` = context.packageName + } + + val pendingIntent = PendingIntent.getActivity( + context, + 0, + attributionIntent, + PendingIntentUtils.defaultFlags or PendingIntent.FLAG_CANCEL_CURRENT, + ) + + val usernameText = login.usernamePresentationOrFallback(context) + val passwordText = login.passwordPresentation(context) + + val usernamePresentation = createViewPresentation(context, usernameText) + val passwordPresentation = createViewPresentation(context, passwordText) + + val usernameInlinePresentation = createInlinePresentation(pendingIntent, imeSpec, usernameText) + val passwordInlinePresentation = createInlinePresentation(pendingIntent, imeSpec, passwordText) + + parsedStructure.usernameId?.let { id -> + dataset.setValue( + id, + if (needsConfirmation) null else AutofillValue.forText(login.username), + usernamePresentation, + usernameInlinePresentation, + ) + } + + parsedStructure.passwordId?.let { id -> + dataset.setValue( + id, + if (needsConfirmation) null else AutofillValue.forText(login.password), + passwordPresentation, + passwordInlinePresentation, + ) + } + + if (needsConfirmation) { + val confirmIntent = Intent(context, configuration.confirmActivity) + confirmIntent.putExtra(EXTRA_LOGIN_ID, login.guid) + + val intentSender: IntentSender = PendingIntent.getActivity( + context, + configuration.activityRequestCode + requestOffset, + confirmIntent, + PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_CANCEL_CURRENT, + ).intentSender + + dataset.setAuthentication(intentSender) + } + + return dataset.build() + } +} + +internal fun Login.usernamePresentationOrFallback(context: Context): String { + return username.ifEmpty { + context.getString(mozilla.components.feature.autofill.R.string.mozac_feature_autofill_popup_no_username) + } +} + +private fun Login.passwordPresentation(context: Context): String { + return context.getString( + mozilla.components.feature.autofill.R.string.mozac_feature_autofill_popup_password, + usernamePresentationOrFallback(context), + ) +} + +internal fun createViewPresentation(context: Context, title: String): RemoteViews { + val viewPresentation = RemoteViews(context.packageName, android.R.layout.simple_list_item_1) + viewPresentation.setTextViewText(android.R.id.text1, title) + + return viewPresentation +} + +internal fun createInlinePresentation( + pendingIntent: PendingIntent, + imeSpec: InlinePresentationSpec?, + title: String, + icon: Icon? = null, +): InlinePresentation? { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && imeSpec != null && + canUseInlineSuggestions(imeSpec) + ) { + return InlinePresentation( + createSlice(title, attribution = pendingIntent, startIcon = icon), + imeSpec, + false, + ) + } + return null +} + +@SuppressLint("RestrictedApi") +@RequiresApi(Build.VERSION_CODES.R) +internal fun createSlice( + title: CharSequence, + subtitle: CharSequence = "", + startIcon: Icon? = null, + endIcon: Icon? = null, + contentDescription: CharSequence = "", + attribution: PendingIntent, +): Slice { + // Build the content for the v1 UI. + val builder = InlineSuggestionUi.newContentBuilder(attribution) + .setContentDescription(contentDescription) + if (!TextUtils.isEmpty(title)) { + builder.setTitle(title) + } + if (!TextUtils.isEmpty(subtitle)) { + builder.setSubtitle(subtitle) + } + if (startIcon != null) { + startIcon.setTintBlendMode(BlendMode.DST) + builder.setStartIcon(startIcon) + } + if (endIcon != null) { + builder.setEndIcon(endIcon) + } + return builder.build().slice +} + +@RequiresApi(Build.VERSION_CODES.R) +internal fun canUseInlineSuggestions(imeSpec: InlinePresentationSpec): Boolean { + return UiVersions.getVersions(imeSpec.style).contains(UiVersions.INLINE_UI_VERSION_1) +} + +@RequiresApi(Build.VERSION_CODES.O) +internal fun Dataset.Builder.setValue( + id: AutofillId, + value: AutofillValue?, + presentation: RemoteViews, + inlinePresentation: InlinePresentation? = null, +): Dataset.Builder { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + val fieldBuilder: Field.Builder = Field.Builder() + if (value != null) { + fieldBuilder.setValue(value) + } + val presentationsBuilder = Presentations.Builder() + presentationsBuilder.setMenuPresentation(presentation) + + if (inlinePresentation != null) { + presentationsBuilder.setInlinePresentation(inlinePresentation) + } + + fieldBuilder.setPresentations(presentationsBuilder.build()) + this.setField(id, fieldBuilder.build()) + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && inlinePresentation != null) { + @Suppress("DEPRECATION") + setValue(id, value, presentation, inlinePresentation) + } else { + @Suppress("DEPRECATION") + setValue(id, value, presentation) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/dataset/SearchDatasetBuilder.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/dataset/SearchDatasetBuilder.kt new file mode 100644 index 0000000000..f3eefd165c --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/dataset/SearchDatasetBuilder.kt @@ -0,0 +1,76 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.response.dataset + +import android.annotation.SuppressLint +import android.app.PendingIntent +import android.content.Context +import android.content.Intent +import android.content.IntentSender +import android.os.Build +import android.service.autofill.Dataset +import android.widget.inline.InlinePresentationSpec +import androidx.annotation.RequiresApi +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.R +import mozilla.components.feature.autofill.handler.MAX_LOGINS +import mozilla.components.feature.autofill.structure.ParsedStructure + +@RequiresApi(Build.VERSION_CODES.O) +internal data class SearchDatasetBuilder( + val parsedStructure: ParsedStructure, +) : DatasetBuilder { + + @SuppressLint("NewApi") + override fun build( + context: Context, + configuration: AutofillConfiguration, + imeSpec: InlinePresentationSpec?, + ): Dataset { + val dataset = Dataset.Builder() + + val searchIntent = Intent(context, configuration.searchActivity) + val searchPendingIntent = PendingIntent.getActivity( + context, + configuration.activityRequestCode + MAX_LOGINS, + searchIntent, + PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_CANCEL_CURRENT, + ) + val intentSender: IntentSender = searchPendingIntent.intentSender + + val title = context.getString( + R.string.mozac_feature_autofill_search_suggestions, + configuration.applicationName, + ) + + val usernamePresentation = createViewPresentation(context, title) + val passwordPresentation = createViewPresentation(context, title) + + val usernameInlinePresentation = createInlinePresentation(searchPendingIntent, imeSpec, title) + val passwordInlinePresentation = createInlinePresentation(searchPendingIntent, imeSpec, title) + + parsedStructure.usernameId?.let { id -> + dataset.setValue( + id, + null, + usernamePresentation, + usernameInlinePresentation, + ) + } + + parsedStructure.passwordId?.let { id -> + dataset.setValue( + id, + null, + passwordPresentation, + passwordInlinePresentation, + ) + } + + dataset.setAuthentication(intentSender) + + return dataset.build() + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/fill/AuthFillResponseBuilder.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/fill/AuthFillResponseBuilder.kt new file mode 100644 index 0000000000..c65ddac63e --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/fill/AuthFillResponseBuilder.kt @@ -0,0 +1,125 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.response.fill + +import android.annotation.SuppressLint +import android.app.PendingIntent +import android.content.Context +import android.content.Intent +import android.content.IntentSender +import android.graphics.drawable.Icon +import android.os.Build +import android.os.Parcel +import android.service.autofill.FillResponse +import android.service.autofill.InlinePresentation +import android.service.autofill.Presentations +import android.view.autofill.AutofillId +import android.widget.RemoteViews +import android.widget.inline.InlinePresentationSpec +import androidx.annotation.RequiresApi +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.R +import mozilla.components.feature.autofill.response.dataset.createInlinePresentation +import mozilla.components.feature.autofill.structure.ParsedStructure +import mozilla.components.feature.autofill.ui.AbstractAutofillUnlockActivity +import androidx.biometric.R as biometricR + +internal data class AuthFillResponseBuilder( + private val parsedStructure: ParsedStructure, + private val maxSuggestionCount: Int, +) : FillResponseBuilder { + + @SuppressLint("NewApi") + @RequiresApi(Build.VERSION_CODES.O) + override fun build( + context: Context, + configuration: AutofillConfiguration, + imeSpec: InlinePresentationSpec?, + ): FillResponse { + val builder = FillResponse.Builder() + + val autofillIds = listOfNotNull(parsedStructure.usernameId, parsedStructure.passwordId) + + val title = context.getString( + R.string.mozac_feature_autofill_popup_unlock_application, + configuration.applicationName, + ) + + val authPresentation = RemoteViews(context.packageName, android.R.layout.simple_list_item_1).apply { + setTextViewText( + android.R.id.text1, + title, + ) + } + + val authIntent = Intent(context, configuration.unlockActivity) + + // Pass `ParsedStructure` as raw bytes to prevent the system throwing a ClassNotFoundException + // when updating the PendingIntent and trying to create and remap `ParsedStructure` + // from the parcelable extra because of an unknown ClassLoader. + with(Parcel.obtain()) { + parsedStructure.writeToParcel(this, 0) + + authIntent.putExtra( + AbstractAutofillUnlockActivity.EXTRA_PARSED_STRUCTURE, + this.marshall(), + ) + + recycle() + } + + authIntent.putExtra(AbstractAutofillUnlockActivity.EXTRA_IME_SPEC, imeSpec) + authIntent.putExtra( + AbstractAutofillUnlockActivity.EXTRA_MAX_SUGGESTION_COUNT, + maxSuggestionCount, + ) + val authPendingIntent = PendingIntent.getActivity( + context, + configuration.activityRequestCode, + authIntent, + PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_MUTABLE, + ) + val intentSender: IntentSender = authPendingIntent.intentSender + + val icon: Icon = Icon.createWithResource( + context, + biometricR.drawable.fingerprint_dialog_fp_icon, + ) + val authInlinePresentation = createInlinePresentation(authPendingIntent, imeSpec, title, icon) + builder.setAuthentication( + autofillIds.toTypedArray(), + intentSender, + authInlinePresentation, + authPresentation, + ) + + return builder.build() + } +} + +@RequiresApi(Build.VERSION_CODES.O) +internal fun FillResponse.Builder.setAuthentication( + ids: Array<AutofillId>, + authentication: IntentSender, + inlinePresentation: InlinePresentation? = null, + presentation: RemoteViews, +): FillResponse.Builder { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + val presentations: Presentations.Builder = Presentations.Builder() + presentations.apply { + inlinePresentation?.let { + setInlinePresentation(it) + } + setMenuPresentation(presentation) + } + setAuthentication(ids, authentication, presentations.build()) + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + @Suppress("DEPRECATION") + setAuthentication(ids, authentication, presentation, inlinePresentation) + } else { + @Suppress("DEPRECATION") + setAuthentication(ids, authentication, presentation) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/fill/FillResponseBuilder.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/fill/FillResponseBuilder.kt new file mode 100644 index 0000000000..28d28011eb --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/fill/FillResponseBuilder.kt @@ -0,0 +1,18 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.response.fill + +import android.content.Context +import android.service.autofill.FillResponse +import android.widget.inline.InlinePresentationSpec +import mozilla.components.feature.autofill.AutofillConfiguration + +internal interface FillResponseBuilder { + fun build( + context: Context, + configuration: AutofillConfiguration, + imeSpec: InlinePresentationSpec? = null, + ): FillResponse +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/fill/LoginFillResponseBuilder.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/fill/LoginFillResponseBuilder.kt new file mode 100644 index 0000000000..27730c9622 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/response/fill/LoginFillResponseBuilder.kt @@ -0,0 +1,60 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.response.fill + +import android.content.Context +import android.os.Build +import android.service.autofill.FillResponse +import android.widget.inline.InlinePresentationSpec +import androidx.annotation.RequiresApi +import mozilla.components.concept.storage.Login +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.response.dataset.LoginDatasetBuilder +import mozilla.components.feature.autofill.response.dataset.SearchDatasetBuilder +import mozilla.components.feature.autofill.structure.ParsedStructure + +/** + * [FillResponseBuilder] implementation that creates a [FillResponse] containing logins for + * autofilling. + */ +@RequiresApi(Build.VERSION_CODES.O) +internal data class LoginFillResponseBuilder( + val parsedStructure: ParsedStructure, + val logins: List<Login>, + val needsConfirmation: Boolean, +) : FillResponseBuilder { + private val searchDatasetBuilder = SearchDatasetBuilder(parsedStructure) + + override fun build( + context: Context, + configuration: AutofillConfiguration, + imeSpec: InlinePresentationSpec?, + ): FillResponse { + val builder = FillResponse.Builder() + + logins.forEachIndexed { index, login -> + val datasetBuilder = LoginDatasetBuilder( + parsedStructure, + login, + needsConfirmation, + requestOffset = index, + ) + + val dataset = datasetBuilder.build( + context, + configuration, + imeSpec, + ) + + builder.addDataset(dataset) + } + + builder.addDataset( + searchDatasetBuilder.build(context, configuration, imeSpec), + ) + + return builder.build() + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/ParsedStructure.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/ParsedStructure.kt new file mode 100644 index 0000000000..ebf30869c8 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/ParsedStructure.kt @@ -0,0 +1,110 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.structure + +import android.content.Context +import android.os.Build +import android.os.Parcel +import android.os.Parcelable +import android.os.Parcelable.Creator +import android.view.autofill.AutofillId +import androidx.annotation.RequiresApi +import mozilla.components.lib.publicsuffixlist.PublicSuffixList +import mozilla.components.support.utils.Browsers + +/** + * Parsed structure from an autofill request. + * + * Originally implemented in Lockwise: + * https://github.com/mozilla-lockwise/lockwise-android/blob/d3c0511f73c34e8759e1bb597f2d3dc9bcc146f0/app/src/main/java/mozilla/lockbox/autofill/ParsedStructure.kt#L52 + */ +@RequiresApi(Build.VERSION_CODES.O) +data class ParsedStructure( + val usernameId: AutofillId? = null, + val passwordId: AutofillId? = null, + val webDomain: String? = null, + val packageName: String, +) : Parcelable { + constructor(parcel: Parcel) : this( + parcel.readParcelableCompat(AutofillId::class.java), + parcel.readParcelableCompat(AutofillId::class.java), + parcel.readString(), + parcel.readString() ?: "", + ) + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeParcelable(usernameId, flags) + parcel.writeParcelable(passwordId, flags) + parcel.writeString(webDomain) + parcel.writeString(packageName) + } + + override fun describeContents(): Int { + return 0 + } + + /** + * Create instances of [ParsedStructure] from a [Parcel]. + */ + companion object CREATOR : Creator<ParsedStructure> { + override fun createFromParcel(parcel: Parcel): ParsedStructure { + return ParsedStructure(parcel) + } + + override fun newArray(size: Int): Array<ParsedStructure?> { + return arrayOfNulls(size) + } + } +} + +/** + * Try to find a domain in the [ParsedStructure] for looking up logins. This is either a "web domain" + * for web content the third-party app is displaying (e.g. in a WebView) or the package name of the + * application transformed into a domain. In any case the [publicSuffixList] will be used to turn + * the domain into a "base" domain (public suffix + 1) before returning. + */ +internal suspend fun ParsedStructure.getLookupDomain(publicSuffixList: PublicSuffixList): String { + println("Lookup: webDomain=$webDomain, packageName=$packageName") + val domain = if (webDomain != null && Browsers.isBrowser(packageName)) { + // If the application we are auto-filling is a known browser and it provided a webDomain + // for the content it is displaying then we try to autofill for that. + webDomain + } else { + // We reverse the package name in the hope that this will resemble a domain name. This is + // of course fragile. So we want to find better mechanisms in the future (e.g. looking up + // what URLs the application registers intent handlers for). + packageName.split('.').asReversed().joinToString(".") + } + + return publicSuffixList.getPublicSuffixPlusOne(domain).await() ?: domain +} + +@RequiresApi(Build.VERSION_CODES.O) +internal fun parseStructure(context: Context, structure: RawStructure): ParsedStructure? { + val activityPackageName = structure.activityPackageName + if (context.packageName == activityPackageName) { + // We do not autofill our own activities. Browser content will be auto-filled by Gecko. + return null + } + + val nodeNavigator = structure.createNavigator() + val parsedStructure = ParsedStructureBuilder(nodeNavigator).build() + + if (parsedStructure.passwordId == null && parsedStructure.usernameId == null) { + // If we didn't find any password or username fields then there's nothing to autofill for us. + return null + } + + return parsedStructure +} + +internal fun <T> Parcel.readParcelableCompat(clazz: Class<T>): T? { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + readParcelable(clazz.classLoader, clazz) + } else { + @Suppress("DEPRECATION") + readParcelable(clazz.classLoader) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/ParsedStructureBuilder.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/ParsedStructureBuilder.kt new file mode 100644 index 0000000000..d6e90f3d05 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/ParsedStructureBuilder.kt @@ -0,0 +1,229 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.structure + +import android.os.Build +import android.view.View +import androidx.annotation.RequiresApi + +@RequiresApi(Build.VERSION_CODES.O) +internal class ParsedStructureBuilder<ViewNode, AutofillId>( + private val navigator: AutofillNodeNavigator<ViewNode, AutofillId>, +) { + fun build(): ParsedStructure { + val formNode = findFocusedForm() + val (usernameId, passwordId) = findAutofillIds(formNode) + val hostnameClue = usernameId ?: passwordId + + return navigator.build( + usernameId, + passwordId, + getWebDomain(hostnameClue), + getPackageName(hostnameClue) ?: navigator.activityPackageName, + ) + } + + private fun findFocusedForm(): ViewNode? { + val focusPath = findMatchedNodeAncestors { + navigator.isFocused(it) + } + + return focusPath?.lastOrNull { + navigator.isHtmlForm(it) + } + } + + private fun findAutofillIds(rootNode: ViewNode?): Pair<AutofillId?, AutofillId?> = + checkForAdjacentFields(rootNode) ?: getUsernameId(rootNode) to getPasswordId(rootNode) + + private fun getUsernameId(rootNode: ViewNode?): AutofillId? { + // how do we localize the "email" and "username"? + return getAutofillIdForKeywords( + rootNode, + listOf( + View.AUTOFILL_HINT_USERNAME, + View.AUTOFILL_HINT_EMAIL_ADDRESS, + "email", + "username", + "user name", + "identifier", + "account_name", + ), + ) + } + + private fun getPasswordId(rootNode: ViewNode?): AutofillId? { + // similar l10n question for password + return getAutofillIdForKeywords(rootNode, listOf(View.AUTOFILL_HINT_PASSWORD, "password")) + } + + private fun getAutofillIdForKeywords(rootNode: ViewNode?, keywords: Collection<String>): AutofillId? { + return checkForNamedTextField(rootNode, keywords) + ?: checkForConsecutiveLabelAndField(rootNode, keywords) + ?: checkForNestedLayoutAndField(rootNode, keywords) + } + + private fun checkForNamedTextField(rootNode: ViewNode?, keywords: Collection<String>): AutofillId? { + return navigator.findFirst(rootNode) { node: ViewNode -> + if (isAutoFillableEditText(node, keywords) || isAutoFillableInputField(node, keywords)) { + navigator.autofillId(node) + } else { + null + } + } + } + + private fun checkForConsecutiveLabelAndField(rootNode: ViewNode?, keywords: Collection<String>): AutofillId? { + return navigator.findFirst(rootNode) { node: ViewNode -> + val childNodes = navigator.childNodes(node) + // check for consecutive views with keywords followed by possible fill locations + for (i in 1.until(childNodes.size)) { + val prevNode = childNodes[i - 1] + val currentNode = childNodes[i] + val id = navigator.autofillId(currentNode) ?: continue + if ( + (navigator.isEditText(currentNode) || navigator.isHtmlInputField(currentNode)) && + containsKeywords(prevNode, keywords) + ) { + return@findFirst id + } + } + null + } + } + + private fun checkForNestedLayoutAndField(rootNode: ViewNode?, keywords: Collection<String>): AutofillId? { + return navigator.findFirst(rootNode) { node: ViewNode -> + val childNodes = navigator.childNodes(node) + + if (childNodes.size != 1) { + return@findFirst null + } + + val child = childNodes[0] + val id = navigator.autofillId(child) ?: return@findFirst null + if ( + (navigator.isEditText(child) || navigator.isHtmlInputField(child)) && + containsKeywords(node, keywords) + ) { + return@findFirst id + } + null + } + } + + private fun checkForAdjacentFields(rootNode: ViewNode?): Pair<AutofillId?, AutofillId?>? { + return navigator.findFirst(rootNode) { node: ViewNode -> + + val childNodes = navigator.childNodes(node) + // XXX we only look at the list of edit texts before the first button. + // This is because we can see the invisible fields, but not that they are + // invisible. https://bugzilla.mozilla.org/show_bug.cgi?id=1592047 + val firstButtonIndex = childNodes.indexOfFirst { navigator.isButton(it) } + + val firstFewNodes = if (firstButtonIndex >= 0) { + childNodes.subList(0, firstButtonIndex) + } else { + childNodes + } + + val inputFields = firstFewNodes.filter { + navigator.isEditText(it) && navigator.autofillId(it) != null && navigator.isVisible(it) + } + + // we must have a minimum of two EditText boxes in order to have a pair. + if (inputFields.size < 2) { + return@findFirst null + } + + for (i in 1.until(inputFields.size)) { + val prevNode = inputFields[i - 1] + val currentNode = inputFields[i] + if (navigator.isPasswordField(currentNode) && navigator.isPasswordField(prevNode).not()) { + return@findFirst navigator.autofillId(prevNode) to navigator.autofillId(currentNode) + } + } + + null + } + } + + private fun getWebDomain(nearby: AutofillId?): String? { + return nearestFocusedNode(nearby) { + navigator.webDomain(it) + } + } + + private fun getPackageName(nearby: AutofillId?): String? { + return nearestFocusedNode(nearby) { + navigator.packageName(it) + } + } + + private fun <T> nearestFocusedNode(nearby: AutofillId?, transform: (ViewNode) -> T?): T? { + val id = nearby ?: return null + val ancestors = findMatchedNodeAncestors { + navigator.autofillId(it) == id + } + return ancestors?.map(transform)?.firstOrNull { it != null } + } + + private fun isAutoFillableEditText(node: ViewNode, keywords: Collection<String>): Boolean { + return navigator.isEditText(node) && + containsKeywords(node, keywords) && + navigator.autofillId(node) != null + } + + private fun isAutoFillableInputField(node: ViewNode, keywords: Collection<String>): Boolean { + return navigator.isHtmlInputField(node) && + containsKeywords(node, keywords) && + navigator.autofillId(node) != null + } + + private fun containsKeywords(node: ViewNode, keywords: Collection<String>): Boolean { + val hints = navigator.clues(node) + keywords.forEach { keyword -> + hints.forEach { hint -> + if (hint.contains(keyword, true)) { + return true + } + } + } + return false + } + + private fun findMatchedNodeAncestors(matcher: (ViewNode) -> Boolean): Iterable<ViewNode>? { + navigator.rootNodes + .forEach { node -> + findMatchedNodeAncestors(node, matcher)?.let { result -> + return result + } + } + return null + } + + /** + * Depth first search a ViewNode tree. Once a match is found, a list of ancestors all the way to + * the top is returned. The first node in the list is the matching node, the last is the root node. + * If no match is found, then <code>null</code> is returned. + * + * @param node the parent node. + * @param matcher a closure which returns <code>true</code> if and only if the node is matched. + * @return an ordered list of the matched node and all its ancestors starting at the matched node. + */ + private fun findMatchedNodeAncestors(node: ViewNode, matcher: (ViewNode) -> Boolean): Iterable<ViewNode>? { + if (matcher(node)) { + return listOf(node) + } + + navigator.childNodes(node) + .forEach { child -> + findMatchedNodeAncestors(child, matcher)?.let { list -> + return list + node + } + } + return null + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/RawStructure.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/RawStructure.kt new file mode 100644 index 0000000000..1ac3fdfc21 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/RawStructure.kt @@ -0,0 +1,36 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.structure + +import android.app.assist.AssistStructure +import android.os.Build +import android.view.autofill.AutofillId +import androidx.annotation.RequiresApi + +/** + * A raw view structure provided by an application - to be parsed into a [ParsedStructure]. + */ +internal interface RawStructure { + val activityPackageName: String + + fun createNavigator(): AutofillNodeNavigator<*, AutofillId> +} + +@RequiresApi(Build.VERSION_CODES.O) +internal fun AssistStructure.toRawStructure(): RawStructure { + return AssistStructureWrapper(this) +} + +@RequiresApi(Build.VERSION_CODES.O) +private class AssistStructureWrapper( + private val actual: AssistStructure, +) : RawStructure { + override val activityPackageName: String + get() = actual.activityComponent.packageName + + override fun createNavigator(): AutofillNodeNavigator<*, AutofillId> { + return ViewNodeNavigator(actual, activityPackageName) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/ViewNodeNavigator.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/ViewNodeNavigator.kt new file mode 100644 index 0000000000..5ed794e298 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/structure/ViewNodeNavigator.kt @@ -0,0 +1,186 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.structure + +import android.app.assist.AssistStructure +import android.app.assist.AssistStructure.ViewNode +import android.os.Build +import android.text.InputType +import android.view.View +import android.view.autofill.AutofillId +import androidx.annotation.RequiresApi +import mozilla.components.feature.autofill.structure.AutofillNodeNavigator.Companion.editTextMask +import java.util.Locale + +/** + * Helper for navigating autofill nodes. + * + * Original implementation imported from Lockwise: + * https://github.com/mozilla-lockwise/lockwise-android/blob/f303f8aee7cc96dcdf4e7863fef6c19ae874032e/app/src/main/java/mozilla/lockbox/autofill/ViewNodeNavigator.kt#L13 + */ +internal interface AutofillNodeNavigator<Node, Id> { + companion object { + val editTextMask = InputType.TYPE_CLASS_TEXT + val passwordMask = + InputType.TYPE_TEXT_VARIATION_PASSWORD or + InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD + } + + val rootNodes: List<Node> + val activityPackageName: String + fun childNodes(node: Node): List<Node> + fun clues(node: Node): Iterable<CharSequence> + fun autofillId(node: Node): Id? + fun isEditText(node: Node): Boolean + fun isHtmlInputField(node: Node): Boolean + fun isHtmlForm(node: Node): Boolean + fun packageName(node: Node): String? + fun webDomain(node: Node): String? + fun currentText(node: Node): String? + fun inputType(node: Node): Int + fun isPasswordField(node: Node): Boolean = (inputType(node) and passwordMask) > 0 + fun isButton(node: Node): Boolean + fun isFocused(node: Node): Boolean + fun isVisible(node: Node): Boolean + fun build( + usernameId: Id?, + passwordId: Id?, + webDomain: String?, + packageName: String, + ): ParsedStructure + + private fun <T> findFirstRoots(transform: (Node) -> T?): T? { + rootNodes + .forEach { node -> + findFirst(node, transform)?.let { result -> + return result + } + } + return null + } + + @Suppress("ReturnCount") + fun <T> findFirst(rootNode: Node? = null, transform: (Node) -> T?): T? { + val node = rootNode ?: return findFirstRoots(transform) + + transform(node)?.let { + return it + } + + childNodes(node) + .forEach { child -> + findFirst(child, transform)?.let { result -> + return result + } + } + return null + } +} + +/** + * Helper for navigating autofill nodes. + * + * Original implementation imported from Lockwise: + * https://github.com/mozilla-lockwise/lockwise-android/blob/f303f8aee7cc96dcdf4e7863fef6c19ae874032e/app/src/main/java/mozilla/lockbox/autofill/ViewNodeNavigator.kt#L72 + */ +@RequiresApi(Build.VERSION_CODES.O) +internal class ViewNodeNavigator( + private val structure: AssistStructure, + override val activityPackageName: String, +) : AutofillNodeNavigator<ViewNode, AutofillId> { + override val rootNodes: List<ViewNode> + get() = structure.run { (0 until windowNodeCount).map { getWindowNodeAt(it).rootViewNode } } + + override fun childNodes(node: ViewNode): List<ViewNode> = + node.run { (0 until childCount) }.map { node.getChildAt(it) } + + override fun clues(node: ViewNode): Iterable<CharSequence> { + val hints = mutableListOf<CharSequence?>( + node.text, + node.idEntry, + node.hint, // This is localized. + ) + + node.autofillOptions?.let { + hints.addAll(it) + } + + node.autofillHints?.let { + hints.addAll(it) + } + + node.htmlInfo?.attributes?.let { attrs -> + hints.addAll(attrs.map { it.second }) + } + + return hints.filterNotNull() + } + + override fun autofillId(node: ViewNode): AutofillId? = node.autofillId + + override fun isEditText(node: ViewNode) = + inputType(node) and editTextMask > 0 + + override fun inputType(node: ViewNode) = node.inputType + + override fun isHtmlInputField(node: ViewNode) = + htmlTagName(node) == "input" + + private fun htmlAttr(node: ViewNode, name: String) = + node.htmlInfo?.attributes?.find { name == it.first }?.second + + @Suppress("ReturnCount") + override fun isButton(node: ViewNode): Boolean { + val className = node.className ?: "" + when { + className.contains("Button") -> return true + htmlTagName(node) == "button" -> return true + htmlTagName(node) != "input" -> return false + } + + return when (htmlAttr(node, "type")) { + "submit" -> true + "button" -> true + else -> false + } + } + + private fun htmlTagName(node: ViewNode) = + // Use English locale, as the HTML tags are all in English. + node.htmlInfo?.tag?.lowercase(Locale.ENGLISH) + + override fun isHtmlForm(node: ViewNode) = + htmlTagName(node) == "form" + + override fun isVisible(node: ViewNode) = node.visibility == View.VISIBLE + + override fun packageName(node: ViewNode): String? = node.idPackage + + override fun webDomain(node: ViewNode): String? = node.webDomain + + override fun currentText(node: ViewNode): String? { + return if (node.autofillValue?.isText == true) { + node.autofillValue?.textValue.toString() + } else { + null + } + } + + override fun isFocused(node: ViewNode) = node.isFocused + + override fun build( + usernameId: AutofillId?, + passwordId: AutofillId?, + webDomain: String?, + packageName: String, + ): ParsedStructure { + return ParsedStructure( + usernameId, + passwordId, + webDomain, + packageName, + ) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/AbstractAutofillConfirmActivity.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/AbstractAutofillConfirmActivity.kt new file mode 100644 index 0000000000..d32e1a8e4e --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/AbstractAutofillConfirmActivity.kt @@ -0,0 +1,139 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.ui + +import android.app.Dialog +import android.app.assist.AssistStructure +import android.content.DialogInterface +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.service.autofill.Dataset +import android.view.autofill.AutofillManager +import androidx.annotation.RequiresApi +import androidx.appcompat.app.AlertDialog +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.lifecycleScope +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.runBlocking +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.R +import mozilla.components.feature.autofill.facts.emitAutofillConfirmationFact +import mozilla.components.feature.autofill.handler.EXTRA_LOGIN_ID +import mozilla.components.feature.autofill.handler.FillRequestHandler +import mozilla.components.feature.autofill.structure.toRawStructure +import mozilla.components.support.utils.ext.getParcelableExtraCompat +import mozilla.components.ui.widgets.withCenterAlignedButtons + +/** + * Activity responsible for asking the user to confirm before autofilling a third-party app. It is + * shown in situations where the authenticity of an application could not be confirmed automatically + * with "Digital Asset Links". + */ +@RequiresApi(Build.VERSION_CODES.O) +abstract class AbstractAutofillConfirmActivity : FragmentActivity() { + abstract val configuration: AutofillConfiguration + + private var dataset: Deferred<Dataset?>? = null + private val fillHandler by lazy { FillRequestHandler(context = this, configuration) } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val structure: AssistStructure? = intent.getParcelableExtraCompat( + AutofillManager.EXTRA_ASSIST_STRUCTURE, + AssistStructure::class.java, + ) + val loginId = intent.getStringExtra(EXTRA_LOGIN_ID) + if (loginId == null) { + cancel() + return + } + val imeSpec = intent.getImeSpec() + // While the user is asked to confirm, we already try to build the fill response asynchronously. + val rawStructure = structure?.toRawStructure() + if (rawStructure != null) { + dataset = lifecycleScope.async(Dispatchers.IO) { + val builder = fillHandler.handleConfirmation(rawStructure, loginId) + builder?.build(this@AbstractAutofillConfirmActivity, configuration, imeSpec) + } + } + + if (savedInstanceState == null) { + val fragment = AutofillConfirmFragment() + fragment.show(supportFragmentManager, "confirm_fragment") + } + } + + /** + * Confirms the autofill request and returns the credentials to the autofill framework. + */ + internal fun confirm() { + val replyIntent = Intent().apply { + // At this point it should be safe to block since the fill response should be ready once + // the user has authenticated. + runBlocking { putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, dataset?.await()) } + } + + emitAutofillConfirmationFact(confirmed = true) + + setResult(RESULT_OK, replyIntent) + finish() + } + + /** + * Cancels the autofill request. + */ + internal fun cancel() { + dataset?.cancel() + + emitAutofillConfirmationFact(confirmed = false) + + setResult(RESULT_CANCELED) + finish() + } +} + +@RequiresApi(Build.VERSION_CODES.O) +internal class AutofillConfirmFragment : DialogFragment() { + private val configuration: AutofillConfiguration + get() = getConfirmActivity().configuration + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + return AlertDialog.Builder(requireContext()) + .setTitle( + getString(R.string.mozac_feature_autofill_confirmation_title), + ) + .setMessage( + getString(R.string.mozac_feature_autofill_confirmation_authenticity, configuration.applicationName), + ) + .setPositiveButton(R.string.mozac_feature_autofill_confirmation_yes) { _, _ -> confirmRequest() } + .setNegativeButton(R.string.mozac_feature_autofill_confirmation_no) { _, _ -> cancelRequest() } + .create() + .withCenterAlignedButtons() + } + + override fun onDismiss(dialog: DialogInterface) { + super.onDismiss(dialog) + cancelRequest() + } + + private fun confirmRequest() { + getConfirmActivity() + .confirm() + } + + private fun cancelRequest() { + getConfirmActivity() + .cancel() + } + + private fun getConfirmActivity(): AbstractAutofillConfirmActivity { + return requireActivity() as AbstractAutofillConfirmActivity + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/AbstractAutofillSearchActivity.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/AbstractAutofillSearchActivity.kt new file mode 100644 index 0000000000..88f5c461a8 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/AbstractAutofillSearchActivity.kt @@ -0,0 +1,144 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.ui + +import android.app.assist.AssistStructure +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.view.autofill.AutofillManager +import android.widget.EditText +import android.widget.inline.InlinePresentationSpec +import androidx.annotation.RequiresApi +import androidx.core.widget.doOnTextChanged +import androidx.fragment.app.FragmentActivity +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.cancel +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import mozilla.components.concept.storage.Login +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.R +import mozilla.components.feature.autofill.facts.emitAutofillSearchDisplayedFact +import mozilla.components.feature.autofill.facts.emitAutofillSearchSelectedFact +import mozilla.components.feature.autofill.facts.emitLoginPasswordDetectedFact +import mozilla.components.feature.autofill.response.dataset.LoginDatasetBuilder +import mozilla.components.feature.autofill.structure.ParsedStructure +import mozilla.components.feature.autofill.structure.parseStructure +import mozilla.components.feature.autofill.structure.toRawStructure +import mozilla.components.feature.autofill.ui.search.LoginsAdapter +import mozilla.components.support.ktx.android.view.showKeyboard +import mozilla.components.support.utils.ext.getParcelableExtraCompat + +/** + * Activity responsible for letting the user manually search and pick credentials for auto-filling a + * third-party app. + */ +@RequiresApi(Build.VERSION_CODES.O) +abstract class AbstractAutofillSearchActivity : FragmentActivity() { + abstract val configuration: AutofillConfiguration + + private lateinit var parsedStructure: ParsedStructure + private lateinit var loginsDeferred: Deferred<List<Login>> + private val scope = CoroutineScope(Dispatchers.IO) + private val adapter = LoginsAdapter(::onLoginSelected) + private var imeSpec: InlinePresentationSpec? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + if (savedInstanceState == null) { + emitAutofillSearchDisplayedFact() + } + + val structure: AssistStructure? = + intent.getParcelableExtraCompat(AutofillManager.EXTRA_ASSIST_STRUCTURE, AssistStructure::class.java) + if (structure == null) { + finish() + return + } + imeSpec = intent.getImeSpec() + + val parsedStructure = parseStructure(this, structure.toRawStructure()) + if (parsedStructure == null) { + finish() + return + } + + this.parsedStructure = parsedStructure + this.loginsDeferred = loadAsync() + + setContentView(R.layout.mozac_feature_autofill_search) + + val recyclerView = findViewById<RecyclerView>(R.id.mozac_feature_autofill_list) + recyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) + recyclerView.adapter = adapter + recyclerView.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.HORIZONTAL)) + + val searchView = findViewById<EditText>(R.id.mozac_feature_autofill_search) + searchView.doOnTextChanged { text, _, _, _ -> + if (text != null && text.isNotEmpty()) { + performSearch(text) + } else { + clearResults() + } + } + + searchView.showKeyboard() + } + + private fun onLoginSelected(login: Login) { + val builder = LoginDatasetBuilder(parsedStructure, login, needsConfirmation = false) + val dataset = builder.build(this, configuration, imeSpec) + + val replyIntent = Intent() + replyIntent.putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, dataset) + + emitAutofillSearchSelectedFact() + + setResult(RESULT_OK, replyIntent) + finish() + } + + override fun onDestroy() { + super.onDestroy() + scope.cancel() + } + + private fun performSearch(text: CharSequence) = scope.launch { + val logins = loginsDeferred.await() + + val filteredLogins = logins.filter { login -> + login.username.contains(text) || + login.origin.contains(text) + } + + if (filteredLogins.isNotEmpty() && + filteredLogins[0].password.isNotEmpty() + ) { + emitLoginPasswordDetectedFact() + } + + withContext(Dispatchers.Main) { + adapter.update(filteredLogins) + } + } + + private fun clearResults() { + adapter.clear() + } + + private fun loadAsync(): Deferred<List<Login>> { + return scope.async { + configuration.storage.list() + } + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/AbstractAutofillUnlockActivity.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/AbstractAutofillUnlockActivity.kt new file mode 100644 index 0000000000..33586aac72 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/AbstractAutofillUnlockActivity.kt @@ -0,0 +1,125 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.os.Parcel +import android.service.autofill.FillResponse +import android.view.autofill.AutofillManager +import android.widget.inline.InlinePresentationSpec +import androidx.annotation.RequiresApi +import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.lifecycleScope +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.runBlocking +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.authenticator.Authenticator +import mozilla.components.feature.autofill.authenticator.createAuthenticator +import mozilla.components.feature.autofill.facts.emitAutofillLock +import mozilla.components.feature.autofill.handler.FillRequestHandler +import mozilla.components.feature.autofill.handler.MAX_LOGINS +import mozilla.components.feature.autofill.structure.ParsedStructure +import mozilla.components.support.utils.ext.getParcelableExtraCompat + +/** + * Activity responsible for unlocking the autofill service by asking the user to verify with a + * fingerprint or alternative device unlocking mechanism. + */ +@RequiresApi(Build.VERSION_CODES.O) +abstract class AbstractAutofillUnlockActivity : FragmentActivity() { + abstract val configuration: AutofillConfiguration + + private var fillResponse: Deferred<FillResponse?>? = null + private val fillHandler by lazy { FillRequestHandler(context = this, configuration) } + private val authenticator: Authenticator? by lazy { createAuthenticator(this, configuration) } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val parsedStructure = with(Parcel.obtain()) { + val rawBytes = intent.getByteArrayExtra(EXTRA_PARSED_STRUCTURE) + unmarshall(rawBytes!!, 0, rawBytes.size) + setDataPosition(0) + ParsedStructure(this).also { + recycle() + } + } + val imeSpec = intent.getImeSpec() + val maxSuggestionCount = intent.getIntExtra(EXTRA_MAX_SUGGESTION_COUNT, MAX_LOGINS) + // While the user is asked to authenticate, we already try to build the fill response asynchronously. + fillResponse = lifecycleScope.async(Dispatchers.IO) { + val builder = fillHandler.handle(parsedStructure, forceUnlock = true, maxSuggestionCount) + val result = builder.build(this@AbstractAutofillUnlockActivity, configuration, imeSpec) + result + } + + if (authenticator == null) { + // If no authenticator is available then we just bail here. Instead we should ask the user to + // enroll, or show an error message instead. + // https://github.com/mozilla-mobile/android-components/issues/9756 + setResult(RESULT_CANCELED) + finish() + } else { + authenticator!!.prompt(this, PromptCallback()) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + authenticator?.onActivityResult(requestCode, resultCode) + } + + internal inner class PromptCallback : Authenticator.Callback { + override fun onAuthenticationError() { + fillResponse?.cancel() + + emitAutofillLock(unlocked = false) + + setResult(RESULT_CANCELED) + finish() + } + + override fun onAuthenticationSucceeded() { + configuration.lock.unlock() + + val replyIntent = Intent().apply { + // At this point it should be safe to block since the fill response should be ready once + // the user has authenticated. + runBlocking { putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, fillResponse?.await()) } + } + + emitAutofillLock(unlocked = true) + + setResult(RESULT_OK, replyIntent) + finish() + } + + override fun onAuthenticationFailed() { + setResult(RESULT_CANCELED) + finish() + } + } + + companion object { + const val EXTRA_PARSED_STRUCTURE = "parsed_structure" + const val EXTRA_IME_SPEC = "ime_spec" + const val EXTRA_MAX_SUGGESTION_COUNT = "max_suggestion_count" + } +} + +internal fun Intent.getImeSpec(): InlinePresentationSpec? { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + getParcelableExtraCompat( + AbstractAutofillUnlockActivity.EXTRA_IME_SPEC, + InlinePresentationSpec::class.java, + ) + } else { + null + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/search/LoginViewHolder.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/search/LoginViewHolder.kt new file mode 100644 index 0000000000..5d9ecbf771 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/search/LoginViewHolder.kt @@ -0,0 +1,30 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.ui.search + +import android.view.View +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import mozilla.components.concept.storage.Login +import mozilla.components.feature.autofill.R +import mozilla.components.feature.autofill.response.dataset.usernamePresentationOrFallback + +/** + * ViewHolder for a login item in the autofill search view. + */ +internal class LoginViewHolder( + itemView: View, + private val onLoginSelected: (Login) -> Unit, +) : RecyclerView.ViewHolder(itemView) { + private val usernameView = itemView.findViewById<TextView>(R.id.mozac_feature_autofill_username) + private val originView = itemView.findViewById<TextView>(R.id.mozac_feature_autofill_origin) + + fun bind(login: Login) { + usernameView.text = login.usernamePresentationOrFallback(itemView.context) + originView.text = login.origin + + itemView.setOnClickListener { onLoginSelected(login) } + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/search/LoginsAdapter.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/search/LoginsAdapter.kt new file mode 100644 index 0000000000..54d65b0e88 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/ui/search/LoginsAdapter.kt @@ -0,0 +1,47 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.ui.search + +import android.annotation.SuppressLint +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import mozilla.components.concept.storage.Login +import mozilla.components.feature.autofill.R + +/** + * Adapter for showing a list of logins. + */ +@SuppressLint("NotifyDataSetChanged") +internal class LoginsAdapter( + private val onLoginSelected: (Login) -> Unit, +) : RecyclerView.Adapter<LoginViewHolder>() { + private var logins: List<Login> = emptyList() + + fun update(logins: List<Login>) { + this.logins = logins + notifyDataSetChanged() + } + + fun clear() { + this.logins = emptyList() + notifyDataSetChanged() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LoginViewHolder { + val inflater = LayoutInflater.from(parent.context) + val view = inflater.inflate(R.layout.mozac_feature_autofill_login, parent, false) + return LoginViewHolder(view, onLoginSelected) + } + + override fun onBindViewHolder(holder: LoginViewHolder, position: Int) { + val login = logins[position] + holder.bind(login) + } + + override fun getItemCount(): Int { + return logins.count() + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/verify/CredentialAccessVerifier.kt b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/verify/CredentialAccessVerifier.kt new file mode 100644 index 0000000000..627f0ca72b --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/java/mozilla/components/feature/autofill/verify/CredentialAccessVerifier.kt @@ -0,0 +1,50 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.verify + +import android.content.Context +import mozilla.components.service.digitalassetlinks.AndroidAssetFinder +import mozilla.components.service.digitalassetlinks.AssetDescriptor +import mozilla.components.service.digitalassetlinks.Relation +import mozilla.components.service.digitalassetlinks.local.StatementRelationChecker + +/** + * Helper to verify that a specific application is allowed to receive get the login credentials for + * a specific domain. + * + * The verification is done through Digital Asset Links, which allow a domain to specify associated + * apps and their signatures. + * - https://developers.google.com/digital-asset-links/v1/getting-started + * - https://github.com/google/digitalassetlinks/blob/master/well-known/details.md + */ +class CredentialAccessVerifier( + private val checker: StatementRelationChecker, + private val assetsFinder: AndroidAssetFinder = AndroidAssetFinder(), +) { + /** + * Verifies and returns `true` if the application with [packageName] is allowed to receive + * credentials for [domain] according to the hosted Digital Assets Links file. Returns `false` + * otherwise. This method may also return `false` if a verification could not be performed, + * e.g. the device is offline. + */ + fun hasCredentialRelationship( + context: Context, + domain: String, + packageName: String, + ): Boolean { + val assets = assetsFinder.getAndroidAppAsset(packageName, context.packageManager).toList() + + // I was expecting us to need to verify all signatures here. But If I understand the usage + // in `OriginVerifier` and the spec (see link in class comment) correctly then verifying one + // certificate is enough to identify an app. + val asset = assets.firstOrNull() ?: return false + + return checker.checkRelationship( + AssetDescriptor.Web("https://$domain"), + Relation.GET_LOGIN_CREDS, + asset, + ) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/layout/mozac_feature_autofill_login.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/layout/mozac_feature_autofill_login.xml new file mode 100644 index 0000000000..c20c994cd8 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/layout/mozac_feature_autofill_login.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="4dp" + tools:ignore="Overdraw" + android:background="?android:attr/selectableItemBackground"> + <TextView + android:id="@+id/mozac_feature_autofill_username" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="4dp"/> + <TextView + android:id="@+id/mozac_feature_autofill_origin" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="4dp"/> +</LinearLayout> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/layout/mozac_feature_autofill_preference.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/layout/mozac_feature_autofill_preference.xml new file mode 100644 index 0000000000..a5ef02eae2 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/layout/mozac_feature_autofill_preference.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<androidx.appcompat.widget.SwitchCompat xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/switch_widget" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:clickable="false" + android:focusable="false" + android:gravity="center_vertical" /> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/layout/mozac_feature_autofill_search.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/layout/mozac_feature_autofill_search.xml new file mode 100644 index 0000000000..cdefaa8152 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/layout/mozac_feature_autofill_search.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="16dp"> + <EditText + android:id="@+id/mozac_feature_autofill_search" + android:background="@android:color/transparent" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="textUri" + android:singleLine="true" + android:hint="@string/mozac_feature_autofill_search_hint" + android:importantForAutofill="no" /> + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/mozac_feature_autofill_list" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> +</LinearLayout>
\ No newline at end of file diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-am/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-am/strings.xml new file mode 100644 index 0000000000..3f9ad47753 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-am/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$sን ይክፈቱ</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(የተጠቃሚ ስም የለም)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">የይለፍ ቃል ለ%1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">ማረጋገጥ አልተሳካም</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s የመተግበሪያውን ትክክለኛነት ማረጋገጥ አልቻለም። የተመረጡትን ምስክርነቶች በራስ-ሙላ መቀጠል ይፈልጋሉ?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">አዎ</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">ይቅር</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s ፈልግ</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">መግቢያዎችን ፈልግ</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ar/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ar/strings.xml new file mode 100644 index 0000000000..2826ba8e9d --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ar/strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">ألغِ قفل %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(لا اسم مستخدم)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">كلمة سر %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">فشل التحقق</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">لم يتمكّن %1$s من التحقّق من صحّة التطبيق. أتريد مواصلة ملء بيانات الولوج المحدّدة؟</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">نعم</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">لا</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">ابحث عن %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">ابحث في جلسات الولوج</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ast/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ast/strings.xml new file mode 100644 index 0000000000..07637c3330 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ast/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desbloquiar «%1$s»</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Ensin nome d\'usuariu)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Contraseña de: %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">La verificación falló</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">«%1$s» nun pudo verificar l\'autenticidá de l\'aplicación. ¿Quies siguir col rellenu automáticu de los datos seleicionaos?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sí</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Non</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Buscar «%1$s»</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Buscar nes cuentes</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-azb/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-azb/strings.xml new file mode 100644 index 0000000000..e231f52438 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-azb/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s کیلیدینی آچ</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">( هئچ قوللانیجی آدی یوخ)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s اوچون رمز</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">دوغرولاما قیریلدی</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s اپلیکیشنین صحتینی تایید ائلینمهدی. سئچیلن کیملیک بیلگیلرینی اوتوماتیک دولدورماغا دوام ائتمک ایستییرسیز؟</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">هن</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">یوخ</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s -دا آختار</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">گیریشلرده آختار</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-be/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-be/strings.xml new file mode 100644 index 0000000000..7ba8d819bb --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-be/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Разблакаваць %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Без імя карыстальніка)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Пароль для %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Памылка праверкі</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s не ўдалося пацвердзіць сапраўднасць праграмы. Вы хочаце працягнуць аўтазапаўненне выбраных уліковых дадзеных?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Так</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Не</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Шукаць у %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Шукаць лагіны</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-bg/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-bg/strings.xml new file mode 100644 index 0000000000..f80a6023d4 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-bg/strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Отключете %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(без потребителско име)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Парола за %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Удостоверяването е неуспешно</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s не успя да потвърди автентичността на приложението. Желаете ли потребителските данни да бъдат попълнени автоматично въпреки това?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Да</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Не</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Търсене с %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Търсене на регистрация</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-br/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-br/strings.xml new file mode 100644 index 0000000000..45f6647fde --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-br/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Dibrennañ %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(anv arveriad ebet)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Ger-tremen evit %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Gwiriadur cʼhwitet</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s nʼen deus ket gellet gwiriañ dilested an arloadoù. Hag e fell deocʼh leuniañ an titouroù kennaskañ diuzet en un doare emgefreek?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ya</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ket</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Klask %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Klask titouroù kennaskañ</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-bs/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-bs/strings.xml new file mode 100644 index 0000000000..132dde06d1 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-bs/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Otključaj %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Nema korisničkog imena)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Lozinka za %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Provjera nije uspjela</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s nije mogao provjeriti autentičnost aplikacije. Želite li nastaviti s automatskim popunjavanjem odabranih akreditacija?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Da</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ne</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Pretraži %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Pretraži prijave</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ca/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ca/strings.xml new file mode 100644 index 0000000000..67c5b2fde2 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ca/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desbloca el %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Cap nom d’usuari)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Contrasenya per a %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Ha fallat la verificació</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">El %1$s no ha pogut verificar l’autenticitat de l’aplicació. Voleu procedir amb l’emplenament automàtic de les credencials seleccionades?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sí</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Cerca al %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Cerca els inicis de sessió</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-cak/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-cak/strings.xml new file mode 100644 index 0000000000..3581e1b4a4 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-cak/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Timeq\'at %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Majun rub\'i\' okisanel)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Ewan tzij richin %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Xsach jikib\'anïk</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s man xtikïr ta xnik\'öx ri rujikib\'axik chokoy. ¿La nawajo\' chi ruyon ketz\'aqatisäx ri taq ruwujil echa\'on?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ja\'</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Mani</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Tikanöx %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Kekanöx tikirib\'äl taq molojri\'ïl</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ceb/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ceb/strings.xml new file mode 100644 index 0000000000..210f13dcd3 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ceb/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Unlock %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Wala\'y username)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Password sa %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verification napakyas</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">Ang %1$s dili maka-suta sa katinuod sa application. Buot mo ba i-padayon sa pag-autofill ang mga napiling mga credential?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Oo</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Dili</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Pangitaon %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Pangitaon ang logins</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ckb/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ckb/strings.xml new file mode 100644 index 0000000000..0048681436 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ckb/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">کردنەوەی %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">( بێ ناوی بەکارهێنەر)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">وشەی تێپەڕبوون بۆ %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">دڵنیابوونەوە سەرکەوتوو نەبوو</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ناتوانێت دڵنیابێت لە دەسەڵات دان بەم بەرنامەیە. ئایا دەتەوێت بەردەوام بیت لە پێدانی دەسەڵاتی پڕکردنەوەی خۆکار زانیارییەکانت لەم ماڵپەڕە؟</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">بەڵێ</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">نەخێر</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">بگەڕێ بۆ %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">بگەڕێ لە ناو چوونەژوورەوەکان</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-co/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-co/strings.xml new file mode 100644 index 0000000000..55b9e5cbbd --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-co/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Spalancà %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Nisunu nome d’utilizatore)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Parolla d’intesa per %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verificazione fiascata</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ùn pò micca verificà l’autenticità di l’appiecazione. Vulete cuntinuà à riempie autumaticamente l’identificazioni di cunnessione selezziunate ?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sì</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nò</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Ricercà in %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Ricercà identificazioni di cunnessione</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-cs/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-cs/strings.xml new file mode 100644 index 0000000000..d0053761c2 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-cs/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Odemknout aplikaci %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Žádné uživatelské jméno)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Heslo pro účet %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Ověření se nezdařilo</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">Aplikace %1$s nemohla ověřit cílovou aplikaci. Opravdu do ní chcete vložit vybrané přihlašovací údaje?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ano</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ne</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Hledat v aplikaci %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Hledat přihlašovací údaje</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-cy/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-cy/strings.xml new file mode 100644 index 0000000000..9e940fe253 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-cy/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Datgloi %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(dim enw defnyddiwr)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Cyfrinair %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Methodd y dilysu</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">Nid oedd %1$s yn gallu gwirio dilysrwydd y rhaglen. Ydych chi am fwrw ymlaen ag awtolenwi’r tystlythyrau a ddewiswyd?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Iawn</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Na</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Chwilio %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Chwilio mewngofnodion</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-da/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-da/strings.xml new file mode 100644 index 0000000000..ecdb268534 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-da/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Lås %1$s op</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Intet brugernavn)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Adgangskode for %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Bekræftelse mislykkedes</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s kunne ikke bekræfte autenticiteten af applikationen. Vil du fortsætte med at autofylde de valgte login-informationer?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ja</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nej</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Søg med %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Søg efter logins</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-de/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-de/strings.xml new file mode 100644 index 0000000000..ffc1c79c77 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-de/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s entsperren</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Kein Benutzername)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Passwort für %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verifizierung fehlgeschlagen</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s konnte die Authentizität der Anwendung nicht überprüfen. Möchten Sie mit der Autovervollständigung der ausgewählten Anmeldeinformationen fortfahren?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ja</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nein</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s durchsuchen</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Zugangsdaten durchsuchen</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-dsb/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-dsb/strings.xml new file mode 100644 index 0000000000..c68ae83486 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-dsb/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s wěcej njeblokěrowaś</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Žedno wužywaŕske mě)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Gronidło za %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Pśeglědanje njejo se raźiło</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s njejo mógał awtentiskosć nałoženja pśespytowaś. Cośo z awtomatiskim wupołnjowanim wubranych pśizjawjeńskich datow pókšacowaś?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Jo</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ně</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s pśepytaś</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Pśizjawjenja pytaś</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-el/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-el/strings.xml new file mode 100644 index 0000000000..3192342b51 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-el/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Ξεκλείδωμα %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Χωρίς όνομα χρήστη)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Κωδικός πρόσβασης για %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Αποτυχία επαλήθευσης</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">Το %1$s δεν μπόρεσε να επαληθεύσει την αυθεντικότητα της εφαρμογής. Θέλετε να γίνει αυτόματη συμπλήρωση των επιλεγμένων διαπιστευτηρίων;</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ναι</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Όχι</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Αναζήτηση %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Αναζήτηση συνδέσεων</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-en-rCA/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-en-rCA/strings.xml new file mode 100644 index 0000000000..31b82b38e8 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-en-rCA/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Unlock %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(No username)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Password for %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verification failed</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s could not verify the authenticity of the application. Do you want to proceed with autofilling the selected credentials?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Yes</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Search %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Search logins</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-en-rGB/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-en-rGB/strings.xml new file mode 100644 index 0000000000..31b82b38e8 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-en-rGB/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Unlock %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(No username)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Password for %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verification failed</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s could not verify the authenticity of the application. Do you want to proceed with autofilling the selected credentials?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Yes</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Search %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Search logins</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-eo/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-eo/strings.xml new file mode 100644 index 0000000000..41e4760af1 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-eo/strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Malbloki %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(sen nomo de uzanto)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Pasvorto por %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Malsukcesa kontrolo</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ne povis kontroli la aŭtentikecon de la programo. Ĉu vi volas daŭrigi la aŭtomatan plenigadon de la elektitaj legitimiloj?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Jes</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ne</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Serĉi %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Serĉi legitimilojn</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rAR/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rAR/strings.xml new file mode 100644 index 0000000000..6e6c053344 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rAR/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desbloquear %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Sin nombre de usuario)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Contraseña para %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Falló la verificación</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s no pudo verificar la autenticidad de la aplicación. ¿Desea continuar autocompletando las credenciales seleccionadas?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sí</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Buscar en %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Buscar inicios de sesión</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rCL/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rCL/strings.xml new file mode 100644 index 0000000000..2a11a588b4 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rCL/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desbloquear %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Sin nombre de usuario)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Contraseña para %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verificación fallida</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s no pudo verificar la autenticidad de la aplicación. ¿Deseas continuar autocompletando las credenciales seleccionadas?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sí</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Buscar %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Buscar credenciales</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rES/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rES/strings.xml new file mode 100644 index 0000000000..925d071c4a --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rES/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desbloquear %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Sin nombre de usuario)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Contraseña para %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Ha fallado la verificación</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s no ha podido verificar la autenticidad de la aplicación. ¿Quieres continuar autocompletando las credenciales seleccionadas?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sí</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Buscar %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Buscar inicios de sesión</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rMX/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rMX/strings.xml new file mode 100644 index 0000000000..46eb7b70dd --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-es-rMX/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desbloquear %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Sin nombre de usuario)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Contraseña para %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verificación fallida</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s no pudo verificar la autenticidad de la aplicación. ¿Deseas continuar autocompletando las credenciales seleccionadas?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sí</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Buscar %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Buscar inicios de sesión</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-es/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-es/strings.xml new file mode 100644 index 0000000000..925d071c4a --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-es/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desbloquear %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Sin nombre de usuario)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Contraseña para %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Ha fallado la verificación</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s no ha podido verificar la autenticidad de la aplicación. ¿Quieres continuar autocompletando las credenciales seleccionadas?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sí</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Buscar %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Buscar inicios de sesión</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-et/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-et/strings.xml new file mode 100644 index 0000000000..21429a5487 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-et/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Lukusta %1$s lahti</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(kasutajanime pole)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Konto %1$s parool</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verifitseerimine ebaõnnestus</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s polnud võimalik rakenduse autentsust verifitseerida. Kas soovid jätkata valitud kasutajatunnuste automaatse täitmisega?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Jah</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ei</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Otsi %1$sist</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Otsi kasutajatunnuseid</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-eu/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-eu/strings.xml new file mode 100644 index 0000000000..0670aa1c98 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-eu/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desblokeatu %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Erabiltzaile-izenik ez)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s kontuaren pasahitza</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Egiaztapenak huts egin du</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s(e)k ezin izan du aplikazioaren autentikotasuna egiaztatu. Hautatutako kredentzialak automatikoki bete nahi dituzu halere?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Bai</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ez</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Bilatu %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Bilatu saio-hasierak</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-fa/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-fa/strings.xml new file mode 100644 index 0000000000..c37a4c2e2a --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-fa/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">بازکردن %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(بدون نامکاربری)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">گذرواژه برای %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">تأیید ناموفق بود</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s نتوانست هویت برنامه را تایید کند. آیا میخواهید به پُر کردن خودکار اطلاعات ادامه دهید؟</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">بله</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">خیر</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">جستوجو در %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">جستوجو در واردشده ها</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ff/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ff/strings.xml new file mode 100644 index 0000000000..db106f3585 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ff/strings.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Alaa innde kuutoro)</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Yiylo %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Yiylo ceŋorɗe</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-fi/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-fi/strings.xml new file mode 100644 index 0000000000..58c0fa2414 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-fi/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Avaa %1$sin lukitus</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ei käyttäjätunnusta)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Salasana tilille %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Vahvistus epäonnistui</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ei voinut vahvistaa sovelluksen aitoutta. Haluatko jatkaa valittujen kirjautumistietoijen automaattista täydentämistä?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Kyllä</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ei</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Etsi %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Etsi kirjautumistietoja</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-fr/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-fr/strings.xml new file mode 100644 index 0000000000..240da07fd6 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-fr/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Déverrouiller %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Aucun nom d’utilisateur)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Mot de passe pour %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Échec de la vérification</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s n’a pas pu vérifier l’authenticité de l’application. Voulez-vous tout de même procéder au remplissage automatique des identifiants sélectionnés ?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Oui</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Non</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Rechercher dans %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Rechercher des identifiants</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-fur/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-fur/strings.xml new file mode 100644 index 0000000000..0f2eb2f0d8 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-fur/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Sbloche %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Nissun non utent)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Password par %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verifiche falide</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s nol à podût verificâ la autenticitât de aplicazion. Procedi cu la compilazion automatiche doprant lis credenziâls selezionadis?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sì</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Cîr in %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Cîr tes credenziâls</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-fy-rNL/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-fy-rNL/strings.xml new file mode 100644 index 0000000000..7056018333 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-fy-rNL/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s ûntskoattelje</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Gjin brûkersnamme)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Wachtwurd foar %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Ferifikaasje mislearre</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s koe de autentisiteit fan de tapassing net ferifiearje. Wolle jo trochgean mei it automatysk ynfoljen fan de selektearre oanmeldgegevens?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ja</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nee</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s trochsykje</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Oanmeldingen sykje</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-gd/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-gd/strings.xml new file mode 100644 index 0000000000..ab2a418523 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-gd/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Thoir a’ ghlas far %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Gun ainm-cleachdaiche)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Am facal-faire airson %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Dh’fhàillig leis an dearbhadh</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">Cha deach le %1$s dearbh-aithneachadh a dhèanamh air a aplacaid. A bheil thu airson leantainn air adhart le lìonadh fèin-obrachail an teisteis a thagh thu?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Tha</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Chan eil</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Lorg %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Lorg sna clàraidhean a-steach</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-gl/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-gl/strings.xml new file mode 100644 index 0000000000..eadc31c59e --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-gl/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desbloquear %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Sen nome de usuario)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Contrasinal de %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Fallou a comprobación</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s non puido verificar a autenticidade da aplicación. Quere continuar co enchido automático das credenciais seleccionadas?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Si</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Non</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Buscar en %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Buscar nas credenciais</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-gn/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-gn/strings.xml new file mode 100644 index 0000000000..47c023866d --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-gn/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Emyandyjey %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Poruhára hera’ỹva)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s ñe’ẽñemi</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Ojavy jehechajey</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ndaikatúi ohechajey pe tembiporu’i ha’épa añeteguáva. ¿Emyanyhẽsevépa umi terarenda jeporavopyre?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Héẽ</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nahániri</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Eheka %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Eheka tembiapo ñepyrũ</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-hi-rIN/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hi-rIN/strings.xml new file mode 100644 index 0000000000..df50691a99 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hi-rIN/strings.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s को खोलें</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(कोई उपयोगकर्ता नाम नहीं)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s के लिए पासवर्ड</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">सत्यापन विफल</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">हां</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">नहीं</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s खोजें</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">लॉगिन खोजें</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-hil/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hil/strings.xml new file mode 100644 index 0000000000..98eb4327ac --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hil/strings.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Huo</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Indi</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Pangitaon %1$s</string> + + </resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-hr/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hr/strings.xml new file mode 100644 index 0000000000..cae7d79ac2 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hr/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Otključaj %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(nema korisničkog imena)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Lozinka za %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Provjera nije uspjela</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s nije mogao provjeriti autentičnost aplikacije. Želite li nastaviti s automatskim popunjavanjem odabranih vjerodajnica?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Da</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ne</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Pretraži %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Pretraži prijave</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-hsb/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hsb/strings.xml new file mode 100644 index 0000000000..2576402485 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hsb/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s hižo njeblokować</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Žane wužiwarske mjeno)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Hesło za %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Přepruwowanje je so nimokuliło</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s njemóžeše awtentiskosć nałoženja přepruwować. Chceće z awtomatiskim wupjelnjenjom wubranych přizjewjenskich datow pokročować?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Haj</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ně</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s přepytać</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Přizjewjenja pytać</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-hu/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hu/strings.xml new file mode 100644 index 0000000000..f71c532838 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hu/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">A %1$s feloldása</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Nincs felhasználónév)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Jelszó a következőhöz: %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Az ellenőrzés sikertelen</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">A(z) %1$s nem tudta ellenőrizni az alkalmazás hitelességét. Folytatja a kiválasztott hitelesítő adatok automatikus kitöltését?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Igen</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nem</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s keresés</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Bejelentkezések keresése</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-hy-rAM/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hy-rAM/strings.xml new file mode 100644 index 0000000000..5e194f3fe6 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-hy-rAM/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Ապակողպեл %1$s-ը</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(չկա օգտվողի անուն)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Գաղտնաբառ %1$s-ի համար</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Նույնականացումը ձախողվեց</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s-ը չկարողացավ ստուգել ծրագրի իսկությունը: Ցանկանո՞ւմ եք շարունակել ընտրված հավատարմագրերի ինքնալրացումը:</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Այո</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ոչ</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Որոնել %1$s-ում</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Որոնել մուտքանուններ</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ia/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ia/strings.xml new file mode 100644 index 0000000000..c7ce79ab63 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ia/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Disblocar %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Nulle nomine de usator)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Contrasigno pro %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verification fallite</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s non pote verificar le authenticitate del application. Vole tu continuar con auto-plenamento del seligite credentiales?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Si</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Cercar in %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Cercar credentiales</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-in/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-in/strings.xml new file mode 100644 index 0000000000..914a06b96f --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-in/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Buka %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Tidak ada nama pengguna)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Sandi untuk %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verifikasi gagal</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s tidak dapat memeriksa keaslian aplikasi tersebut. Ingin melanjutkan dengan mengisi otomatis dengan kredensial terpilih?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ya</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Tidak</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Cari %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Cari log masuk</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-is/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-is/strings.xml new file mode 100644 index 0000000000..750ea8d274 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-is/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Opna fyrir %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ekkert notandanafn)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Lykilorð fyrir %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Staðfesting mistókst</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s gat ekki staðfest áreiðanleika forritsins. Viltu halda áfram að fylla sjálfvirkt út valin auðkenni?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Já</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nei</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Leita í %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Leita að innskráningu</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-it/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-it/strings.xml new file mode 100644 index 0000000000..0397938e5f --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-it/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Sblocca %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(nessun nome utente)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Password per %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verifica non riuscita</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s non ha potuto verificare l’autenticità dell’applicazione. Procedere con la compilazione automatica usando le credenziali selezionate?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sì</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Cerca in %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Cerca nelle credenziali</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-iw/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-iw/strings.xml new file mode 100644 index 0000000000..baf67c7f81 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-iw/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">שחרור נעילת %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(אין שם משתמש)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">ססמה עבור %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">האימות נכשל</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s לא הצליח לאמת את אמינות היישומון. האם ברצונך להמשיך במילוי אוטומטי של פרטי הכניסה שנבחרו?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">כן</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">לא</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">חיפוש ב־%1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">חיפוש כניסות</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ja/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ja/strings.xml new file mode 100644 index 0000000000..b3a0989710 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ja/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s のロックを解除</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ユーザー名なし)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s のパスワード</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">検証失敗</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s がアプリケーションの信頼性を検証できませんでした。選択した資格情報の自動入力を続けますか?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">はい</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">いいえ</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s を検索</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">ログイン情報を検索</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ka/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ka/strings.xml new file mode 100644 index 0000000000..fd9b99f9d2 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ka/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">გაიხსნას %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(სახელის გარეშე)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">პაროლი ანგარიშისთვის %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">დამოწმება ვერ მოხერხდა</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ვერ ადასტურებს აპლიკაციის ნამდვილობას. გსურთ, განაგრძოთ შერჩეული მონაცემებით თვითშევსება?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">დიახ</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">არა</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">ძიება - %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">ანგარიშების ძიება</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-kaa/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-kaa/strings.xml new file mode 100644 index 0000000000..d601de91b8 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-kaa/strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s bloktan shıǵarıw</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Paydalanıwshı atı joq)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s ushın parol</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Tastıyıqlaw ámelge aspadı</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s baǵdarlamanıń haqıyqıylıǵın teksere almadı. Tańlanǵan esap maǵlıwmatların avtomat tárizde toltırıwdı qáleysiz be?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Awa</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Yaq</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s izleń</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Loginlerdi zleń</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-kab/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-kab/strings.xml new file mode 100644 index 0000000000..45a385c8f1 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-kab/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Serreḥ i %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Ulac isem n useqdac)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Awal uffir i %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Asenqed ur yeddi ara</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ur ezmir ara ad isenqed asesteb n usnas. Tebɣiḍ ad tkemmleḍ s tacaṛt tawurmant inekcam yettwafernen?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ih</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ala</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Nadi %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Nadi inekcam</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-kk/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-kk/strings.xml new file mode 100644 index 0000000000..8f71c1997a --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-kk/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s босату</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Пайдаланушы аты жоқ)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s үшін пароль</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Верификация сәтсіз аяқталды</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s қолданба шынайылығын тексере алмады. Таңдалған тіркелу мәліметтерін автоматты түрде толтырумен жалғастыру керек пе?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Иә</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Жоқ</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s ішінен іздеу</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Логиндерден іздеу</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-kmr/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-kmr/strings.xml new file mode 100644 index 0000000000..5a91889228 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-kmr/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Kilîda %1$s’ê veke</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Navê bikarhêner tune)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Pêborîna %1$s’ê</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Piştrastkirin têk çû</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s nekariye rayeya serlêdanê piştrast bike. Gelo tu dixwazî zanyariyên hesabê hatî hilbijartin xweber bê dagitin û wisa dewam bikî?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Erê</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Na</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Li %1$s bigere</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Li têketinan bigere</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ko/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ko/strings.xml new file mode 100644 index 0000000000..c8dc9de112 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ko/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s 잠금 해제</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(사용자 이름 없음)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s 비밀번호</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">확인 실패</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s가 애플리케이션의 신뢰성을 확인할 수 없습니다. 선택한 자격 증명을 자동으로 채우시겠습니까?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">예</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">아니요</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s 검색</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">로그인 검색</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-lo/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-lo/strings.xml new file mode 100644 index 0000000000..d5b78f234d --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-lo/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">ປົດລັອກ %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ບໍ່ມີຊື່ຜູ້ໃຊ້)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">ລະຫັດຜ່ານສຳລັບ %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">ການຢັ້ງຢືນລົ້ມເຫລວ</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ບໍ່ສາມາດລະບຸຄວາມຖືກຕ້ອງຂອງແອັບພຣິເຄຊັນໄດ້. ທ່ານຕ້ອງການຕື່ມຂໍ້ມູນປະຈຳຕົວຂອງທ່ານທີ່ເລືອກອັດຕະໂນມັດຫລືບໍ?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">ຕ້ອງການ</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">ບໍ່ຕ້ອງການ</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">ຄົ້ນຫາ %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">ຄົ້ນຫາຂໍ້ມູນການລັອກອິນ</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-lt/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-lt/strings.xml new file mode 100644 index 0000000000..b38c5ee06d --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-lt/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Atrakinti „%1$s“</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(nėra naudotojo vardo)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Paskyros „%1$s“ slaptažodis</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Patvirtinimas nepavyko</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">„%1$s“ nepavyko patvirtinti programos autentiškumo. Ar norite automatiškai užpildyti prisijungimo duomenis?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Taip</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ne</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Ieškoti „%1$s“</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Ieškoti prisijungimų</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-mix/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-mix/strings.xml new file mode 100644 index 0000000000..ada67769d5 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-mix/strings.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Kuna %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Koo sivi)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Tu^un se^e %s</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + </resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-my/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-my/strings.xml new file mode 100644 index 0000000000..3beb79aeec --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-my/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s ကို ဖွင့်ပါ</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(အသုံးပြုသူအမည် မရှိ)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s အတွက် စကားဝှက်</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">မှန်ကန်မှုကို စစ်ဆေးအတည်ပြုခြင်း မအောင်မြင်ပါ</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s သည် အပလီကေးရှင်း ၏ စစ်မှန်မှုကို အတည်မပြုနိုင်ပါ။ သင်ရွေးချယ်ထားသော အထောက်အထားများကို အလိုအလျောက်ဖြည့်ခြင်းနှင့် ဆက်လက် လုပ်ဆောင်လိုပါသလား။</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">လုပ်ဆောင်ပါမည်</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">မလုပ်ဆောင်တော့ပါ</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s ကို ရှာပါ</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">လော့ဂ်အင် ဝင်ရောက်မှုများကို ရှာပါ </string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-nb-rNO/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-nb-rNO/strings.xml new file mode 100644 index 0000000000..cd3ef4edbc --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-nb-rNO/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Lås opp %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Uten brukernavn)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Passord for %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Bekreftelsen mislyktes</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s kunne ikke bekrefte ektheten til applikasjonen. Vil du fortsette med autoutfylling av valgte innloggingsinformasjon?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ja</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nei</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Søk %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Søk innlogginger</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ne-rNP/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ne-rNP/strings.xml new file mode 100644 index 0000000000..c193be1445 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ne-rNP/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s लाई अनलक गर्नुहोस्</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(प्रयोगकर्ताको नाम छैन)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s को लागि पासवर्ड</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">प्रमाणीकरण असफल भयो</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ले यो एपको प्रामाणिकता प्रमाणित गर्न सकेन। के तपाइँ छानिएका प्रमाणहरू स्वत: भरेर अगाडि बढ्न चाहनुहुन्छ?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">हुन्छ</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">हुँदैन</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s खोज्नुहोस्</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">लगइनहरु खोज्नुहोस्</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-nl/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-nl/strings.xml new file mode 100644 index 0000000000..b8c7592da0 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-nl/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s ontgrendelen</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Geen gebruikersnaam)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Wachtwoord voor %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verificatie mislukt</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s kon de authenticiteit van de toepassing niet verifiëren. Wilt u doorgaan met het automatisch invullen van de geselecteerde aanmeldgegevens?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ja</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nee</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s doorzoeken</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Aanmeldingen zoeken</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-nn-rNO/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-nn-rNO/strings.xml new file mode 100644 index 0000000000..494754299a --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-nn-rNO/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Lås opp %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ikkje noko brukarnamn)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Passord for %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Mislykka stadfesting</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s klarte ikkje å stadfeste autentisiteten til programmet. Vil du fortsetje med å automatiskt fylle ut dei valde opplysningane?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ja</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nei</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Søk %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Søk innloggingar</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-oc/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-oc/strings.xml new file mode 100644 index 0000000000..13a4bfc6da --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-oc/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desblocar %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Cap de nom d’utilizaire)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Senhal per %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verificacion fracassada</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s a pas pogut verificar l’autenticitat de l’aplicacion. Volètz contunhar l’autocompletacion dels identificants seleccionats.</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Òc</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Non</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Cercar dins %s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Recercar d’identificants</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-or/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-or/strings.xml new file mode 100644 index 0000000000..a189a10c53 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-or/strings.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ଉପଭୋକ୍ତାଙ୍କ ନାମ ନାହିଁ)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s ପାଇଁ ପାସୱାର୍ଡ଼</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">ଯାଞ୍ଚ ବିବରଣୀ ବିଫଳ</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">ହଁ</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">ନାଁ</string> + + </resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-pa-rIN/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-pa-rIN/strings.xml new file mode 100644 index 0000000000..2435dc53f6 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-pa-rIN/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s ਅਣ-ਲਾਕ ਕਰੋ</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ਕੋਈ ਵਰਤੋਂਕਾਰ ਨਾਂ ਨਹੀਂ)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s ਲਈ ਪਾਸਵਰਡ</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">ਤਸਦੀਕ ਅਸਫ਼ਲ ਰਹੀ</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਪਰਮਾਣਿਕਤਾ ਦੀ ਤਸਦੀਕ ਨਹੀਂ ਕਰ ਸਕਿਆ। ਕੀ ਤੁਸੀਂ ਚੁਣੀਆਂ ਸਨਦਾਂ ਨੂੰ ਆਪੇ-ਭਰਨ ਨਾਲ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">ਹਾਂ</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">ਨਹੀਂ</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s ਖੋਜੋ</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">ਲਾਗਇਨ ਖੋਜੋ</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-pa-rPK/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-pa-rPK/strings.xml new file mode 100644 index 0000000000..ac43539016 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-pa-rPK/strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s بند کرن نوں الٹاؤ</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(کوئی ورتنوالے دا ناں نہیں جاݨیا)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s ناں نال پاسورڈ</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">تصدیق نال غلطی ہو گئی اے</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ایپ دی تصدیق نہیں کر سکدا۔ کیہ تسیں چݨیاں سنداں نوں آپے بھرن نال جاری رکھݨا چہندے او؟</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">ہاں</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">نہیں</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s ایپ چ کھوجو</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">کھاتے چ کھوجو</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-pl/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-pl/strings.xml new file mode 100644 index 0000000000..2b778b31b1 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-pl/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Odblokuj program %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Bez nazwy użytkownika)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Hasło dla konta %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Weryfikacja się nie powiodła</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s nie może zweryfikować autentyczności aplikacji. Czy kontynuować automatyczne wypełnianie wybranych danych logowania?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Tak</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nie</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Szukaj w programie %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Szukaj danych logowania</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-pt-rBR/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 0000000000..f6b798fd2a --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desbloquear %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(sem nome de usuário)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Senha de %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Falha na verificação</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">O %1$s não conseguiu verificar a autenticidade do aplicativo. Quer prosseguir com o preenchimento automático das credenciais selecionadas?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sim</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Não</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Procurar no %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Procurar contas</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-pt-rPT/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-pt-rPT/strings.xml new file mode 100644 index 0000000000..05a46a791d --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-pt-rPT/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Desbloquear %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Sem nome de utilizador)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Palavra-passe para %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">A confirmação falhou</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s não conseguiu confirmar a autenticidade da aplicação. Quer continuar com o preenchimento automático das credenciais selecionadas?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sim</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Não</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Pesquisar no %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Pesquisar credenciais</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-rm/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-rm/strings.xml new file mode 100644 index 0000000000..78619908c2 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-rm/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Debloccar %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Nagin num d\'utilisader)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Pled-clav per %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verificaziun betg reussida</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s n\'ha betg pudì verifitgar l\'autenticitad da l\'applicaziun. Vuls ti cuntinuar e laschar emplenir automaticamain las datas d\'annunzia tschernidas?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Gea</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Na</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Tschertgar en %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Retschertgar las datas d\'annunzia</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ro/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ro/strings.xml new file mode 100644 index 0000000000..cac24165e5 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ro/strings.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Niciun nume de utilizator)</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Caută în %1$s</string> + + </resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ru/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000000..e92c72cac6 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ru/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Разблокировать %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Нет имени пользователя)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Пароль для %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Проверка не удалась</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s не удалось проверить подлинность приложения. Вы хотите произвести автозаполнение выбранных учётных данных?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Да</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Нет</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Искать в %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Поиск логинов</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-sat/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sat/strings.xml new file mode 100644 index 0000000000..70fecdcbca --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sat/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s ᱠᱷᱩᱞᱟᱹᱭ ᱢᱮ</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱧᱩᱛᱩᱢ ᱵᱟᱹᱱᱩᱜᱼᱟ)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s ᱞᱟᱹᱜᱤᱫ ᱫᱟᱱᱟᱝ ᱥᱟᱵᱟᱫᱽ</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">ᱯᱨᱚᱢᱟᱬᱤᱛ ᱰᱤᱜᱟᱹᱣ ᱮᱱᱟ</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ᱫᱚ ᱮᱯᱞᱤᱥᱠᱮᱥᱚᱱ ᱨᱮᱭᱟᱜ ᱥᱟᱹᱨᱤ ᱠᱚ ᱵᱟᱭ ᱯᱩᱥᱴᱟᱹᱣ ᱫᱟᱲᱮᱭᱟᱫᱟᱭ ᱾ ᱟᱢ ᱪᱮᱫ ᱵᱟᱪᱷᱟᱣ ᱟᱠᱟᱱ ᱠᱨᱮᱰᱮᱱᱥᱤᱭᱟᱞᱥ ᱛᱮ ᱟᱡ ᱛᱮ ᱯᱩᱨᱟᱹᱣ ᱪᱷᱚᱣᱟᱜ ᱥᱮᱱᱟᱢ ᱠᱟᱱᱟ ᱥᱮ?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">ᱦᱮᱸ</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">ᱵᱟᱝ</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%s ᱥᱮᱸᱫᱽᱨᱟᱭ ᱢᱮ</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">ᱞᱚᱜᱤᱱ ᱠᱚ ᱥᱮᱸᱫᱽᱨᱟᱭ ᱢᱮ</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-sc/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sc/strings.xml new file mode 100644 index 0000000000..e05c371bed --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sc/strings.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Isbloca %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Nissunu nòmine utente)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Crae pro %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Faddina in sa verìfica</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Eja</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nono</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Chirca %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Chirca credentziales</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-si/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-si/strings.xml new file mode 100644 index 0000000000..74b25af4f2 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-si/strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s අගුළු හරින්න</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(පරිශීලක නාමය නැත)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s සඳහා මුරපදය</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">සත්යාපනයට අසමත් විය!</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s සඳහා යෙදුම සත්යාපනයට නොහැකි විය. ඔබට තෝරාගත් අක්තපත්ර ස්වයංක්රීයව පිරවීමෙන් ඉදිරියට යාමට අවශ්යද?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">ඔව්</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">නැහැ</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s සොයන්න</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">පිවිසුම් සොයන්න</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-sk/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sk/strings.xml new file mode 100644 index 0000000000..4bc86cbb62 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sk/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Odomknúť %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Žiadne používateľské meno)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Heslo pre účet %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Overenie zlyhalo</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">Prehliadač %1$s nemohol overiť pravosť aplikácie. Chcete pokračovať v automatickom dopĺňaní prihlasovacích údajov?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Áno</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nie</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Hľadať v aplikácii %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Hľadať v prihlasovacích údajoch</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-skr/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-skr/strings.xml new file mode 100644 index 0000000000..378959c47c --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-skr/strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s اݨ لاک کرو</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ورتݨ ناں کوئی کائنی)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s کیتے پاس ورڈ</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">پڑتال ناکام تھی ڳئی</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ایپ دے مستند ہووݨ دی تصدیق کائنی کر سڳا۔ بھلا تساں چݨی اسناد کوں خودکاربھرݨ نال اڳوں تے ودھݨ چاہسو؟</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">جیا</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">کو</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s ڳولو</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">لاگ ان ڳولو</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-sl/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sl/strings.xml new file mode 100644 index 0000000000..e31de3c7ff --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sl/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Odkleni %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(brez uporabniškega imena)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Geslo za %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Preverjanje ni uspelo</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ni mogel preveriti pristnosti aplikacije. Ali želite nadaljevati s samodejnim izpolnjevanjem izbranih podatkov za prijavo?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Da</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ne</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Išči v %1$su</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Iskanje prijav</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-sq/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sq/strings.xml new file mode 100644 index 0000000000..ae824fa834 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sq/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Shkyçe %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Pa emër përdoruesi)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Fjalëkalim për %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verifikimi dështoi</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s s’verifikoi dot mirëfilltësinë e këtij aplikacioni. Doni të kryhet vetëplotësimi i kredencialeve të përzgjedhura?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Po</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Jo</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Kërko për %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Kërkoni te kredenciale hyrjesh</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-sr/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sr/strings.xml new file mode 100644 index 0000000000..cb3c56e1ed --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sr/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Откључај %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(без корисничког имена)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Лозинка за %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Провера није успела</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s није могао да провери аутентичност апликације. Желите ли да наставите с аутоматским попуњавањем изабраних акредитива?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Да</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Не</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Претражи %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Претражи пријаве</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-su/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-su/strings.xml new file mode 100644 index 0000000000..094162d8a3 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-su/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Buka konci %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Taya sandiasma)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Kecap sandi pikeun %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Péripikasi gagal</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s teu bisa muguhkeun oténtisitas aplikasina. Rék diteruskeun ku ngeusi otomatis data nu dipilih?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Enya</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Moal</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Paluruh %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Paluruh login</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-sv-rSE/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sv-rSE/strings.xml new file mode 100644 index 0000000000..c35fb6ef1c --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-sv-rSE/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Lås upp %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Inget användarnamn)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Lösenord för %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verifieringen misslyckades</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s kunde inte verifiera programmets äkthet. Vill du fortsätta med att automatiskt fylla i de valda uppgifterna?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ja</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nej</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Sök efter %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Sök inloggningar</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ta/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ta/strings.xml new file mode 100644 index 0000000000..0b6ad1ab00 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ta/strings.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s ஐ பூட்டவிழ்</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(பயனர்பெயர் இல்லை)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s க்கான கடவுச்சொல்</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">சரிபார்ப்பு தோல்வி</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ஆல் செயலியின் நம்பகத்தன்மையை சரிபார்க்க இயலவில்லை. தேர்ந்தெடுக்கப்பட்ட நற்சான்றிதழ்களை தானாக நிரப்புவதன் மூலம் தொடர விரும்புகிறீர்களா?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">ஆம்</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">இல்லை</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">புகுபதிகைகளைத் தேடு</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-te/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-te/strings.xml new file mode 100644 index 0000000000..79069b6350 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-te/strings.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(వాడుకరి పేరు లేదు)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$sకి సంకేతపదం</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">తనిఖీ విఫలమైంది</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">అవును</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">వద్దు</string> + + </resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-tg/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tg/strings.xml new file mode 100644 index 0000000000..a454579cb1 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tg/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Кушодани қулфи %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Номи корбар нест)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Ниҳонвожа барои %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Санҷиши ҳаққоният иҷро нашуд</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ҳаққонияти барномаро тасдиқ карда натавонист. Шумо мехоҳед, ки маълумоти воридшавии интихобшударо ба таври худкор пур карда, идома диҳед?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ҳа</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Не</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Ҷустуҷӯ дар %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Ҷустуҷӯи воридшавиҳо</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-th/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-th/strings.xml new file mode 100644 index 0000000000..251d185372 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-th/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">ปลดล็อค %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ไม่มีชื่อผู้ใช้)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">รหัสผ่านสำหรับ %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">การตรวจสอบล้มเหลว</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ไม่สามารถตรวจสอบความถูกต้องของแอปพลิเคชันได้ คุณต้องการเติมข้อมูลประจำตัวที่เลือกอัตโนมัติต่อหรือไม่?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">ใช่</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">ไม่</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">ค้นหา %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">ค้นหาการเข้าสู่ระบบ</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-tl/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tl/strings.xml new file mode 100644 index 0000000000..792e13cf2e --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tl/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">i-Unlock ang %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(No username)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Password para sa %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Nabigo ang pag-verify</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">Hindi ma-verify ng %1$s ang pagiging tunay ng application. Nais mo bang magpatuloy sa pag-autofill ng mga napiling kredensyal?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Oo</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Hindi</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Hanapin sa %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Hanapin sa mga login</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-tok/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tok/strings.xml new file mode 100644 index 0000000000..a370d24b26 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tok/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">o open e %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(nimi li lon ala)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">nimi open tawa ni: %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">mi ken ala pona e ilo</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">ilo %1$s li ken ala pona e ilo. sina pana ala pana e nimi sina?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">pana</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">ala</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">o lukin e %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">o lukin e nimi open</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-tr/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tr/strings.xml new file mode 100644 index 0000000000..5292e1edbb --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tr/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s kilidini aç</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Kullanıcı adı yok)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s parolası</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Doğrulama başarısız</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s, uygulamanın yetkinliğini doğrulayamadı. Seçili hesap bilgilerini otomatik olarak doldurmaya devam etmek istiyor musunuz?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Evet</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Hayır</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s’ta ara</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Hesaplarda ara</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-trs/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-trs/strings.xml new file mode 100644 index 0000000000..8d080ad617 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-trs/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Dūgi\'iaj sun\' %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Nitāj si yūgui usuario hua)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Da\’nga\’ huì guendâ %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Nu gā’ue nātsij man</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">Nu gā’hue nātsij %1$s si huā hue’ê aplikasiûn nan. Ruhuât gān’ānjt ne’ ñāa da’ gīsìj nej kredenciâ gida’a raj.</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ga\'ue</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Si ga\'ue</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Nanà\'huì\' %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Nānà\'uì\' nej riña gayi\'ît sēsiûn</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-tt/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tt/strings.xml new file mode 100644 index 0000000000..5f37bea3a0 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tt/strings.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s программасын ачу</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Кулланучы исеме юк)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s өчен парол</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Раслау уңышсыз тәмамланды</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Әйе</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Юк</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s эченнән эзләү</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Логиннардан эзләү</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-tzm/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tzm/strings.xml new file mode 100644 index 0000000000..a83b882497 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-tzm/strings.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Rẓem %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Walu yism unessemres)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Taguri n uzerray i %1$s</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Yah</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Uhu</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Rzu %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Rzu inekcam</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ug/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ug/strings.xml new file mode 100644 index 0000000000..129dec6052 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ug/strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s قۇلۇپىنى ئاچ</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(ئىشلەتكۈچى ئىسمى يوق)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s ئىمى</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">دەلىللىيەلمىدى</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ئەپنىڭ چىنلىقىنى دەلىللىيەلمىدى. ئۆزلۈكىدىن تولدۇرۇلۇپ تاللانغان تىزىمغا كىرىش ئۇچۇرىنى داۋاملاشتۇرامسىز؟</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">ھەئە</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">ياق</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions"> %1$sدىن ئىزدەش</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">كىرىش خاتىرىسىنى ئىزدەش</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-uk/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-uk/strings.xml new file mode 100644 index 0000000000..894bbb4520 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-uk/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Розблокувати %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Без імені користувача)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Пароль для %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Помилка перевірки</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s не вдалося перевірити справжність програми. Продовжити автозаповнення вибраних облікових даних?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Так</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Ні</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Пошук в %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Шукати паролі</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-ur/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ur/strings.xml new file mode 100644 index 0000000000..e5eccda540 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-ur/strings.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s ان لاک کریں</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(صارف نام کا نہیں)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$sکے لئے پاسورڈ</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">توثیق کاری ناکام ہوگئی</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">جی ہاں</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">جی نہیں</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$s تلاش کریں</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">لاگ ان تلاش کریں</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-uz/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-uz/strings.xml new file mode 100644 index 0000000000..27abed151a --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-uz/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">%1$s qulfini ochish</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Foydalanuvchi nomi yoʻq)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s uchun parol</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Tasdiqlanmadi</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s ilovaning haqiqiyligini tekshira olmadi. Tanlangan hisob maʼlumotlarini avtomatik toʻldirishni davom ettirmoqchimisiz?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Ha</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Yoʻq</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">%1$sni qidirish</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Loginlarni qidirish</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-vec/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-vec/strings.xml new file mode 100644 index 0000000000..410e0a27bd --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-vec/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Sbloca %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Nisun nòme utente)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Password par %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verifega no riusìa</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s non el ga posudo verifegare l’autentisidà de l’aplicasion. Prosedare con ƚa conpilasion otomatega uxando ƚe credensiaƚi selesionà?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Sì</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Nò</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Cata en %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Cata enteƚe credensiaƚi</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-vi/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-vi/strings.xml new file mode 100644 index 0000000000..c474dc0979 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-vi/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Mở khóa %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Không có tên người dùng)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Mật khẩu cho %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Xác minh thất bại</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s không thể xác minh tính xác thực của ứng dụng. Bạn có muốn tiếp tục tự động điền thông tin đăng nhập đã chọn không?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Có</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Không</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Tìm kiếm %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Tìm kiếm thông tin đăng nhập</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-yo/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-yo/strings.xml new file mode 100644 index 0000000000..283990d696 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-yo/strings.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Ṣi sílẹ̀ %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(Kò sí orúkọ àmúlò) +</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Pásíwọọ̀dù fún %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Iṣẹ́ ìmúdájú kùnà</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s kò le rí àrídájú fún áàpù náà. Ṣé o fẹ́ tẹ̀síwájú pẹ̀lú yíyàn-aládàáṣe fún àwọn ìwé-ẹ̀rí náà?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Bẹ́ẹ̀ni</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">Bẹ́ẹ̀ kọ́</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Ṣàwárí %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Yẹ àwọn ìwọlé wò</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-zh-rCN/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000000..5a15f62f28 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">解锁 %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(无用户名)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s 的密码</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">验证失败</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s 无法验证此应用程序的真实性,您确定要自动填充选择的登录信息吗?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">是</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">否</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">搜索保存于 %1$s 的登录信息</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">搜索登录信息</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values-zh-rTW/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000000..4c91ff38bc --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values-zh-rTW/strings.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">解鎖 %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(無使用者名稱)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">%1$s 的密碼</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">驗證失敗</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s 無法驗證此應用程式的真實性,您確定要自動填入選擇的登入資訊嗎?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">要填入</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">不要填入</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">搜尋儲存於 %1$s 的登入資訊</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">搜尋登入資訊</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/main/res/values/strings.xml b/mobile/android/android-components/components/feature/autofill/src/main/res/values/strings.xml new file mode 100644 index 0000000000..1445f98965 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/main/res/values/strings.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<resources> + <!-- Autofill: Text shown in popup in third-party app if the browser app needs to be unlocked before + a username or password can be autofilled for the highlighted text field. %1$s will be replaced + with the name of the browser application (e.g. Firefox) --> + <string name="mozac_feature_autofill_popup_unlock_application">Unlock %1$s</string> + + <!-- Autofill: Text shown in popup in third-party app if we found a matching account, but no + username is saved (e.g. we only have a password). This text will be shown in place where otherwise + the username would be displayed. --> + <string name="mozac_feature_autofill_popup_no_username">(No username)</string> + + <!-- Autofill: Text shown in popup in third-party app to autofill the password for an account. + %1$s will be replaced with the login/username of the account. --> + <string name="mozac_feature_autofill_popup_password">Password for %1$s</string> + + <!-- Autofill: Title of a dialog asking the user to confirm before autofilling credentials into + a third-party app after the authenticity verification failed. --> + <string name="mozac_feature_autofill_confirmation_title">Verification failed</string> + + <!-- Autofill: Text shown in dialog asking the user to confirm before autofilling credentials into a + third-party app where we could not verify the authenticity (e.g. we determined that this app is + a twitter client and we could autofill twitter credentials, but according to the "Digital Asset + Links" this application is not the official Twitter application for twitter.com credentials. + %1$s will be replaced with the name of the browser application (e.g. Firefox). + --> + <string name="mozac_feature_autofill_confirmation_authenticity">%1$s could not verify the authenticity of the application. Do you want to proceed with autofilling the selected credentials?</string> + + <!-- Autofill: Positive button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_yes">Yes</string> + + <!-- Autofill: Negative button shown in dialog asking the user to confirm before autofilling + credentials in a third-part app (Also see string mozac_feature_autofill_confirmation_authenticity). --> + <string name="mozac_feature_autofill_confirmation_no">No</string> + + <!-- Autofill: When showing a list of logins to autofill in a third-party app, then this is the + last item in the list. When clicking it a new screen opens which allows the user to search for + a specific login. %1$s will be replaced with the name of the application (e.g. "Firefox") --> + <string name="mozac_feature_autofill_search_suggestions">Search %1$s</string> + + <!-- Autofill: Hint shown in the text field used to search specific logins. Shown when the field + is empty and the user has not entered any text into it yet. --> + <string name="mozac_feature_autofill_search_hint">Search logins</string> +</resources> diff --git a/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/AutofillUseCasesTest.kt b/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/AutofillUseCasesTest.kt new file mode 100644 index 0000000000..21a96c89b9 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/AutofillUseCasesTest.kt @@ -0,0 +1,192 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill + +import android.content.Context +import android.view.autofill.AutofillManager +import androidx.test.ext.junit.runners.AndroidJUnit4 +import mozilla.components.support.test.any +import mozilla.components.support.test.mock +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mockito.doReturn +import org.mockito.Mockito.never +import org.mockito.Mockito.reset +import org.mockito.Mockito.verify + +@RunWith(AndroidJUnit4::class) +class AutofillUseCasesTest { + @Test + fun testIsSupported() { + val context: Context = mock() + val autofillManager: AutofillManager = mock() + doReturn(autofillManager).`when`(context).getSystemService(AutofillManager::class.java) + doReturn(true).`when`(autofillManager).isAutofillSupported + + assertFalse(AutofillUseCases(sdkVersion = 21).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 22).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 23).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 24).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 25).isSupported(context)) + + assertTrue(AutofillUseCases(sdkVersion = 26).isSupported(context)) + assertTrue(AutofillUseCases(sdkVersion = 27).isSupported(context)) + assertTrue(AutofillUseCases(sdkVersion = 28).isSupported(context)) + assertTrue(AutofillUseCases(sdkVersion = 29).isSupported(context)) + assertTrue(AutofillUseCases(sdkVersion = 30).isSupported(context)) + } + + @Test + fun testIsNotSupported() { + val context: Context = mock() + val autofillManager: AutofillManager = mock() + doReturn(autofillManager).`when`(context).getSystemService(AutofillManager::class.java) + doReturn(false).`when`(autofillManager).isAutofillSupported + + assertFalse(AutofillUseCases(sdkVersion = 21).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 22).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 23).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 24).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 25).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 26).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 27).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 28).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 29).isSupported(context)) + assertFalse(AutofillUseCases(sdkVersion = 30).isSupported(context)) + } + + @Test + fun testIsEnabled() { + val context: Context = mock() + val autofillManager: AutofillManager = mock() + doReturn(autofillManager).`when`(context).getSystemService(AutofillManager::class.java) + doReturn(true).`when`(autofillManager).hasEnabledAutofillServices() + + assertFalse(AutofillUseCases(sdkVersion = 21).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 22).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 23).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 24).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 25).isEnabled(context)) + + assertTrue(AutofillUseCases(sdkVersion = 26).isEnabled(context)) + assertTrue(AutofillUseCases(sdkVersion = 27).isEnabled(context)) + assertTrue(AutofillUseCases(sdkVersion = 28).isEnabled(context)) + assertTrue(AutofillUseCases(sdkVersion = 29).isEnabled(context)) + assertTrue(AutofillUseCases(sdkVersion = 30).isEnabled(context)) + } + + @Test + fun testIsNotEnabled() { + val context: Context = mock() + val autofillManager: AutofillManager = mock() + doReturn(autofillManager).`when`(context).getSystemService(AutofillManager::class.java) + doReturn(false).`when`(autofillManager).hasEnabledAutofillServices() + + assertFalse(AutofillUseCases(sdkVersion = 21).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 22).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 23).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 24).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 25).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 26).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 27).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 28).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 29).isEnabled(context)) + assertFalse(AutofillUseCases(sdkVersion = 30).isEnabled(context)) + } + + @Test + fun testEnable() { + val context: Context = mock() + + AutofillUseCases(sdkVersion = 21).enable(context) + verify(context, never()).startActivity(any()) + reset(context) + + AutofillUseCases(sdkVersion = 22).enable(context) + verify(context, never()).startActivity(any()) + reset(context) + + AutofillUseCases(sdkVersion = 23).enable(context) + verify(context, never()).startActivity(any()) + reset(context) + + AutofillUseCases(sdkVersion = 24).enable(context) + verify(context, never()).startActivity(any()) + reset(context) + + AutofillUseCases(sdkVersion = 25).enable(context) + verify(context, never()).startActivity(any()) + reset(context) + + AutofillUseCases(sdkVersion = 26).enable(context) + verify(context).startActivity(any()) + reset(context) + + AutofillUseCases(sdkVersion = 27).enable(context) + verify(context).startActivity(any()) + reset(context) + + AutofillUseCases(sdkVersion = 28).enable(context) + verify(context).startActivity(any()) + reset(context) + + AutofillUseCases(sdkVersion = 29).enable(context) + verify(context).startActivity(any()) + reset(context) + + AutofillUseCases(sdkVersion = 30).enable(context) + verify(context).startActivity(any()) + reset(context) + } + + @Test + fun testDisable() { + val context: Context = mock() + val autofillManager: AutofillManager = mock() + doReturn(autofillManager).`when`(context).getSystemService(AutofillManager::class.java) + + AutofillUseCases(sdkVersion = 21).disable(context) + verify(autofillManager, never()).disableAutofillServices() + reset(autofillManager) + + AutofillUseCases(sdkVersion = 22).disable(context) + verify(autofillManager, never()).disableAutofillServices() + reset(autofillManager) + + AutofillUseCases(sdkVersion = 23).disable(context) + verify(autofillManager, never()).disableAutofillServices() + reset(autofillManager) + + AutofillUseCases(sdkVersion = 24).disable(context) + verify(autofillManager, never()).disableAutofillServices() + reset(autofillManager) + + AutofillUseCases(sdkVersion = 25).disable(context) + verify(autofillManager, never()).disableAutofillServices() + reset(autofillManager) + + AutofillUseCases(sdkVersion = 26).disable(context) + verify(autofillManager).disableAutofillServices() + reset(autofillManager) + + AutofillUseCases(sdkVersion = 27).disable(context) + verify(autofillManager).disableAutofillServices() + reset(autofillManager) + + AutofillUseCases(sdkVersion = 28).disable(context) + verify(autofillManager).disableAutofillServices() + reset(autofillManager) + + AutofillUseCases(sdkVersion = 29).disable(context) + verify(autofillManager).disableAutofillServices() + reset(autofillManager) + + AutofillUseCases(sdkVersion = 30).disable(context) + verify(autofillManager).disableAutofillServices() + reset(autofillManager) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/handler/FillRequestHandlerTest.kt b/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/handler/FillRequestHandlerTest.kt new file mode 100644 index 0000000000..32e825b931 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/handler/FillRequestHandlerTest.kt @@ -0,0 +1,235 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.handler + +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.runTest +import mozilla.components.concept.storage.Login +import mozilla.components.concept.storage.LoginsStorage +import mozilla.components.feature.autofill.AutofillConfiguration +import mozilla.components.feature.autofill.facts.AutofillFacts +import mozilla.components.feature.autofill.response.fill.FillResponseBuilder +import mozilla.components.feature.autofill.response.fill.LoginFillResponseBuilder +import mozilla.components.feature.autofill.test.createMockStructure +import mozilla.components.feature.autofill.ui.AbstractAutofillConfirmActivity +import mozilla.components.feature.autofill.ui.AbstractAutofillSearchActivity +import mozilla.components.feature.autofill.ui.AbstractAutofillUnlockActivity +import mozilla.components.feature.autofill.verify.CredentialAccessVerifier +import mozilla.components.lib.publicsuffixlist.PublicSuffixList +import mozilla.components.support.base.Component +import mozilla.components.support.base.facts.Action +import mozilla.components.support.base.facts.processor.CollectionProcessor +import mozilla.components.support.test.any +import mozilla.components.support.test.mock +import mozilla.components.support.test.robolectric.testContext +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotNull +import org.junit.Assert.assertNull +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.ArgumentMatchers.anyString +import org.mockito.Mockito.doReturn +import org.mockito.Mockito.`when` +import org.robolectric.RobolectricTestRunner +import java.util.UUID + +@ExperimentalCoroutinesApi // for createTestCase +@RunWith(RobolectricTestRunner::class) +internal class FillRequestHandlerTest { + @Test + fun `App - Twitter - With credentials`() { + CollectionProcessor.withFactCollection { facts -> + val credentials = generateRandomLoginFor("twitter.com") + + createTestCase<LoginFillResponseBuilder>( + filename = "fixtures/app_twitter.xml", + packageName = "com.twitter.android", + logins = mapOf(credentials), + assertThat = { builder -> + assertNotNull(builder!!) + assertEquals(1, builder.logins.size) + assertEquals(credentials.second, builder.logins[0]) + assertEquals(false, builder.needsConfirmation) + }, + ) + + assertEquals(1, facts.size) + facts[0].apply { + assertEquals(Component.FEATURE_AUTOFILL, component) + assertEquals(Action.SYSTEM, action) + assertEquals(AutofillFacts.Items.AUTOFILL_REQUEST, item) + assertEquals(2, metadata?.size) + assertEquals(true, metadata?.get(AutofillFacts.Metadata.HAS_MATCHING_LOGINS)) + assertEquals(false, metadata?.get(AutofillFacts.Metadata.NEEDS_CONFIRMATION)) + } + } + } + + @Test + fun `App - Twitter - Without credentials`() { + CollectionProcessor.withFactCollection { facts -> + createTestCase<LoginFillResponseBuilder>( + filename = "fixtures/app_twitter.xml", + packageName = "com.twitter.android", + logins = emptyMap(), + assertThat = { builder -> + assertNotNull(builder!!) + assertEquals(0, builder.logins.size) + assertEquals(false, builder.needsConfirmation) + }, + ) + + assertEquals(1, facts.size) + facts[0].apply { + assertEquals(Component.FEATURE_AUTOFILL, component) + assertEquals(Action.SYSTEM, action) + assertEquals(AutofillFacts.Items.AUTOFILL_REQUEST, item) + assertEquals(2, metadata?.size) + assertEquals(false, metadata?.get(AutofillFacts.Metadata.HAS_MATCHING_LOGINS)) + assertEquals(false, metadata?.get(AutofillFacts.Metadata.NEEDS_CONFIRMATION)) + } + } + } + + @Test + fun `App - Expensify`() { + createTestCase<LoginFillResponseBuilder>( + filename = "fixtures/app_expensify.xml", + packageName = "org.me.mobiexpensifyg", + logins = mapOf( + generateRandomLoginFor("expensify.com"), + ), + assertThat = { builder -> + // Unfortunately we are not able to link the app and the website yet. + assertNull(builder) + }, + ) + } + + @Test + fun `App - Facebook`() { + val credentials = generateRandomLoginFor("facebook.com") + createTestCase<LoginFillResponseBuilder>( + filename = "fixtures/app_facebook.xml", + packageName = "com.facebook.katana", + logins = mapOf(credentials), + assertThat = { builder -> + assertNotNull(builder!!) + assertEquals(1, builder.logins.size) + assertEquals(credentials.second, builder.logins[0]) + }, + ) + } + + @Test + fun `App - Facebook Lite`() { + val credentials = generateRandomLoginFor("facebook.com") + createTestCase<LoginFillResponseBuilder>( + filename = "fixtures/app_facebook_lite.xml", + packageName = "com.facebook.lite", + logins = mapOf(credentials), + assertThat = { builder -> + assertNotNull(builder!!) + assertEquals(1, builder.logins.size) + assertEquals(credentials.second, builder.logins[0]) + }, + ) + } + + @Test + fun `App - Messenger Lite`() { + val credentials = generateRandomLoginFor("facebook.com") + createTestCase<LoginFillResponseBuilder>( + filename = "fixtures/app_messenger_lite.xml", + packageName = "com.facebook.mlite", + logins = mapOf(credentials), + assertThat = { builder -> + assertNotNull(builder!!) + assertEquals(1, builder.logins.size) + assertEquals(credentials.second, builder.logins[0]) + }, + ) + } + + @Test + fun `Browser - Fenix Nightly - amazon-co-uk`() { + val credentials = generateRandomLoginFor("amazon.co.uk") + createTestCase<LoginFillResponseBuilder>( + filename = "fixtures/browser_fenix_amazon.co.uk.xml", + packageName = "org.mozilla.fenix", + logins = mapOf(credentials), + assertThat = { builder -> + assertNotNull(builder!!) + assertEquals(1, builder.logins.size) + assertEquals(credentials.second, builder.logins[0]) + }, + ) + } + + @Test + fun `Browser - WebView - gmail`() { + val credentials = generateRandomLoginFor("accounts.google.com") + createTestCase<LoginFillResponseBuilder>( + filename = "fixtures/browser_webview_gmail.xml", + packageName = "org.chromium.webview_shell", + logins = mapOf(credentials), + assertThat = { builder -> + assertNotNull(builder!!) + assertEquals(0, builder.logins.size) + assertEquals(false, builder.needsConfirmation) + }, + ) + } +} + +@ExperimentalCoroutinesApi +private fun <B : FillResponseBuilder> FillRequestHandlerTest.createTestCase( + filename: String, + packageName: String, + logins: Map<String, Login>, + assertThat: (B?) -> Unit, + canVerifyRelationship: Boolean = true, +) = runTest { + val structure = createMockStructure(filename, packageName) + + val storage: LoginsStorage = mock() + `when`(storage.getByBaseDomain(anyString())).thenAnswer { invocation -> + val origin = invocation.getArgument(0) as String + println("MockStorage: Query password for $origin") + logins[origin]?.let { listOf(it) } ?: emptyList<Login>() + } + + val verifier: CredentialAccessVerifier = mock() + doReturn(canVerifyRelationship).`when`(verifier).hasCredentialRelationship(any(), any(), any()) + + val configuration = AutofillConfiguration( + storage = storage, + publicSuffixList = PublicSuffixList(testContext), + unlockActivity = AbstractAutofillUnlockActivity::class.java, + confirmActivity = AbstractAutofillConfirmActivity::class.java, + searchActivity = AbstractAutofillSearchActivity::class.java, + applicationName = "Test", + httpClient = mock(), + verifier = verifier, + ) + + val handler = FillRequestHandler( + testContext, + configuration, + ) + + val builder = handler.handle(structure) + @Suppress("UNCHECKED_CAST") + assertThat(builder as? B) +} + +private fun generateRandomLoginFor(origin: String): Pair<String, Login> { + return origin to Login( + guid = UUID.randomUUID().toString(), + origin = origin, + username = "user" + UUID.randomUUID().toString(), + password = "password" + UUID.randomUUID().toString(), + ) +} diff --git a/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/structure/ParsedStructureTest.kt b/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/structure/ParsedStructureTest.kt new file mode 100644 index 0000000000..c42381e5f9 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/structure/ParsedStructureTest.kt @@ -0,0 +1,52 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.structure + +import android.os.Parcel +import android.view.autofill.AutofillId +import androidx.test.ext.junit.runners.AndroidJUnit4 +import org.junit.Assert.assertEquals +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class ParsedStructureTest { + @Test + fun `Given a ParsedStructure WHEN parcelling and unparcelling it THEN get the same object`() { + // AutofillId constructor is private but it can be constructed from a parcel. + // Use this route instead of mocking to avoid errors like below: + // org.robolectric.shadows.ShadowParcel$UnreliableBehaviorError: Looking for Integer at position 72, found String + val usernameIdAutofillIdParcel = Parcel.obtain().apply { + writeInt(1) // viewId + writeInt(3) // flags + writeInt(78) // virtualIntId + setDataPosition(0) // be a good citizen + } + val passwordIdAutofillParcel = Parcel.obtain().apply { + writeInt(11) // viewId + writeInt(31) // flags + writeInt(781) // virtualIntId + setDataPosition(0) // be a good citizen + } + val parsedStructure = ParsedStructure( + usernameId = AutofillId.CREATOR.createFromParcel(usernameIdAutofillIdParcel), + passwordId = AutofillId.CREATOR.createFromParcel(passwordIdAutofillParcel), + packageName = "test", + webDomain = "https://mozilla.org", + ) + + // Write the object in a new Parcel. + val parcel = Parcel.obtain() + parsedStructure.writeToParcel(parcel, 0) + + // Reset Parcel r/w position to be read from beginning afterwards. + parcel.setDataPosition(0) + + // Reconstruct the original object from the Parcel. + val result = ParsedStructure(parcel) + + assertEquals(parsedStructure, result) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/test/DOMNavigator.kt b/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/test/DOMNavigator.kt new file mode 100644 index 0000000000..86f8517850 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/test/DOMNavigator.kt @@ -0,0 +1,133 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.test + +import android.view.autofill.AutofillId +import mozilla.components.feature.autofill.structure.AutofillNodeNavigator +import mozilla.components.feature.autofill.structure.ParsedStructure +import mozilla.components.support.test.mock +import org.w3c.dom.Document +import org.w3c.dom.Element +import java.io.File +import java.util.WeakHashMap +import javax.xml.parsers.DocumentBuilderFactory + +/** + * Alternative [AutofillNodeNavigator] implementation for reading a captured view structure from an + * XML file for testing purposes. + */ +internal class DOMNavigator( + file: File, + override val activityPackageName: String, +) : AutofillNodeNavigator<Element, AutofillId> { + + override fun currentText(node: Element): String? { + return node.getAttribute("autofillValue") + } + + private val document: Document + + init { + val db = DocumentBuilderFactory.newInstance().newDocumentBuilder() + file.inputStream().use { + document = db.parse(it) + } + } + + override val rootNodes: List<Element> + get() = listOf(document.documentElement) + + override fun childNodes(node: Element): List<Element> { + val children = node.childNodes + return (0 until children.length) + .map { children.item(it) } + .filter { it is Element } + .map { it as Element } + } + + override fun clues(node: Element): Iterable<CharSequence> { + val attributes = node.attributes + return (0 until attributes.length) + .map { attributes.item(it) } + .mapNotNull { if (it.nodeName != "hint") it.nodeValue else null } + } + + override fun autofillId(node: Element): AutofillId? { + val rawId = if (isEditText(node) || isHtmlInputField(node)) { + attr(node, "autofillId") ?: clues(node).joinToString("|") + } else { + null + } + + return rawId?.let { getOrCreateAutofillIdMock(it) } + } + + override fun isEditText(node: Element): Boolean = + tagName(node) == "EditText" || (inputType(node) and AutofillNodeNavigator.editTextMask) > 0 + + override fun isHtmlInputField(node: Element) = tagName(node) == "input" + + private fun tagName(node: Element) = node.tagName + + override fun isHtmlForm(node: Element): Boolean = node.tagName == "form" + + fun attr(node: Element, name: String) = node.attributes.getNamedItem(name)?.nodeValue + + override fun isFocused(node: Element) = attr(node, "focus") == "true" + + override fun isVisible(node: Element) = attr(node, "visibility")?.let { it == "0" } ?: true + + override fun packageName(node: Element) = attr(node, "idPackage") + + override fun webDomain(node: Element) = attr(node, "webDomain") + + override fun isButton(node: Element): Boolean { + when (node.tagName) { + "Button" -> return true + "button" -> return true + } + + return when (attr(node, "type")) { + "submit" -> true + "button" -> true + else -> false + } + } + + override fun inputType(node: Element): Int = + attr(node, "inputType")?.let { + Integer.parseInt(it, 16) + } ?: 0 + + override fun build( + usernameId: AutofillId?, + passwordId: AutofillId?, + webDomain: String?, + packageName: String, + ): ParsedStructure { + return ParsedStructure( + usernameId, + passwordId, + webDomain, + packageName, + ) + } +} + +private val autofillIdMapping = WeakHashMap<AutofillId, String>() + +private fun getOrCreateAutofillIdMock(id: String): AutofillId { + val existingEntry = autofillIdMapping.entries.firstOrNull { entry -> entry.value == id } + if (existingEntry != null) { + return existingEntry.key + } + + val autofillId: AutofillId = mock() + autofillIdMapping[autofillId] = id + return autofillId +} + +internal val AutofillId.originalId: String + get() = autofillIdMapping[this] ?: throw AssertionError("Unknown AutofillId instance") diff --git a/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/test/MockStructure.kt b/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/test/MockStructure.kt new file mode 100644 index 0000000000..416a07ef67 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/java/mozilla/components/feature/autofill/test/MockStructure.kt @@ -0,0 +1,32 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package mozilla.components.feature.autofill.test + +import android.view.autofill.AutofillId +import kotlinx.coroutines.ExperimentalCoroutinesApi +import mozilla.components.feature.autofill.handler.FillRequestHandlerTest +import mozilla.components.feature.autofill.structure.AutofillNodeNavigator +import mozilla.components.feature.autofill.structure.RawStructure +import java.io.File + +@ExperimentalCoroutinesApi +internal fun FillRequestHandlerTest.createMockStructure(filename: String, packageName: String): RawStructure { + val classLoader = javaClass.classLoader ?: throw RuntimeException("No class loader") + val resource = classLoader.getResource(filename) ?: throw RuntimeException("Resource not found") + val file = File(resource.path) + + return MockStructure(packageName, file) +} + +private class MockStructure( + private val packageName: String, + private val file: File, +) : RawStructure { + override val activityPackageName: String = packageName + + override fun createNavigator(): AutofillNodeNavigator<*, AutofillId> { + return DOMNavigator(file, packageName) + } +} diff --git a/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_expensify.xml b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_expensify.xml new file mode 100644 index 0000000000..0db81b3602 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_expensify.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<FrameLayout> + <LinearLayout idEntry="action_bar_root" idPackage="org.me.mobiexpensifyg" idType="id"> + <View idEntry="action_mode_bar_stub" idPackage="org.me.mobiexpensifyg" idType="id"/> + <RelativeLayout idEntry="content" idPackage="org.me.mobiexpensifyg" idType="id"> + <ImageSwitcher idEntry="background_image_view" idPackage="org.me.mobiexpensifyg" idType="id"/> + <FrameLayout idEntry="form_container" idPackage="org.me.mobiexpensifyg" idType="id"> + <LinearLayout idEntry="text_input_layout" idPackage="org.me.mobiexpensifyg" idType="id"> + <EditText idEntry="edit_text" idPackage="org.me.mobiexpensifyg" idType="id" hint="Email" inputType="21"/> + </LinearLayout> + <View idEntry="underline_view" idPackage="org.me.mobiexpensifyg" idType="id"/> + <TextView idEntry="error_text" idPackage="org.me.mobiexpensifyg" idType="id"/> + <TextView idEntry="cancel_text" idPackage="org.me.mobiexpensifyg" idType="id"/> + <FrameLayout idEntry="submit_button" idPackage="org.me.mobiexpensifyg" idType="id"> + <FrameLayout idEntry="container" idPackage="org.me.mobiexpensifyg" idType="id"> + <TextView idEntry="title_text" idPackage="org.me.mobiexpensifyg" idType="id"/> + <ProgressBar idEntry="progress_bar" idPackage="org.me.mobiexpensifyg" idType="id"/> + </FrameLayout> + </FrameLayout> + </FrameLayout> + <LinearLayout idEntry="navigation_element_container" idPackage="org.me.mobiexpensifyg" idType="id"> + <TextSwitcher idEntry="navigation_element_switcher" idPackage="org.me.mobiexpensifyg" idType="id"> + <TextView idEntry="navigation_element_text1" idPackage="org.me.mobiexpensifyg" idType="id"/> + <TextView idEntry="navigation_element_text2" idPackage="org.me.mobiexpensifyg" idType="id"/> + </TextSwitcher> + </LinearLayout> + <TextSwitcher idEntry="expensify_motto_switcher" idPackage="org.me.mobiexpensifyg" idType="id"> + <TextView/> + <TextView/> + </TextSwitcher> + <View idEntry="footer_separator" idPackage="org.me.mobiexpensifyg" idType="id"/> + <TextSwitcher idEntry="expensify_ambassador_name_switcher" idPackage="org.me.mobiexpensifyg" idType="id"> + <TextView/> + <TextView/> + </TextSwitcher> + <TextSwitcher idEntry="expensify_customer_since_switcher" idPackage="org.me.mobiexpensifyg" idType="id"> + <TextView/> + <TextView/> + </TextSwitcher> + <TextView idEntry="privacy_policy_text" idPackage="org.me.mobiexpensifyg" idType="id"/> + </RelativeLayout> + </LinearLayout> +</FrameLayout>
\ No newline at end of file diff --git a/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_facebook.xml b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_facebook.xml new file mode 100644 index 0000000000..35cb055f52 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_facebook.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<FrameLayout> + <LinearLayout idEntry="(name removed)" idPackage="com.facebook.katana" idType="id"> + <FrameLayout idEntry="(name removed)" idPackage="com.facebook.katana" idType="id"> + <FrameLayout idEntry="(name removed)" idPackage="com.facebook.katana" idType="id"> + <EditText inputType="21" autofillId="autofillId-username"/> + <EditText inputType="81"/> + </FrameLayout> + </FrameLayout> + </LinearLayout> +</FrameLayout> diff --git a/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_facebook_lite.xml b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_facebook_lite.xml new file mode 100644 index 0000000000..ceae242125 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_facebook_lite.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<FrameLayout> + <LinearLayout> + <View idEntry="action_mode_bar_stub" idPackage="android" idType="id"/> + <FrameLayout idEntry="content" idPackage="android" idType="id"> + <FrameLayout idEntry="main_layout" idPackage="com.facebook.lite" idType="id"> + <ImageView idEntry="image_overlay_under_content" idPackage="com.facebook.lite" idType="id"/> + <ViewGroup> + <ViewGroup/> + <ViewGroup/> + <MultiAutoCompleteTextView autofillValue="" inputType="80001" autofillId="autofillId-username"/> + <ViewGroup/> + <MultiAutoCompleteTextView inputType="80081"/> + <ViewGroup> + <ViewGroup/> + </ViewGroup> + <ViewGroup> + <ViewGroup/> + </ViewGroup> + <ViewGroup/> + <ViewGroup> + <ViewGroup/> + </ViewGroup> + <ViewGroup> + <ViewGroup/> + </ViewGroup> + <ViewGroup/> + <ViewGroup/> + <ViewGroup> + <ViewGroup/> + </ViewGroup> + <ViewGroup> + <ViewGroup/> + </ViewGroup> + <ViewGroup> + <ViewGroup/> + </ViewGroup> + <View/> + <View/> + </ViewGroup> + <ImageView idEntry="image_overlay_over_content" idPackage="com.facebook.lite" idType="id"/> + <View idEntry="webview_stub" idPackage="com.facebook.lite" idType="id"/> + <View idEntry="inline_textbox_stub" idPackage="com.facebook.lite" idType="id"/> + <View idEntry="floating_textbox_stub" idPackage="com.facebook.lite" idType="id"/> + <View idEntry="screen_transition_loading_view_stub" idPackage="com.facebook.lite" idType="id"/> + <View idEntry="zoomview_stub" idPackage="com.facebook.lite" idType="id"/> + <View idEntry="videoview_stub" idPackage="com.facebook.lite" idType="id"/> + <View idEntry="dummy_surfaceview" idPackage="com.facebook.lite" idType="id"/> + <View idEntry="livestreamingview_stub" idPackage="com.facebook.lite" idType="id"/> + <View idEntry="snack_bar_view_stub" idPackage="com.facebook.lite" idType="id"/> + </FrameLayout> + </FrameLayout> + </LinearLayout> + <View idEntry="navigationBarBackground" idPackage="android" idType="id"/> + <View idEntry="statusBarBackground" idPackage="android" idType="id"/> +</FrameLayout> diff --git a/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_messenger_lite.xml b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_messenger_lite.xml new file mode 100644 index 0000000000..946a2bdc0f --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_messenger_lite.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<FrameLayout> + <LinearLayout idEntry="action_bar_root" idPackage="com.facebook.mlite" idType="id"> + <View idEntry="action_mode_bar_stub" idPackage="com.facebook.mlite" idType="id"/> + <ScrollView idEntry="content_view" idPackage="com.facebook.mlite" idType="id"> + <LinearLayout idEntry="root_view" idPackage="com.facebook.mlite" idType="id"> + <LinearLayout idEntry="sso_confirmation_form" idPackage="com.facebook.mlite" idType="id"/> + <LinearLayout idEntry="username_password_form" idPackage="com.facebook.mlite" idType="id"> + <TextView idEntry="login_message" idPackage="com.facebook.mlite" idType="id"/> + <LinearLayout idEntry="login_username_text" idPackage="com.facebook.mlite" idType="id"> + <EditText inputType="1" autofillId="autofillId-username"/> + </LinearLayout> + <LinearLayout idEntry="login_password_edit_text" idPackage="com.facebook.mlite" idType="id"> + <EditText inputType="81"/> + </LinearLayout> + <TextView idEntry="login_login_button" idPackage="com.facebook.mlite" idType="id"/> + <TextView idEntry="create_account_button" idPackage="com.facebook.mlite" idType="id"/> + <TextView idEntry="bottom_create_account_message" idPackage="com.facebook.mlite" idType="id"/> + <TextView idEntry="login_forgot_password_button" idPackage="com.facebook.mlite" idType="id"/> + </LinearLayout> + <LinearLayout idEntry="login_approval_form" idPackage="com.facebook.mlite" idType="id"/> + <FrameLayout idEntry="progress_screen" idPackage="com.facebook.mlite" idType="id"/> + </LinearLayout> + </ScrollView> + </LinearLayout> +</FrameLayout> diff --git a/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_twitter.xml b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_twitter.xml new file mode 100644 index 0000000000..7d092fa1d1 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/app_twitter.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<FrameLayout> + <LinearLayout> + <View idEntry="action_mode_bar_stub" idPackage="android" idType="id" /> + <FrameLayout> + <FrameLayout idEntry="action_bar_root" idPackage="com.twitter.android" idType="id"> + <FrameLayout idEntry="content" idPackage="android" idType="id"> + <LinearLayout> + <LinearLayout idEntry="toolbar_container" idPackage="com.twitter.android" idType="id"> + <FrameLayout idEntry="status_message_container" idPackage="com.twitter.android" idType="id" /> + <ViewGroup idEntry="toolbar" idPackage="com.twitter.android" idType="id"> + <ViewGroup> + <ImageView /> + </ViewGroup> + <TextView /> + <RelativeLayout> + <ImageView /> + <Button idEntry="signup" idPackage="com.twitter.android" idType="id" /> + </RelativeLayout> + </ViewGroup> + </LinearLayout> + <ScrollView> + <LinearLayout> + <LinearLayout idEntry="signup_header" idPackage="com.twitter.android" idType="id"> + <TextView idEntry="header_title" idPackage="com.twitter.android" idType="id" /> + <TextView idEntry="header_subtitle" idPackage="com.twitter.android" idType="id" /> + </LinearLayout> + <LinearLayout idEntry="login_form" idPackage="com.twitter.android" idType="id"> + <EditText idEntry="login_identifier" idPackage="com.twitter.android" idType="id" autofillValue="" autofillId="autofillId-username" /> + <EditText idEntry="login_password" idPackage="com.twitter.android" idType="id" /> + <TextView idEntry="password_reset" idPackage="com.twitter.android" idType="id" /> + </LinearLayout> + </LinearLayout> + </ScrollView> + <FrameLayout> + <View /> + <Button idEntry="login_login" idPackage="com.twitter.android" idType="id" /> + </FrameLayout> + <WebView idEntry="js_inst" idPackage="com.twitter.android" idType="id" /> + </LinearLayout> + </FrameLayout> + <View idEntry="action_mode_bar_stub" idPackage="com.twitter.android" idType="id" /> + </FrameLayout> + </FrameLayout> + </LinearLayout> + <View idEntry="navigationBarBackground" idPackage="android" idType="id" /> + <View idEntry="statusBarBackground" idPackage="android" idType="id" /> +</FrameLayout> diff --git a/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/browser_fenix_amazon.co.uk.xml b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/browser_fenix_amazon.co.uk.xml new file mode 100644 index 0000000000..0faac1f20a --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/browser_fenix_amazon.co.uk.xml @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<FrameLayout> + <LinearLayout idEntry="action_bar_root" idPackage="org.mozilla.firefox" idType="id"> + <View idEntry="action_mode_bar_stub" idPackage="org.mozilla.firefox" idType="id"/> + <FrameLayout idEntry="container" idPackage="org.mozilla.firefox" idType="id"> + <ViewGroup idEntry="browserLayout" idPackage="org.mozilla.firefox" idType="id"> + <ViewGroup idEntry="swipeRefresh" idPackage="org.mozilla.firefox" idType="id"> + <FrameLayout idEntry="engineView" idPackage="org.mozilla.firefox" idType="id"> + <form webDomain="www.amazon.co.uk" data-enable-mobile-account-js="true" action="https://www.amazon.co.uk/ap/register" method="post" data-fwcim-id="369de96d" novalidate="" id="ap_register_form" name="register" class="ap_ango_default fwcim-form auth-validate-form auth-clearable-form"> + <input webDomain="www.amazon.co.uk" name="appActionToken" type="hidden"/> + <input webDomain="www.amazon.co.uk" name="appAction" type="hidden"/> + <input webDomain="www.amazon.co.uk" name="openid.return_to" type="hidden"/> + <input webDomain="www.amazon.co.uk" name="prevRID" type="hidden"/> + <input webDomain="www.amazon.co.uk" name="workflowState" type="hidden"/> + <input webDomain="www.amazon.co.uk" id="auth-country-picker" name="countryCode" type="hidden" class="auth-country-picker" disabled="disabled"/> + <input webDomain="www.amazon.co.uk" autofillHints="emailAddress" inputType="21" autocorrect="off" id="ap_email" name="email" type="email" maxlength="64" placeholder="Mobile number or email" autocapitalize="off"/> + <input webDomain="www.amazon.co.uk" autofillHints="password" inputType="e1" autocorrect="off" autocomplete="off" id="ap_password" name="password" type="password" maxlength="1024" placeholder="Create a password" autocapitalize="off"/> + <input webDomain="www.amazon.co.uk" id="ap_show_password_checked" name="showPasswordChecked" type="hidden"/> + <input webDomain="www.amazon.co.uk" id="auth-register-show-password-checkbox" name="" type="checkbox" checked=""/> + <input webDomain="www.amazon.co.uk" id="continue" type="submit" class="a-button-input" aria-labelledby="auth-continue-announce"/> + </form> + <form webDomain="www.amazon.co.uk" action="https://www.amazon.co.uk/ap/signin" method="post" data-fwcim-id="4a0d320d" novalidate="" id="ap_login_form" name="signIn" class="auth-validate-form fwcim-form auth-clearable-form"> + <input webDomain="www.amazon.co.uk" name="appActionToken" type="hidden"/> + <input webDomain="www.amazon.co.uk" name="appAction" type="hidden"/> + <input webDomain="www.amazon.co.uk" name="openid.return_to" type="hidden"/> + <input webDomain="www.amazon.co.uk" name="prevRID" type="hidden"/> + <input webDomain="www.amazon.co.uk" name="workflowState" type="hidden"/> + <input webDomain="www.amazon.co.uk" autofillHints="emailAddress" inputType="21" autocorrect="off" id="ap_email_login" name="email" type="email" maxlength="128" placeholder="Email (phone for mobile accounts)" autocapitalize="off" focus="true" autofillId="autofillId-username"/> + <input webDomain="www.amazon.co.uk" autofillHints="password" inputType="e1" id="ap-credential-autofill-hint" name="password" type="password" maxlength="1024" autofillId="autofillId-password"/> + <input webDomain="www.amazon.co.uk" id="continue" type="submit" class="a-button-input" aria-labelledby="continue-announce"/> + </form> + </FrameLayout> + </ViewGroup> + <FrameLayout idEntry="nestedScrollQuickAction" idPackage="org.mozilla.firefox" idType="id"> + <ViewGroup idEntry="quick_action_sheet" idPackage="org.mozilla.firefox" idType="id"> + <ViewGroup idEntry="quick_action_sheet" idPackage="org.mozilla.firefox" idType="id"> + <View idEntry="quick_action_sheet_faded_handle" idPackage="org.mozilla.firefox" idType="id"/> + <LinearLayout idEntry="quick_action_buttons_layout" idPackage="org.mozilla.firefox" idType="id"> + <Button idEntry="quick_action_share" idPackage="org.mozilla.firefox" idType="id"/> + <Button idEntry="quick_action_downloads" idPackage="org.mozilla.firefox" idType="id"/> + <Button idEntry="quick_action_bookmark" idPackage="org.mozilla.firefox" idType="id"/> + <Button idEntry="quick_action_appearance" idPackage="org.mozilla.firefox" idType="id"/> + <Button idEntry="quick_action_open_app_link" idPackage="org.mozilla.firefox" idType="id"/> + <Button idEntry="quick_action_read" idPackage="org.mozilla.firefox" idType="id"/> + </LinearLayout> + <View idEntry="quick_action_overlay" idPackage="org.mozilla.firefox" idType="id"/> + </ViewGroup> + </ViewGroup> + </FrameLayout> + <View idEntry="stubFindInPage" idPackage="org.mozilla.firefox" idType="id"/> + <ViewGroup idEntry="toolbar" idPackage="org.mozilla.firefox" idType="id"> + <TextView idEntry="mozac_browser_toolbar_title_view" idPackage="org.mozilla.firefox" idType="id"/> + <TextView idEntry="mozac_browser_toolbar_url_view" idPackage="org.mozilla.firefox" idType="id" hint="Search or enter address"/> + <FrameLayout idEntry="counter_root" idPackage="org.mozilla.firefox" idType="id"> + <TextView idEntry="counter_text" idPackage="org.mozilla.firefox" idType="id"/> + </FrameLayout> + <EditText idEntry="mozac_browser_toolbar_edit_url_view" idPackage="org.mozilla.firefox" idType="id" hint="Search or enter address" inputType="11"/> + <ImageView idEntry="mozac_browser_toolbar_clear_view" idPackage="org.mozilla.firefox" idType="id"/> + </ViewGroup> + <ViewGroup idEntry="readerViewControlsBar" idPackage="org.mozilla.firefox" idType="id"/> + </ViewGroup> + </FrameLayout> + <ViewGroup idEntry="navigationToolbar" idPackage="org.mozilla.firefox" idType="id"/> + </LinearLayout> +</FrameLayout>
\ No newline at end of file diff --git a/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/browser_webview_gmail.xml b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/browser_webview_gmail.xml new file mode 100644 index 0000000000..6fb4318b23 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/resources/fixtures/browser_webview_gmail.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> +<FrameLayout> + <TextView idEntry="title" idPackage="android" idType="id" /> + <LinearLayout idEntry="container" idPackage="org.chromium.webview_shell" idType="id"> + <EditText idEntry="url_field" idPackage="org.chromium.webview_shell" idType="id" /> + <form webDomain="accounts.google.com"> + <input autofillHints="username" name="identifier" type="email" label="Forgot email?" id="identifierId" autofillId="autofillId-username"/> + <input name="hiddenPassword" type="password" label="Forgot email?" /> + <input autofillHints="off" name="ca" type="text" label="Forgot email?" /> + </form> + </LinearLayout> +</FrameLayout>
\ No newline at end of file diff --git a/mobile/android/android-components/components/feature/autofill/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/mobile/android/android-components/components/feature/autofill/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 0000000000..cf1c399ea8 --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1,2 @@ +mock-maker-inline +// This allows mocking final classes (classes are final by default in Kotlin) diff --git a/mobile/android/android-components/components/feature/autofill/src/test/resources/robolectric.properties b/mobile/android/android-components/components/feature/autofill/src/test/resources/robolectric.properties new file mode 100644 index 0000000000..932b01b9eb --- /dev/null +++ b/mobile/android/android-components/components/feature/autofill/src/test/resources/robolectric.properties @@ -0,0 +1 @@ +sdk=28 |