From 6c5be884323df755e160ea17a01fb8dcc53207e6 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 23 Nov 2020 16:52:36 +0100 Subject: [PATCH 001/113] Fix biometric error message when the keystore is not accessible --- .../keepass/biometric/BiometricUnlockDatabaseHelper.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt index 797783669..7c12160d8 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt @@ -196,10 +196,10 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { val ivSpecValue = Base64.encodeToString(spec.iv, Base64.NO_WRAP) biometricUnlockCallback?.handleEncryptedResult(encryptedBase64, ivSpecValue) } - } catch (e: Exception) { + val exception = Exception(context.getString(R.string.keystore_not_accessible), e) Log.e(TAG, "Unable to encrypt data", e) - biometricUnlockCallback?.onBiometricException(e) + biometricUnlockCallback?.onBiometricException(exception) } } @@ -248,8 +248,9 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { Log.e(TAG, "Unable to decrypt data", badPaddingException) biometricUnlockCallback?.onInvalidKeyException(badPaddingException) } catch (e: Exception) { - Log.e(TAG, "Unable to decrypt data", e) - biometricUnlockCallback?.onBiometricException(e) + val exception = Exception(context.getString(R.string.keystore_not_accessible), e) + Log.e(TAG, "Unable to decrypt data", exception) + biometricUnlockCallback?.onBiometricException(exception) } } From 75f245c7dcacb6b30799f958699fc5141558207b Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 23 Nov 2020 19:14:44 +0100 Subject: [PATCH 002/113] Add device credential unlock --- .../keepass/activities/PasswordActivity.kt | 10 +-- .../biometric/AdvancedUnlockedManager.kt | 6 +- .../BiometricUnlockDatabaseHelper.kt | 84 +++++++++++-------- .../keepass/settings/PreferencesUtil.kt | 10 +++ app/src/main/res/values-fr/strings.xml | 2 +- app/src/main/res/values/donottranslate.xml | 2 + app/src/main/res/values/strings.xml | 7 +- .../res/xml/preferences_advanced_unlock.xml | 20 +++-- 8 files changed, 92 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt index 5c9498240..f53e8768c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt @@ -200,11 +200,11 @@ open class PasswordActivity : SpecialModeActivity() { onActionFinish = { actionTask, result -> when (actionTask) { ACTION_DATABASE_LOAD_TASK -> { - // Recheck biometric if error + // Recheck advanced unlock if error if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (PreferencesUtil.isBiometricUnlockEnable(this@PasswordActivity)) { + if (PreferencesUtil.isAdvancedUnlockEnable(this@PasswordActivity)) { // Stay with the same mode and init it - advancedUnlockedManager?.initBiometricMode() + advancedUnlockedManager?.initAdvancedUnlockMode() } } @@ -370,7 +370,7 @@ open class PasswordActivity : SpecialModeActivity() { } else { // Init Biometric elements if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (PreferencesUtil.isBiometricUnlockEnable(this)) { + if (PreferencesUtil.isAdvancedUnlockEnable(this)) { if (advancedUnlockedManager == null && databaseFileUri != null) { advancedUnlockedManager = AdvancedUnlockedManager(this, @@ -658,7 +658,7 @@ open class PasswordActivity : SpecialModeActivity() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !readOnlyEducationPerformed) { val biometricCanAuthenticate = BiometricUnlockDatabaseHelper.canAuthenticate(this) - PreferencesUtil.isBiometricUnlockEnable(applicationContext) + PreferencesUtil.isAdvancedUnlockEnable(applicationContext) && (biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED || biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS) && advancedUnlockInfoView != null && advancedUnlockInfoView?.visibility == View.VISIBLE && advancedUnlockInfoView?.unlockIconImageView != null diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index 796c144b0..30dd2019b 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -90,7 +90,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, val biometricCanAuthenticate = BiometricUnlockDatabaseHelper.canAuthenticate(context) allowOpenBiometricPrompt = true - if (!PreferencesUtil.isBiometricUnlockEnable(context) + if (!PreferencesUtil.isAdvancedUnlockEnable(context) || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE) { toggleMode(Mode.BIOMETRIC_UNAVAILABLE) @@ -136,7 +136,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, private fun toggleMode(newBiometricMode: Mode) { if (newBiometricMode != biometricMode) { biometricMode = newBiometricMode - initBiometricMode() + initAdvancedUnlockMode() } } @@ -292,7 +292,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, } @Synchronized - fun initBiometricMode() { + fun initAdvancedUnlockMode() { mAllowAdvancedUnlockMenu = false when (biometricMode) { Mode.BIOMETRIC_UNAVAILABLE -> initNotAvailable() diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt index 7c12160d8..7752ff822 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt @@ -29,11 +29,11 @@ import android.util.Base64 import android.util.Log import androidx.annotation.RequiresApi import androidx.biometric.BiometricManager -import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG -import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_WEAK +import androidx.biometric.BiometricManager.Authenticators.* import androidx.biometric.BiometricPrompt import androidx.fragment.app.FragmentActivity import com.kunzisoft.keepass.R +import com.kunzisoft.keepass.settings.PreferencesUtil import java.security.KeyStore import java.security.UnrecoverableKeyException import java.util.concurrent.Executors @@ -58,31 +58,7 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { var authenticationCallback: BiometricPrompt.AuthenticationCallback? = null var biometricUnlockCallback: BiometricUnlockCallback? = null - private val promptInfoStoreCredential = BiometricPrompt.PromptInfo.Builder().apply { - setTitle(context.getString(R.string.biometric_prompt_store_credential_title)) - setDescription(context.getString(R.string.biometric_prompt_store_credential_message)) - setConfirmationRequired(true) - // TODO device credential #102 #152 - /* - if (keyguardManager?.isDeviceSecure == true) - setDeviceCredentialAllowed(true) - else - */ - setNegativeButtonText(context.getString(android.R.string.cancel)) - }.build() - - private val promptInfoExtractCredential = BiometricPrompt.PromptInfo.Builder().apply { - setTitle(context.getString(R.string.biometric_prompt_extract_credential_title)) - //setDescription(context.getString(R.string.biometric_prompt_extract_credential_message)) - setConfirmationRequired(false) - // TODO device credential #102 #152 - /* - if (keyguardManager?.isDeviceSecure == true) - setDeviceCredentialAllowed(true) - else - */ - setNegativeButtonText(context.getString(android.R.string.cancel)) - }.build() + private val deviceCredentialUnlockEnable = PreferencesUtil.isDeviceCredentialUnlockEnable(context) val isKeyManagerInitialized: Boolean get() { @@ -139,6 +115,12 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { // Require the user to authenticate with a fingerprint to authorize every use // of the key .setUserAuthenticationRequired(true) + .apply { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R + && deviceCredentialUnlockEnable) { + setUserAuthenticationParameters(0, KeyProperties.AUTH_DEVICE_CREDENTIAL) + } + } .build()) keyGenerator?.generateKey() } @@ -164,13 +146,27 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { return } try { + // TODO if (keyguardManager?.isDeviceSecure == true) { getSecretKey()?.let { secretKey -> cipher?.init(Cipher.ENCRYPT_MODE, secretKey) initBiometricPrompt() - actionIfCypherInit.invoke(biometricPrompt, cryptoObject, promptInfoStoreCredential) - } + val promptInfoStoreCredential = BiometricPrompt.PromptInfo.Builder().apply { + setTitle(context.getString(R.string.biometric_prompt_store_credential_title)) + setDescription(context.getString(R.string.biometric_prompt_store_credential_message)) + setConfirmationRequired(true) + if (deviceCredentialUnlockEnable) { + setAllowedAuthenticators(DEVICE_CREDENTIAL) + } else { + setNegativeButtonText(context.getString(android.R.string.cancel)) + } + }.build() + + actionIfCypherInit.invoke(biometricPrompt, + cryptoObject, + promptInfoStoreCredential) + } } catch (unrecoverableKeyException: UnrecoverableKeyException) { Log.e(TAG, "Unable to initialize encrypt data", unrecoverableKeyException) biometricUnlockCallback?.onInvalidKeyException(unrecoverableKeyException) @@ -211,6 +207,7 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { return } try { + // TODO if (keyguardManager?.isDeviceSecure == true) { // important to restore spec here that was used for decryption val iv = Base64.decode(ivSpecValue, Base64.NO_WRAP) val spec = IvParameterSpec(iv) @@ -219,9 +216,22 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { cipher?.init(Cipher.DECRYPT_MODE, secretKey, spec) initBiometricPrompt() - actionIfCypherInit.invoke(biometricPrompt, cryptoObject, promptInfoExtractCredential) - } + val promptInfoExtractCredential = BiometricPrompt.PromptInfo.Builder().apply { + setTitle(context.getString(R.string.biometric_prompt_extract_credential_title)) + //setDescription(context.getString(R.string.biometric_prompt_extract_credential_message)) + setConfirmationRequired(false) + if (deviceCredentialUnlockEnable) { + setAllowedAuthenticators(DEVICE_CREDENTIAL) + } else { + setNegativeButtonText(context.getString(android.R.string.cancel)) + } + }.build() + + actionIfCypherInit.invoke(biometricPrompt, + cryptoObject, + promptInfoExtractCredential) + } } catch (unrecoverableKeyException: UnrecoverableKeyException) { Log.e(TAG, "Unable to initialize decrypt data", unrecoverableKeyException) deleteEntryKey() @@ -299,11 +309,19 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { fun canAuthenticate(context: Context): Int { return try { - BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG or DEVICE_CREDENTIAL) + } else { + BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG) + } } catch (e: Exception) { Log.e(TAG, "Unable to authenticate with strong biometric.", e) try { - BiometricManager.from(context).canAuthenticate(BIOMETRIC_WEAK) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + BiometricManager.from(context).canAuthenticate(BIOMETRIC_WEAK or DEVICE_CREDENTIAL) + } else { + BiometricManager.from(context).canAuthenticate(BIOMETRIC_WEAK) + } } catch (e: Exception) { Log.e(TAG, "Unable to authenticate with weak biometric.", e) BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt index a8a0e6a3b..1821dc485 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt @@ -225,6 +225,10 @@ object PreferencesUtil { context.resources.getBoolean(R.bool.enable_auto_save_database_default)) } + fun isAdvancedUnlockEnable(context: Context): Boolean { + return isBiometricUnlockEnable(context) || isDeviceCredentialUnlockEnable(context) + } + fun isBiometricUnlockEnable(context: Context): Boolean { val prefs = PreferenceManager.getDefaultSharedPreferences(context) return prefs.getBoolean(context.getString(R.string.biometric_unlock_enable_key), @@ -237,6 +241,12 @@ object PreferencesUtil { context.resources.getBoolean(R.bool.biometric_auto_open_prompt_default)) } + fun isDeviceCredentialUnlockEnable(context: Context): Boolean { + val prefs = PreferenceManager.getDefaultSharedPreferences(context) + return prefs.getBoolean(context.getString(R.string.device_credential_unlock_enable_key), + context.resources.getBoolean(R.bool.device_credential_unlock_enable_default)) + } + fun getListSort(context: Context): SortNodeEnum { val prefs = PreferenceManager.getDefaultSharedPreferences(context) prefs.getString(context.getString(R.string.sort_node_key), diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index df0ebb96e..788139210 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -416,7 +416,7 @@ Résoudre le problème en générant de nouveaux UUID pour les doublons et continuer \? Base de données ouverte Copier les champs d’une entrée à l’aide du presse-papier de votre appareil - Utilise le déverrouillage avancé pour ouvrir plus facilement une base de données + Utiliser le déverrouillage avancé pour ouvrir plus facilement une base de données Compression de données La compression des données réduit la taille de la base de données Nombre maximum diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index f83e51ae1..bfa602c58 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -97,6 +97,8 @@ biometric_auto_open_prompt_key false biometric_delete_all_key_key + device_credential_unlock_enable_key + false settings_form_filling_key diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 477813785..1b34e09f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -293,6 +293,7 @@ History Appearance Biometric + Device credential General Autofill KeePassDX form autofilling @@ -321,11 +322,13 @@ Use advanced unlocking to open a database more easily Biometric unlocking Lets you scan your biometric to open the database + Device credential unlocking + Lets you use your device credential to open the database Auto-open biometric prompt Automatically ask for biometric if the database is set up to use it Delete encryption keys - Delete all encryption keys related to biometric recognition - Delete all encryption keys related to biometric recognition? + Delete all encryption keys related to advanced unlock recognition + Delete all encryption keys related to advanced unlock recognition? Could not start this feature. The device is running Android %1$s, but needs %2$s or later. Could not find the corresponding hardware. diff --git a/app/src/main/res/xml/preferences_advanced_unlock.xml b/app/src/main/res/xml/preferences_advanced_unlock.xml index db45ab418..618ff9b15 100644 --- a/app/src/main/res/xml/preferences_advanced_unlock.xml +++ b/app/src/main/res/xml/preferences_advanced_unlock.xml @@ -18,12 +18,12 @@ along with KeePassDX. If not, see . --> + - + + + + + - \ No newline at end of file From 84bb47aa535f2fda932f6a17ad504e44b348da43 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 23 Nov 2020 20:47:50 +0100 Subject: [PATCH 003/113] Better unlock settings --- .../UnavailableFeatureDialogFragment.kt | 4 +- .../BiometricUnlockDatabaseHelper.kt | 57 ++++++++++++++----- .../settings/NestedAppSettingsFragment.kt | 57 ++++++++++++++++--- app/src/main/res/values/strings.xml | 4 +- .../res/xml/preferences_advanced_unlock.xml | 27 ++++----- 5 files changed, 106 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/UnavailableFeatureDialogFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/UnavailableFeatureDialogFragment.kt index b866d72fe..9632021cd 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/UnavailableFeatureDialogFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/UnavailableFeatureDialogFragment.kt @@ -90,12 +90,12 @@ class UnavailableFeatureDialogFragment : DialogFragment() { } } if (apiName.isEmpty()) { - val mapper = arrayOf("ANDROID BASE", "ANDROID BASE 1.1", "CUPCAKE", "DONUT", "ECLAIR", "ECLAIR_0_1", "ECLAIR_MR1", "FROYO", "GINGERBREAD", "GINGERBREAD_MR1", "HONEYCOMB", "HONEYCOMB_MR1", "HONEYCOMB_MR2", "ICE_CREAM_SANDWICH", "ICE_CREAM_SANDWICH_MR1", "JELLY_BEAN", "JELLY_BEAN", "JELLY_BEAN", "KITKAT", "KITKAT", "LOLLIPOOP", "LOLLIPOOP_MR1", "MARSHMALLOW", "NOUGAT", "NOUGAT", "OREO", "OREO") + val mapper = arrayOf("ANDROID BASE", "ANDROID BASE 1.1", "CUPCAKE", "DONUT", "ECLAIR", "ECLAIR_0_1", "ECLAIR_MR1", "FROYO", "GINGERBREAD", "GINGERBREAD_MR1", "HONEYCOMB", "HONEYCOMB_MR1", "HONEYCOMB_MR2", "ICE_CREAM_SANDWICH", "ICE_CREAM_SANDWICH_MR1", "JELLY_BEAN", "JELLY_BEAN", "JELLY_BEAN", "KITKAT", "KITKAT", "LOLLIPOOP", "LOLLIPOOP_MR1", "MARSHMALLOW", "NOUGAT", "NOUGAT", "OREO", "OREO", "PIE", "", "") val index = apiNumber - 1 apiName = if (index < mapper.size) mapper[index] else "UNKNOWN_VERSION" } if (version.isEmpty()) { - val versions = arrayOf("1.0", "1.1", "1.5", "1.6", "2.0", "2.0.1", "2.1", "2.2.X", "2.3", "2.3.3", "3.0", "3.1", "3.2.0", "4.0.1", "4.0.3", "4.1.0", "4.2.0", "4.3.0", "4.4", "4.4", "5.0", "5.1", "6.0", "7.0", "7.1", "8.0.0", "8.1.0") + val versions = arrayOf("1.0", "1.1", "1.5", "1.6", "2.0", "2.0.1", "2.1", "2.2.X", "2.3", "2.3.3", "3.0", "3.1", "3.2.0", "4.0.1", "4.0.3", "4.1.0", "4.2.0", "4.3.0", "4.4", "4.4", "5.0", "5.1", "6.0", "7.0", "7.1", "8.0.0", "8.1.0", "9", "10", "11") val index = apiNumber - 1 version = if (index < versions.size) versions[index] else "UNKNOWN_VERSION" } diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt index 7752ff822..bde6cf062 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt @@ -307,21 +307,26 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { private const val BIOMETRIC_BLOCKS_MODES = KeyProperties.BLOCK_MODE_CBC private const val BIOMETRIC_ENCRYPTION_PADDING = KeyProperties.ENCRYPTION_PADDING_PKCS7 + @RequiresApi(api = Build.VERSION_CODES.M) fun canAuthenticate(context: Context): Int { return try { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG or DEVICE_CREDENTIAL) - } else { - BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG) - } + BiometricManager.from(context).canAuthenticate( + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + BIOMETRIC_STRONG or DEVICE_CREDENTIAL + } else { + BIOMETRIC_STRONG + } + ) } catch (e: Exception) { Log.e(TAG, "Unable to authenticate with strong biometric.", e) try { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - BiometricManager.from(context).canAuthenticate(BIOMETRIC_WEAK or DEVICE_CREDENTIAL) - } else { - BiometricManager.from(context).canAuthenticate(BIOMETRIC_WEAK) - } + BiometricManager.from(context).canAuthenticate( + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + BIOMETRIC_WEAK or DEVICE_CREDENTIAL + } else { + BIOMETRIC_WEAK + } + ) } catch (e: Exception) { Log.e(TAG, "Unable to authenticate with weak biometric.", e) BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE @@ -329,6 +334,7 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { } } + @RequiresApi(api = Build.VERSION_CODES.M) fun allowInitKeyStore(context: Context): Boolean { val biometricCanAuthenticate = canAuthenticate(context) return ( biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS @@ -336,19 +342,42 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { ) } - fun unlockSupported(context: Context): Boolean { - val biometricCanAuthenticate = canAuthenticate(context) - return ( biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS + @RequiresApi(api = Build.VERSION_CODES.M) + fun biometricUnlockSupported(context: Context): Boolean { + val biometricCanAuthenticate = try { + BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG) + } catch (e: Exception) { + Log.e(TAG, "Unable to authenticate with strong biometric.", e) + try { + BiometricManager.from(context).canAuthenticate(BIOMETRIC_WEAK) + } catch (e: Exception) { + Log.e(TAG, "Unable to authenticate with weak biometric.", e) + BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE + } + } + return (biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS || biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED - ) + ) + } + + @RequiresApi(api = Build.VERSION_CODES.R) + fun deviceCredentialUnlockSupported(context: Context): Boolean { + val biometricCanAuthenticate = BiometricManager.from(context).canAuthenticate(DEVICE_CREDENTIAL) + return (biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS + || biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN + || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE + || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED + || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED + ) } /** * Remove entry key in keystore */ + @RequiresApi(api = Build.VERSION_CODES.M) fun deleteEntryKeyInKeystoreForBiometric(context: FragmentActivity, biometricCallback: BiometricUnlockErrorCallback) { BiometricUnlockDatabaseHelper(context).apply { diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt b/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt index d2dc148fb..247e6d779 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt @@ -30,7 +30,6 @@ import android.view.autofill.AutofillManager import android.widget.Toast import androidx.annotation.RequiresApi import androidx.appcompat.app.AlertDialog -import androidx.biometric.BiometricManager import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.SwitchPreference @@ -209,14 +208,15 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { activity?.let { activity -> val biometricUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.biometric_unlock_enable_key)) - val deleteKeysFingerprints: Preference? = findPreference(getString(R.string.biometric_delete_all_key_key)) - // < M solve verifyError exception + val deviceCredentialUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.device_credential_unlock_enable_key)) + val autoOpenPromptPreference: SwitchPreference? = findPreference(getString(R.string.biometric_auto_open_prompt_key)) + val biometricUnlockSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - BiometricUnlockDatabaseHelper.unlockSupported(activity) + BiometricUnlockDatabaseHelper.biometricUnlockSupported(activity) } else false - if (!biometricUnlockSupported) { + biometricUnlockEnablePreference?.apply { // False if under Marshmallow - biometricUnlockEnablePreference?.apply { + if (!biometricUnlockSupported) { isChecked = false setOnPreferenceClickListener { preference -> (preference as SwitchPreference).isChecked = false @@ -224,9 +224,48 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { .show(parentFragmentManager, "unavailableFeatureDialog") false } + } else { + setOnPreferenceChangeListener { _, newValue -> + val checked = (newValue as Boolean) + autoOpenPromptPreference?.isEnabled = checked + || deviceCredentialUnlockEnablePreference?.isChecked == true + if (checked) + deviceCredentialUnlockEnablePreference?.isChecked = false + true + } } - deleteKeysFingerprints?.isEnabled = false - } else { + } + + + val deviceCredentialUnlockSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + BiometricUnlockDatabaseHelper.deviceCredentialUnlockSupported(activity) + } else false + deviceCredentialUnlockEnablePreference?.apply { + if (!deviceCredentialUnlockSupported) { + isChecked = false + setOnPreferenceClickListener { preference -> + (preference as SwitchPreference).isChecked = false + UnavailableFeatureDialogFragment.getInstance(Build.VERSION_CODES.R) + .show(parentFragmentManager, "unavailableFeatureDialog") + false + } + } else { + setOnPreferenceChangeListener { _, newValue -> + val checked = (newValue as Boolean) + autoOpenPromptPreference?.isEnabled = checked || + biometricUnlockEnablePreference?.isChecked == true + if (checked) + biometricUnlockEnablePreference?.isChecked = false + true + } + } + } + + autoOpenPromptPreference?.isEnabled = biometricUnlockEnablePreference?.isChecked == true + || deviceCredentialUnlockEnablePreference?.isChecked == true + + val deleteKeysFingerprints: Preference? = findPreference(getString(R.string.biometric_delete_all_key_key)) + if (biometricUnlockSupported || deviceCredentialUnlockSupported) { deleteKeysFingerprints?.setOnPreferenceClickListener { context?.let { context -> AlertDialog.Builder(context) @@ -260,6 +299,8 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { } false } + } else { + deleteKeysFingerprints?.isEnabled = false } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1b34e09f2..34aa42078 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -324,8 +324,8 @@ Lets you scan your biometric to open the database Device credential unlocking Lets you use your device credential to open the database - Auto-open biometric prompt - Automatically ask for biometric if the database is set up to use it + Auto-open prompt + Automatically request advanced unlock if the database is set up to use it Delete encryption keys Delete all encryption keys related to advanced unlock recognition Delete all encryption keys related to advanced unlock recognition? diff --git a/app/src/main/res/xml/preferences_advanced_unlock.xml b/app/src/main/res/xml/preferences_advanced_unlock.xml index 618ff9b15..9ce2402fd 100644 --- a/app/src/main/res/xml/preferences_advanced_unlock.xml +++ b/app/src/main/res/xml/preferences_advanced_unlock.xml @@ -18,34 +18,27 @@ along with KeePassDX. If not, see . --> - + android:title="@string/general"> + - - - - - + Date: Mon, 30 Nov 2020 13:56:14 +0100 Subject: [PATCH 004/113] Change biometric to advanced unlock --- .../keepass/activities/PasswordActivity.kt | 2 +- .../biometric/AdvancedUnlockedManager.kt | 20 ++-- .../BiometricUnlockDatabaseHelper.kt | 6 +- .../settings/NestedAppSettingsFragment.kt | 2 +- .../keepass/settings/PreferencesUtil.kt | 2 +- .../keepass/view/AdvancedUnlockInfoView.kt | 32 ++++--- app/src/main/res/drawable-v23/bolt.xml | 13 +++ app/src/main/res/drawable-v23/fingerprint.xml | 4 +- .../res/drawable-v23/fingerprint_scan.xml | 4 +- .../ic_fingerprint_remove_white_24dp.xml | 16 ---- .../ic_keystore_remove_white_24dp.xml | 13 +++ .../res/layout-v23/view_advanced_unlock.xml | 2 +- app/src/main/res/menu/advanced_unlock.xml | 6 +- app/src/main/res/values-ar/strings.xml | 13 +-- app/src/main/res/values-b+sr+Latn/strings.xml | 1 - app/src/main/res/values-ca/strings.xml | 4 - app/src/main/res/values-cs/strings.xml | 11 --- app/src/main/res/values-da/strings.xml | 12 --- app/src/main/res/values-de/strings.xml | 12 --- app/src/main/res/values-el/strings.xml | 12 --- app/src/main/res/values-es/strings.xml | 12 +-- app/src/main/res/values-fa/strings.xml | 11 --- app/src/main/res/values-fi/strings.xml | 10 -- app/src/main/res/values-fr/strings.xml | 12 --- app/src/main/res/values-hr/strings.xml | 12 --- app/src/main/res/values-hu/strings.xml | 12 --- app/src/main/res/values-id/strings.xml | 1 - app/src/main/res/values-it/strings.xml | 11 --- app/src/main/res/values-ja/strings.xml | 12 --- app/src/main/res/values-ko/strings.xml | 1 - app/src/main/res/values-ml/strings.xml | 11 --- app/src/main/res/values-nb/strings.xml | 9 -- app/src/main/res/values-nl/strings.xml | 11 --- app/src/main/res/values-pa/strings.xml | 9 -- app/src/main/res/values-pl/strings.xml | 12 --- app/src/main/res/values-pt-rBR/strings.xml | 13 +-- app/src/main/res/values-pt-rPT/strings.xml | 11 --- app/src/main/res/values-pt/strings.xml | 11 --- app/src/main/res/values-ro/strings.xml | 11 --- app/src/main/res/values-ru/strings.xml | 12 --- app/src/main/res/values-sv/strings.xml | 11 --- app/src/main/res/values-tr/strings.xml | 12 --- app/src/main/res/values-uk/strings.xml | 12 --- app/src/main/res/values-v23/fingerprint.xml | 3 +- app/src/main/res/values-zh-rCN/strings.xml | 12 --- app/src/main/res/values-zh-rTW/strings.xml | 7 -- app/src/main/res/values/strings.xml | 24 ++--- art/ic_device_unlock.svg | 96 +++++++++++++++++++ art/ic_fingerprint_remove.svg | 96 ------------------- art/ic_keystore_remove.svg | 96 +++++++++++++++++++ 50 files changed, 278 insertions(+), 482 deletions(-) create mode 100644 app/src/main/res/drawable-v23/bolt.xml delete mode 100644 app/src/main/res/drawable/ic_fingerprint_remove_white_24dp.xml create mode 100644 app/src/main/res/drawable/ic_keystore_remove_white_24dp.xml create mode 100644 art/ic_device_unlock.svg delete mode 100644 art/ic_fingerprint_remove.svg create mode 100644 art/ic_keystore_remove.svg diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt index f53e8768c..e31f58523 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt @@ -691,7 +691,7 @@ open class PasswordActivity : SpecialModeActivity() { readOnly = !readOnly changeOpenFileReadIcon(item) } - R.id.menu_biometric_remove_key -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + R.id.menu_keystore_remove_key -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { advancedUnlockedManager?.deleteEntryKey() } else -> return MenuUtil.onDefaultMenuOptionsItemSelected(this, item) diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index 30dd2019b..bf7cbb6cd 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -59,7 +59,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, /** * Manage setting to auto open biometric prompt */ - private var biometricPromptAutoOpenPreference = PreferencesUtil.isBiometricPromptAutoOpenEnable(context) + private var biometricPromptAutoOpenPreference = PreferencesUtil.isAdvancedUnlockPromptAutoOpenEnable(context) var isBiometricPromptAutoOpenEnable: Boolean = false get() { return field && biometricPromptAutoOpenPreference @@ -85,6 +85,12 @@ class AdvancedUnlockedManager(var context: FragmentActivity, */ fun checkBiometricAvailability() { + if (PreferencesUtil.isDeviceCredentialUnlockEnable(context)) { + advancedUnlockInfoView?.setIconResource(R.drawable.bolt) + } else if (PreferencesUtil.isBiometricUnlockEnable(context)) { + advancedUnlockInfoView?.setIconResource(R.drawable.fingerprint) + } + // biometric not supported (by API level or hardware) so keep option hidden // or manually disable val biometricCanAuthenticate = BiometricUnlockDatabaseHelper.canAuthenticate(context) @@ -154,7 +160,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, override fun onAuthenticationFailed() { context.runOnUiThread { Log.e(TAG, "Biometric authentication failed, biometric not recognized") - setAdvancedUnlockedMessageView(R.string.biometric_not_recognized) + setAdvancedUnlockedMessageView(R.string.advanced_unlock_not_recognized) } } @@ -229,7 +235,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, advancedUnlockInfoView?.setIconViewClickListener(false) { biometricAuthenticationCallback.onAuthenticationError(BiometricPrompt.ERROR_UNABLE_TO_PROCESS, - context.getString(R.string.credential_before_click_biometric_button)) + context.getString(R.string.credential_before_click_advanced_unlock_button)) } } @@ -245,7 +251,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, setAdvancedUnlockedTitleView(R.string.crypto_object_not_initialized) } } else { - setAdvancedUnlockedTitleView(R.string.biometric_prompt_not_initialized) + setAdvancedUnlockedTitleView(R.string.advanced_unlock_prompt_not_initialized) } } } @@ -253,7 +259,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, private fun initEncryptData() { showFingerPrintViews(true) - setAdvancedUnlockedTitleView(R.string.open_biometric_prompt_store_credential) + setAdvancedUnlockedTitleView(R.string.open_advanced_unlock_prompt_store_credential) setAdvancedUnlockedMessageView("") biometricUnlockDatabaseHelper?.initEncryptData { biometricPrompt, cryptoObject, promptInfo -> @@ -266,7 +272,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, private fun initDecryptData() { showFingerPrintViews(true) - setAdvancedUnlockedTitleView(R.string.open_biometric_prompt_unlock_database) + setAdvancedUnlockedTitleView(R.string.open_advanced_unlock_prompt_unlock_database) setAdvancedUnlockedMessageView("") if (biometricUnlockDatabaseHelper != null) { @@ -354,7 +360,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, } override fun onInvalidKeyException(e: Exception) { - setAdvancedUnlockedMessageView(R.string.biometric_invalid_key) + setAdvancedUnlockedMessageView(R.string.advanced_unlock_invalid_key) } override fun onBiometricException(e: Exception) { diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt index bde6cf062..056aee485 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt @@ -153,8 +153,8 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { initBiometricPrompt() val promptInfoStoreCredential = BiometricPrompt.PromptInfo.Builder().apply { - setTitle(context.getString(R.string.biometric_prompt_store_credential_title)) - setDescription(context.getString(R.string.biometric_prompt_store_credential_message)) + setTitle(context.getString(R.string.advanced_unlock_prompt_store_credential_title)) + setDescription(context.getString(R.string.advanced_unlock_prompt_store_credential_message)) setConfirmationRequired(true) if (deviceCredentialUnlockEnable) { setAllowedAuthenticators(DEVICE_CREDENTIAL) @@ -218,7 +218,7 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { initBiometricPrompt() val promptInfoExtractCredential = BiometricPrompt.PromptInfo.Builder().apply { - setTitle(context.getString(R.string.biometric_prompt_extract_credential_title)) + setTitle(context.getString(R.string.advanced_unlock_prompt_extract_credential_title)) //setDescription(context.getString(R.string.biometric_prompt_extract_credential_message)) setConfirmationRequired(false) if (deviceCredentialUnlockEnable) { diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt b/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt index 247e6d779..294068e62 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt @@ -279,7 +279,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { object : BiometricUnlockDatabaseHelper.BiometricUnlockErrorCallback { fun showException(e: Exception) { Toast.makeText(context, - getString(R.string.biometric_scanning_error, e.localizedMessage), + getString(R.string.advanced_unlock_scanning_error, e.localizedMessage), Toast.LENGTH_SHORT).show() } diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt index 1821dc485..f6d9bf2be 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt @@ -235,7 +235,7 @@ object PreferencesUtil { context.resources.getBoolean(R.bool.biometric_unlock_enable_default)) } - fun isBiometricPromptAutoOpenEnable(context: Context): Boolean { + fun isAdvancedUnlockPromptAutoOpenEnable(context: Context): Boolean { val prefs = PreferenceManager.getDefaultSharedPreferences(context) return prefs.getBoolean(context.getString(R.string.biometric_auto_open_prompt_key), context.resources.getBoolean(R.bool.biometric_auto_open_prompt_default)) diff --git a/app/src/main/java/com/kunzisoft/keepass/view/AdvancedUnlockInfoView.kt b/app/src/main/java/com/kunzisoft/keepass/view/AdvancedUnlockInfoView.kt index 9714bef00..fa492037f 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/AdvancedUnlockInfoView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/AdvancedUnlockInfoView.kt @@ -27,10 +27,12 @@ import android.view.View import android.widget.ImageView import android.widget.LinearLayout import android.widget.TextView +import androidx.annotation.RequiresApi import androidx.annotation.StringRes import com.kunzisoft.keepass.R import com.kunzisoft.keepass.biometric.FingerPrintAnimatedVector +@RequiresApi(api = Build.VERSION_CODES.M) class AdvancedUnlockInfoView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) @@ -48,25 +50,25 @@ class AdvancedUnlockInfoView @JvmOverloads constructor(context: Context, inflater?.inflate(R.layout.view_advanced_unlock, this) unlockContainerView = findViewById(R.id.fingerprint_container) - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - unlockTitleTextView = findViewById(R.id.biometric_title) - unlockMessageTextView = findViewById(R.id.biometric_message) - unlockIconImageView = findViewById(R.id.biometric_image) - // Init the fingerprint animation - unlockAnimatedVector = FingerPrintAnimatedVector(context, unlockIconImageView!!) - } + unlockTitleTextView = findViewById(R.id.biometric_title) + unlockMessageTextView = findViewById(R.id.biometric_message) + unlockIconImageView = findViewById(R.id.biometric_image) } - fun startIconViewAnimation() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - unlockAnimatedVector?.startScan() - } + private fun startIconViewAnimation() { + unlockAnimatedVector?.startScan() } - fun stopIconViewAnimation() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - unlockAnimatedVector?.stopScan() + private fun stopIconViewAnimation() { + unlockAnimatedVector?.stopScan() + } + + fun setIconResource(iconId: Int) { + unlockIconImageView?.setImageResource(iconId) + // Init the fingerprint animation + unlockAnimatedVector = when (iconId) { + R.drawable.fingerprint -> FingerPrintAnimatedVector(context, unlockIconImageView!!) + else -> null } } diff --git a/app/src/main/res/drawable-v23/bolt.xml b/app/src/main/res/drawable-v23/bolt.xml new file mode 100644 index 000000000..8684f8cf3 --- /dev/null +++ b/app/src/main/res/drawable-v23/bolt.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/drawable-v23/fingerprint.xml b/app/src/main/res/drawable-v23/fingerprint.xml index 6794fb4af..43393ec87 100644 --- a/app/src/main/res/drawable-v23/fingerprint.xml +++ b/app/src/main/res/drawable-v23/fingerprint.xml @@ -15,8 +15,8 @@ limitations under the License. --> diff --git a/app/src/main/res/drawable-v23/fingerprint_scan.xml b/app/src/main/res/drawable-v23/fingerprint_scan.xml index a313e708b..553792910 100644 --- a/app/src/main/res/drawable-v23/fingerprint_scan.xml +++ b/app/src/main/res/drawable-v23/fingerprint_scan.xml @@ -15,8 +15,8 @@ limitations under the License. --> diff --git a/app/src/main/res/drawable/ic_fingerprint_remove_white_24dp.xml b/app/src/main/res/drawable/ic_fingerprint_remove_white_24dp.xml deleted file mode 100644 index 7eaf955e4..000000000 --- a/app/src/main/res/drawable/ic_fingerprint_remove_white_24dp.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_keystore_remove_white_24dp.xml b/app/src/main/res/drawable/ic_keystore_remove_white_24dp.xml new file mode 100644 index 000000000..8149a560b --- /dev/null +++ b/app/src/main/res/drawable/ic_keystore_remove_white_24dp.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-v23/view_advanced_unlock.xml b/app/src/main/res/layout-v23/view_advanced_unlock.xml index bdf240fd6..829da8559 100644 --- a/app/src/main/res/layout-v23/view_advanced_unlock.xml +++ b/app/src/main/res/layout-v23/view_advanced_unlock.xml @@ -51,7 +51,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@+id/biometric_message" - tools:text="@string/biometric_prompt_store_credential_title" + tools:text="@string/advanced_unlock_prompt_store_credential_title" style="@style/KeepassDXStyle.TextAppearance.Default.TextOnPrimary" android:textSize="14sp" android:gravity="center" /> diff --git a/app/src/main/res/menu/advanced_unlock.xml b/app/src/main/res/menu/advanced_unlock.xml index 98e5fae31..ed65272b0 100644 --- a/app/src/main/res/menu/advanced_unlock.xml +++ b/app/src/main/res/menu/advanced_unlock.xml @@ -19,9 +19,9 @@ --> - \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 494593422..07021869a 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -73,7 +73,6 @@ اقفل قاعدة البيانات فتح البحث - إزالة بصمة المفتاح ناقص أبداً لا توجد نتائج للبحث @@ -189,11 +188,7 @@ نسخة الاندرويد %1$s لا تحقق ادنى متطلبات السنخة %2$s. اسم الملف مسار - فحص البصمة - لا يمكن قراءة مفتاح البصمة. -\nاستعد كلمة السر. - لم يتعرّف على البصمة - استخدم البصمة لحفظ كلمة السر + تأريخ مكن اشعارات الحافظة لنسخ الحقول البصمة @@ -326,10 +321,6 @@ مساهمة "‮تواصل معنا " البصمة - اكتب كلمة السر ، ثم انقر زر \"البصمة\". - خطأ بالبصمة: %1$s - افتح قاعدة البيانات بالبصمة - احفظ البصمة يجب ألا تغير محتوى ملف المفتاح، في أحسن الحالات يجب أن يحتوي بيانات مولدة عشوائيا. من غير المستحسن اضافة ملف مفتاح فارغ. أزل هذه البيانات عل أي حال؟ @@ -394,8 +385,6 @@ نشِّط لوحة مفاتيح مخصصة لملأ كلمة السر وحقول معرّفك اطلب فحص البصمة ان كانت قاعدة البيانات معدّة لذلك افتح محث البصمة تلقائيا - استخرج بيانات الاعتماد لقاعدة البيانات بالبصمة - تحذير: مازلت بحاجة لتذكر المفتاح الرئيسي عند استخدامك للبصمة. لم يُهيأ مخزن المفاتيح بشكل صحيح. حذف البيانات سيقلل من حجم قاعدة البيانات لكن احذر أن تكون إحدى هذه البيانات ملحقة لكي-باس. ابحث عن النطاقات في النطاقات الفرعية diff --git a/app/src/main/res/values-b+sr+Latn/strings.xml b/app/src/main/res/values-b+sr+Latn/strings.xml index 807928cd9..067a50e19 100644 --- a/app/src/main/res/values-b+sr+Latn/strings.xml +++ b/app/src/main/res/values-b+sr+Latn/strings.xml @@ -24,7 +24,6 @@ Izmenjivo Zaštićeno od upisivanja Idi na URL adresu - Izbriši sačuvani biometrijski ključ Prikaži lozinku Traži Otvori diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 7fd7f1e98..79cd4a4aa 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -193,10 +193,7 @@ Biomètric Apariència Història - Escriviu la contrasenya abans de fer clic en el botó biomètric. Contrasenya xifrada desada - Obri la base de dades amb reconeixement biomètric - Alerta: Heu de recordar la vostra contrasenya mestra encara que feu servir el reconeixement biomètrica. Voleu suprimir definitivament els nodes seleccionats\? Voleu continuar sense contrasenya de xifrat\? L\'accés al fitxer ha estat revocat pel gestor de fitxers @@ -232,7 +229,6 @@ Buida la paperera Modificable Protegit contra escriptura - Suprimeix la clau biomètrica desada Desa la base de dades Cancel·la Enganxa diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 871a37a66..00f8657ca 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -169,7 +169,6 @@ Přesunout Vložit Storno - Smazat uložený biometrický klíč Chráněno před zápisem Čtení a zápis Chráněno před zápisem @@ -192,12 +191,7 @@ Nepoužívejte v hesle pro databázový soubor znaky mimo znakovou sadu Latin-1 (nepoužívejte znaky s diakritikou). Pokračovat bez ochrany odemknutím heslem\? Pokračovat bez šifrovacího klíče\? - Otevřít biometrickou pobídku k otevření databáze Šifrované heslo uloženo - Nelze načíst biometrický klíč. Prosím, smažte jej a opakujte proceduru biometrického rozpoznání. - Biometrický prvek nerozpoznán - Chyba s biometrickým prvkem: %1$s - Otevři biometrickou pobídku k uložení hesel Tato databáze zatím nemá uložené heslo. Historie Vzhled @@ -364,10 +358,6 @@ Zavři kolonky Nelze vytvořit databázi s tímto heslem a klíčem ze souboru. Pokročilé odemčení - Uložit biometrické rozlišení - VAROVÁNÍ: I s použitím biometrického rozlišení budete muset znát své hlavní heslo. - Otevřít databázi skrze biometrické rozlišení - Vytáhnout heslo databáze biometrickými daty Biometrika Automaticky otevřít biometrickou pobídku Automaticky žádat biometriku, je-li databáze nastavena k jejímu použití @@ -424,7 +414,6 @@ Provádím příkaz… Natrvalo smazat vybrané uzly\? Úložiště klíčů není řádně inicializováno. - Zadejte heslo a pak klikněte na tlačítko \"Biometrika\". Skupina Koš Uložit databázi automaticky Uložit databázi po každé důležité akci (v režimu \"Zápis\") diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index ab090990e..775da96d4 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -168,7 +168,6 @@ Flyt Indsæt Annuller - Slet gemt fingeraftryk Skrivebeskyttet Modificerbar Skrivebeskyttet @@ -191,12 +190,7 @@ Undgå adgangskodetegn uden for tekstkodningsformatet i databasefilen (ukendte tegn konverteres til samme bogstav). Bekræft brug af ingen adgangskode til beskyttelse mod oplåsning\? Fortsæt uden krypteringsnøgle\? - Åbn biometriske forespørgsel for at låse databasen op Krypteret adgangskode er gemt - Kan ikke læse den biometriske nøgle. Slet den og gentag den biometriske genkendelsesprocedure. - Kunne ikke genkende biometrisk - Biometrisk fejl: %1$s - Åbn den biometriske prompt for at gemme legitimationsoplysninger Databasen har endnu ikke en adgangskode. Historik Udseende @@ -364,10 +358,6 @@ Luk felter Kan ikke oprette database med denne adgangskode og nøglefil. Avanceret oplåsning - Gem biometrisk genkendelse - Advarsel: hovedadgangskoden skal stadig huskes, hvis der bruges biometrisk genkendelse. - Åbn database med biometrisk genkendelse - Uddrag databasens legitimationsoplysninger med biometriske data Biometrisk Åbn automatisk biometrisk prompt Spørg automatisk efter biometri, hvis databasen er konfigureret til at bruge den @@ -424,7 +414,6 @@ Udfører kommandoen… Slet markerede noder permanent\? Nøglelageret er ikke korrekt initialiseret. - Indtast adgangskoden, og klik derefter på knappen \"Biometrisk\". Papirkurvsgruppe Gem automatisk database Gem databasen efter hver en vigtig handling (i tilstanden \"Modificerbar\") @@ -507,7 +496,6 @@ Fjern ikke-sammenkædede data Data Kryptoobjektet kunne ikke hentes. - Biometrisk prompt kunne ikke initialiseres. Biometrisk sikkerhedsopdatering påkrævet. Indholdet af nøglefilen bør aldrig ændres og bør i bedste fald indeholde tilfældigt genererede data. Det anbefales ikke at tilføje en tom nøglefil. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index ce7c5406b..8f7355f72 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -185,13 +185,9 @@ Sperren Erlaubte Zeichen für Passwortgenerator festlegen Passwortzeichen - Biometrie-Abfrage öffnen, um die Datenbank zu entsperren Verschlüsseltes Passwort wurde gespeichert - Der biometrische Schlüssel kann nicht gelesen werden. Bitte löschen Sie ihn und wiederholen Sie den biometrischen Erkennungsprozess. - Biometrischer Fehler: %1$s Verlauf Allgemein - Biometrische Abfrage öffnen, um Anmeldedaten zu speichern. Diese Datenbank hat noch kein Passwort. Verschlüsselung Schlüsselableitungsfunktion @@ -200,7 +196,6 @@ Dienst für automatisches Ausfüllen kann nicht aktiviert werden. Kopie von %1$s Formularausfüllung - Gespeicherten biometrischen Schlüssel löschen Verschlüsselungsalgorithmus der Datenbank wird für sämtliche Daten verwendet. Um den Schlüssel für den Verschlüsselungsalgorithmus zu generieren, wird der Hauptschlüssel umgewandelt, wobei ein zufälliger Salt in der Schlüsselberechnung verwendet wird. Speichernutzung @@ -216,7 +211,6 @@ Erstelldatum Änderungsdatum Zugriffsdatum - Biometrische Daten nicht erkannt Automatisches Ausfüllen KeePassDX autom. Formularausfüllung Mit KeePassDX anmelden @@ -380,13 +374,9 @@ Felder schließen Es ist nicht möglich, eine Datenbank mit diesem Passwort und dieser Schlüsseldatei zu erstellen. Erweitertes Entsperren - Biometrische Erkennung speichern - Datenbank mit biometrischer Erkennung öffnen Biometrisch Aktivieren Deaktivieren - Achtung: Wenn Sie die biometrische Erkennung verwenden, müssen Sie sich trotzdem Ihr Master-Passwort merken. - Datenbank-Anmeldeinformationen aus biometrischen Daten extrahieren Biometrische Abfrage automatisch öffnen Automatisch nach Biometrie fragen, wenn die Datenbank dafür eingerichtet ist Hauptschlüssel @@ -440,7 +430,6 @@ Befehl ausführen… Sollen die ausgewählten Knoten wirklich gelöscht werden\? Der Schlüsselspeicher ist nicht richtig initialisiert. - Geben Sie das Passwort ein und klicken Sie auf die Biometrie-Schaltfläche. Papierkorb-Gruppe Datenbank automatisch speichern Automatisches Speichern der Datenbank nach einer wichtigen Aktion (im Modus \"Bearbeiten\") @@ -524,7 +513,6 @@ Datenbank sperren Benachrichtigung Kryptoobjekt kann nicht abgerufen werden. - Biometrische Eingabeaufforderung kann nicht initialisiert werden. Biometrisches Sicherheitsupdate erforderlich. Es sind keine biometrischen oder Geräteanmeldeinformationen registriert. Registrierungsmodus diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 19511f474..2447aa0ec 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -347,16 +347,6 @@ Κλείσιμο πεδίων Δεν είναι δυνατή η δημιουργία βάσης δεδομένων με αυτόν τον κωδικό πρόσβασης και το αρχείο κλειδί. Προηγμένο ξεκλείδωμα - Διαγράψτε το αποθηκευμένο βιομετρικό κλειδί - Ανοίξτε τη βιομετρική προτροπή για να ξεκλειδώσετε τη βάση δεδομένων - Ανοίξτε τη βιομετρική προτροπή για την αποθήκευση διαπιστευτηρίων - Αποθήκευση βιομετρικής αναγνώρισης - Προειδοποίηση: Πρέπει ακόμα να θυμάστε τον κύριο κωδικό πρόσβασης σας εάν χρησιμοποιείτε βιομετρική αναγνώριση. - Άνοιγμα βάσης δεδομένων με βιομετρική αναγνώριση - Εξαγωγή της πιστοποίησης βάσης δεδομένων με βιομετρικά δεδομένα - Δεν είναι δυνατή η ανάγνωση του βιομετρικού κλειδιού. Διαγράψτε το και επαναλάβετε τη διαδικασία βιομετρικής αναγνώρισης. - Δεν ήταν δυνατή η αναγνώριση βιομετρικών στοιχείων - Βιομετρικό σφάλμα: %1$s Αυτή η βάση δεδομένων δεν έχει αποθηκευμένα διαπιστευτήρια ακόμα. Εμφάνιση Βιομετρία @@ -426,7 +416,6 @@ Εκτέλεση της εντολής… Οριστική διαγραφή επιλεγμένων κόμβων; Η κλειδοθήκη δεν έχει προετοιμαστεί σωστά. - Πληκτρολογήστε τον κωδικό πρόσβασης και στη συνέχεια κάντε κλικ στο κουμπί \"Biometric\". Ομάδα Κάδου Ανακύκλωσης Αυτόματη αποθήκευση βάσης δεδομένων Αποθήκευση της βάσης δεδομένων μετά από κάθε σημαντική ενέργεια (σε λειτουργία \"Τροποποιήσιμο\") @@ -519,7 +508,6 @@ Αποθήκευση κοινόχρηστων πληροφοριών Ειδοποίηση Δεν είναι δυνατή η ανάκτηση κρυπτογραφικού αντικειμένου. - Δεν είναι δυνατή η προετοιμασία της βιομετρικής προτροπής. Απαιτείται ενημέρωση βιομετρικής ασφάλειας. Κανένα πιστοποιητικό βιομετρίας ή συσκευής δεν είναι εγγεγραμμένο. Να διαγραφούν οριστικά όλοι οι κόμβοι από τον κάδο ανακύκλωσης; diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e7c9dcd38..423df5f49 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -157,7 +157,6 @@ El archivo de clave está vacío. Copia de %1$s Llenado de formulario - Quite la clave de huella dactilar Protección Protegida contra escritura KeePassDX necesita permiso de escritura para modificar la base de datos. @@ -182,14 +181,9 @@ Evite emplear en la base de datos caracteres que no pertenezcan al formato de codificación del texto (los caracteres no reconocidos se convierten a la misma letra). ¿Continuar sin la protección de desbloqueo de contraseña\? ¿Continuar sin clave de cifrado\? - Abra la petición de datos biométricos para desbloquear la base de datos Contraseña cifrada almacenada - No se puede leer la clave biométrica. Bórrela y repita el procedimiento de reconocimiento biométrico. - No fue posible identificar los datos biométricos - Error de biometría: %1$s Historial Habilite el servicio para completar formularios fácilmente desde otras aplicaciones - Abra la petición de datos biométricos para almacenar credenciales Esta base de datos aún no tiene credenciales almacenadas. Apariencia General @@ -360,10 +354,6 @@ Cerrar campos No se puede crear la base de datos con esta contraseña y este archivo de clave. Desbloqueo avanzado - Guardar reconocimiento biométrico - Atención: debe recordar su contraseña maestra aunque use el reconocimiento biométrico. - Abrir base de datos con reconocimiento biométrico - Extraer credencial de base de datos con datos biométricos Biometría Abrir petición de datos biométricos automáticamente Abrir automáticamente la petición de datos biométricos cuando se define una clave biométrica para una base de datos @@ -409,7 +399,7 @@ Ninguna Compresión Nombre de usuario predeterminado - Requerir cambiar la contraseña maestra la próxima vez (una sóla vez) + Requerir cambiar la contraseña maestra la próxima vez (una sola vez) Forzar renovación la próxima vez Requerir un cambio de contraseña maestra (días) Forzar renovación diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 63884e404..e2902554e 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -2,18 +2,8 @@ ظاهر تاریخچه - رمز ورود را وارد کنید و سپس روی دکمه \"بیومتریک\" کلیک کنید. این پایگاه داده هنوز اطلاعات کاربری ذخیره نشده است. - خطای بیومتریک:%1$s - بایومتریک قابل تشخیص نیست - "کلید بیومتریک را نمی توان خواند. لطفاً آن را حذف کرده و روش شناخت بیومتریک را تکرار کنید." رمز رمزگذاری شده ذخیره شده است - استخراج اطلاعات کاربری پایگاه داده با داده های بیومتریک - پایگاه داده را با تشخیص بیومتریک باز کنید - هشدار: اگر از تشخیص بیومتریک استفاده می کنید ، هنوز باید رمز عبور اصلی خود را به خاطر بسپارید. - تشخیص بیومتریک را ذخیره کنید - اعلان بیومتریک را برای ذخیره اعتبارنامه باز کنید - برای باز کردن قفل پایگاه داده ، دستور بیومتریک را باز کنید فروشگاه اصلی به درستی تنظیم نشده است. %1$s را بسازید نسخه %1$s @@ -88,7 +78,6 @@ قابل تغییر نوشتن-محافظت شده رفتن به آدرس اینترنتی - حذف کلید بیومتریک ذخیره شده نمایش رمز عبور جستجو باز diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 68507fcc1..82c8be006 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -208,17 +208,8 @@ Ota käyttöön automaattinen täyttö täyttääksesi lomakkeita nopeasti muissa sovelluksissa Ulkonäkö Historia - Kirjoita salana ja paina \"Biometrinen\" painiketta. Biometrinen Tässä salasanatietokannassa ei ole vielä pääsytietoja. - Biometrinen virhe: %1$s - Biometristä tunnistusta ei tunnistettu - Biometristä avainta ei voitu lukea. Poista se ja toista biometrinen tunnistus. - Avaa salasanatietokanta biometrisellä tunnistuksella - Varoitus: Sinun pitää vielä muistaa pääsalasanasi jos käytät biometristä tunnistusta. - Tallenna biometrinen tunnistus - Avaa biometrinen komentokehote tallentaaksesi pääsytiedot - Avaa biometrinen komentokehote avataksesi salasanatietokannan Avainsäilöä ei ole kunnolla alustettu. Koontiversio %1$s Tiedostoon pääsy evätty @@ -302,7 +293,6 @@ Palauta historia Tyhjennä roskakori Kirjoitussuojattu - Poista tallennettu biometrinen avain Tallenna salasanatietokanta Peruuta Liitä diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 788139210..0962943d8 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -113,7 +113,6 @@ Ouvrir Rechercher Afficher le mot de passe - Supprimer l’empreinte biométrique enregistrée Ouvrir l’URL Moins Jamais @@ -162,13 +161,8 @@ Continuer sans clé de chiffrement \? Version %1$s Aucune information d’identification biométrique ou de périphérique n’est enregistrée. - Ouvrir l’invite biométrique pour déverrouiller la base de données Mot de passe chiffré stocké Historique - Impossible de lire la clé biométrique. Veuillez la supprimer et répéter la procédure de reconnaissance biométrique. - Impossible de reconnaître l’empreinte biométique - Erreur biométrique : %1$s - Ouvrir l’invite biométrique pour stocker les identifiants Cette base de données n’a pas encore stocké d’identifiants. Apparence Général @@ -383,10 +377,6 @@ Déverrouillage avancé Activer Désactiver - Enregistrer la reconnaissance biométrique - Attention : Vous devez toujours vous souvenir de votre mot de passe principal si vous utilisez la reconnaissance biométrique. - Ouvrir la base de données avec la reconnaissance biométrique - Extraire les identifiants de la base de données avec les données biométriques Biométrie Ouvrir automatiquement l’invite biométrique Demande automatiquement la reconnaissance biométrique si la base de données est configurée pour l\'utiliser @@ -441,7 +431,6 @@ Exécution de la commande… Supprimer définitivement les nœuds sélectionnés \? Le magasin de clés n’est pas correctement initialisé. - Saisissez le mot de passe puis cliquez sur le bouton biométrique. Groupe de la corbeille Enregistrement automatique de la base de données Enregistre la base de données après chaque action importante (en mode « Modifiable ») @@ -529,7 +518,6 @@ Enregistrer les infos partagées Notification Impossible de récupérer l\'objet crypto. - Impossible d\'initialiser l\'invite biométrique. Mise à jour de sécurité biométrique requise. Supprimer définitivement tous les nœuds de la corbeille \? Mode enregistrement diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index a10de6231..5c49ba536 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -133,7 +133,6 @@ Otvori Traži Prikaži lozinku - Izbriši spremljene biometrijske ključeve Idi na URL Promjenjivo Isprazni koš za smeće @@ -176,10 +175,7 @@ Trajno izbrisati odabrane čvorove\? Verzija %1$s Izgradnja %1$s - Upozorenje: Ako koristiš biometrijsko prepoznavanje i dalje moraš zapamtiti svoju glavnu lozinku. - Otvori bazu podataka pomoću biometrijskog prepoznavanja Šifrirana lozinka pohranjena - Nije moguće pročitati biometrijski ključ. Izbriši ga i ponovi postupak prepoznavanja. Povijest Izgled Opće @@ -277,11 +273,7 @@ Posebni znakovi Podcrtaj Velika slova - Spremi biometrijsko prepoznavanje - Izvadi akreditaciju baze podataka s biometrijskim podacima - Nije moguće prepoznati biometriju Ova baza podataka još nema spremljenu akreditaciju. - Upiši lozinku, zatim pritisni gumb „Biometrija”. Biometrija Prijavi se s KeePassDX Aktiviraj automatsko ispunjavanje za brzo ispunjavanje obrazaca u drugim aplikacijama @@ -378,7 +370,6 @@ Biometrijsko otključavanje baze podataka AES Doprinos - Za spremanje akreditacija, otvori biometrijsku prijavu Ova oznaka već postoji. Za spremanje promjena u bazi podataka, datoteci dozvoli pisanje Istek vremena aplikacije @@ -418,7 +409,6 @@ Paket ikona, koji se koristi u aplikaciji Istekli unosi se ne pokazuju Zaključaj bazu podataka - Za otključavanje baze podataka, otvori biometrijsku prijavu Otključaj bazu podataka Automatski traži biometriju, ako je baza podataka tako postavljena Nije moguće pokrenuti ovu funkciju. @@ -460,7 +450,6 @@ Za razliku od mnogih aplikacija za upravljanje lozinkama, ova je <strong>bez oglasa</strong>, <strong>copylefted slobodan softver</strong> i ne prikuplja osobne podatke na svojim poslužiteljima, bez obzira na korištenu verziju. Transformacijski prolazi Inicijaliziranje … - Biometrijska greška: %1$s Sudjeluj Unosi pomažu u upravljanju digitalnim identitetom. \n @@ -505,7 +494,6 @@ Spremi dijeljene informacije Trajno izbrisati sve čvorove iz smeća\? Nije moguće dohvatiti kripto objekt. - Nije moguće pokrenuti biometrijsku prijavu. Potrebno je aktualizirati biometrijsku zaštitu. Ne postoji biometrijski ključ niti podaci za prijavu uređaja. Modus registracije diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 25ed02a33..92fec1a26 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -137,11 +137,7 @@ Figyelmeztetés Kerülje a Latin-1 karakterkészlettől eltérő jelszókaraktereket az adatbázis-fájlban (a nem felismert karakterek mert ugyanarra a betűre lesznek alakítva). Verzió: %1$s - Ujjlenyomat-leolvasás megnyitása az adatbázis feloldásához Titkosított jelszó tárolva - Az biometrikus kulcs nem olvasható. Törölje, és ismételje meg a biometrikus felismerési folyamatot. - Ujjlenyomat probléma: %1$s - Használjon ujjlenyomatot a jelszó tárolásához Az adatbázisnak még nincs jelszava. Adja meg a jelszót és/vagy a kulcsfájlt, hogy kinyithassa az adatbázist. \n @@ -180,7 +176,6 @@ Áthelyezés Beillesztés Mégse - Mentett ujjlenyomat törlése Írásvédett Módosítható Új adatbázis létrehozása @@ -202,7 +197,6 @@ Biztos, hogy jelszavas feloldási védelem nélkül folytatja\? Biztos, hogy titkosítási kulcs nélkül folytatja\? Összeállítás: %1$s - Az ujjlenyomat nem ismerhető fel Előzmények Megjelenés Általános @@ -352,10 +346,6 @@ Zárolás gomb megjelenítése Az adatbázis zárolása, ha a felhasználó a vissza gombra kattint az indítóképernyőn Automatikus kitöltés beállításai - Adatbázis hitelesítő adatainak kinyerése ujjlenyomattal - Adatbázis megnyitása ujjlenyomat-felismeréssel - Figyelmeztetés: Továbbra is meg kell jegyeznie a mesterjelszót, ha ujjlenyomat-felismerést használ. - Ujjlenyomat mentése A fájlhoz történő hozzáférést visszavonta a fájlkezelő Fájlírási-hozzáférés megadása az adatbázis-változások mentéséhez A törött adatbázis-hivatkozások elrejtése a nemrég használt adatbázisok listájában @@ -394,7 +384,6 @@ Az adatbázis mentése minden fontos művelet után („Módosítható” módban) Adatbázis automatikus mentése Kuka csoportja - Írja be a jelszót, majd kattintson az „Ujjlenyomat” gombra. Az kulcstár nincs helyesen előkészítve. Biztos, hogy végleg törli a kiválasztott csomópontokat\? Parancs végrehajtása… @@ -480,7 +469,6 @@ Nem összekapcsolt adatok eltávolítása Adatok A titkosítási objektum nem kérhető le. - A biometrikus leolvasás nem készíthető elő. Biometrikus biztonsági frissítés szükséges. Nincs biometrikus vagy eszközazonosító beállítva. A kulcsfájl tartalmának sosem szabad megváltoznia, és a legjobb esetben véletlenszerűen előállított adatokat kellene tartalmaznia. diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index d0ddd48d2..d1d2c3e92 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -9,7 +9,6 @@ Bisa Diubah Lindungi Dari Perubahan Membuka Tautan - Hapus Kunci Sidik Jari Yang Tersimpan Tampilkan Kata Sandi Cari Buka diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index f79c18b62..f2c70a554 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -137,11 +137,7 @@ Attenzione Evita password con caratteri al di fuori del formato di codifica del testo nel file di database (i caratteri non riconosciuti vengono convertiti nella stessa lettera). Versione %1$s - Usa la scansione impronte per sbloccare la banca dati Password criptata salvata - Impossibile leggere la chiave biometrica. Eliminala e ripeti la procedura di riconoscimento. - Problema impronta: %1$s - Usa l\'impronta per salvare questa password Questo database non ha ancora alcuna password. Inserisci la password e/o il file chiave per sbloccare il database. \n @@ -175,7 +171,6 @@ Sposta Incolla Annulla - Elimina l\'impronta digitale salvata Sola lettura Modificabile Algoritmo di cifratura del database usato per tutti i dati. @@ -195,7 +190,6 @@ Accesso Continuare senza aver impostato una password di sblocco \? Continuare senza una chiave di cifratura\? - Impronta non riconosciuta Cronologia Aspetto Generale @@ -403,13 +397,10 @@ Ripristina cronologia Per poter <strong>mantenere la nostra libertà</strong>, <strong>risolvere bug</strong>, <strong>aggiungere funzionalità</strong> ed <strong>essere sempre attivi</strong>, facciamo affidamento sul tuo <strong>contributo</strong>. Contatto - Apri il database con il riconoscimento biometrico - Salva il riconoscimento biometrico Il keystore non è inizializzato correttamente. Impostazioni della chiave principale Chiave principale Contribuisci - Attenzione: Devi comunque ricordarti la password principale anche se usi il riconoscimento biometrico. Garantisci il permesso di scrittura per salvare i cambiamenti del database Nascondi link corrotti nella lista dei database recenti Nascondi i link di database corrotti @@ -437,8 +428,6 @@ Copia i campi di immissione utilizzando gli appunti del tuo dispositivo Database aperto Biometrico - Digita la password e poi fai clic sul pulsante biometrico. - Estrai le credenziali del database con dati biometrici Forza rinnovo Consigliato cambiare la chiave principale (giorni) Rinnovo raccomandato diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 0bb29f1b3..99d8e00e7 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -185,7 +185,6 @@ 開く 検索 パスワードを表示 - 保存済み生体鍵を削除 URL に移動 書き込み禁止 変更可能 @@ -272,20 +271,9 @@ 生体情報またはデバイス認証情報が未登録です。 生体認証セキュリティの更新が必要です。 キーストアが正しく初期化されていません。 - 生体認証プロンプトを開きロックを解除します - 生体認証プロンプトを開き認証情報を保存します - 生体認証の保存 - 警告:生体認証を使用する場合も、マスター パスワードを記憶する必要があります。 - 生体認証でデータベースを開く - 生体情報を使ってデータベースの認証情報を取り出します 保存された暗号化済みパスワード - 生体鍵が読み取れません。削除して生体認証の手順を繰り返してください。 - 生体情報を認識できませんでした - 生体認証エラー:%1$s データベースの保存済み認証情報はありません。 - 生体認証プロンプトを初期化できません。 crypto オブジェクトを取得できません。 - パスワードを入力し、[生体認証] ボタンをタップします。 履歴 デザイン 生体認証 diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index c2db3f414..9ed8597ed 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -123,7 +123,6 @@ 열기 검색 비밀번호 보이기 - 저장된 지문 삭제됨 링크로 가기 쓰기 보호됨 수정 가능 diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index f0fefca3a..2a83b9968 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -177,7 +177,6 @@ ഫയലിനെക്കുറിച്ചുള്ള വിവരം ബാക്ക്ഗ്രൗണ്ട് ബ്രാക്കറ്റുകൾ - മുന്നറിയിപ്പ്: ബയോമെട്രിക് തിരിച്ചറിയൽ ഉപയോഗിക്കുകയാണെങ്കിലും നിങ്ങൾ മാസ്റ്റർ പാസ്സ്‌വേഡ്‌ ഓർത്തിരിക്കണം. KeePassDX © %1$d Kunzisoft is <strong>ഓപ്പൺ സോഴ്‌സും</strong> and <strong>പരസ്യം ഇല്ലാത്ത</strong>. \nIt is provided as is, under <strong>GPLv3</strong> license, without any warranty. പാസ്‌വേഡ് അൺലോക്കുചെയ്യൽ പരിരക്ഷയില്ലാതെ തുടരുക\? @@ -190,7 +189,6 @@ ഏതെങ്കിലും ഒരു ഫീൽഡ് പകർത്തുക Path ശെരിയാണോ എന്ന് ഉറപ്പാക്കുക. AES - ബയോമെട്രിക് പിശക്: %1$s വിപുലീകരിച്ച ASCII ആപ്പിൽ ഉപയോഗിച്ചിരിക്കുന്ന ഐക്കൺ പാക്ക് അപ്പ്ലിക്കേഷന്റെ തീം @@ -222,13 +220,10 @@ ഡാറ്റാബേസ് തുറന്നു ഓട്ടോഫിൽ ക്രമീകരണങ്ങൾ KeePassDX ഉപയോഗിച്ച് പ്രവേശിക്കുക - ബയോമെട്രിക് തിരിച്ചറിയാൻ കഴിഞ്ഞില്ല - ഡാറ്റാബേസ് ബയോമെട്രിക് തിരിച്ചറിയൽ ഉപയോഗിച്ച് തുറക്കുക പിന്തുണയ്‌ക്കാത്ത ഡാറ്റാബേസ് പതിപ്പ്. പരിഷ്‌ക്കരണം കമാൻഡ് നടപ്പിലാക്കുന്നു. . . ഉപഡൊമെയ്ൻ തിരയുക - സംരക്ഷിച്ച ബയോമെട്രിക് കീ ഇല്ലാതാക്കുക മാസ്റ്റർകീയുടെ ക്രമീകരണങ്ങൾ ഇതിനെ കുറിച്ച് ചെറിയക്ഷരം @@ -298,13 +293,7 @@ ഉദ്ദേശിക്കുന്ന പ്രവര്‍ത്തനം സ്വീകരിക്കുന്ന ഒരു ഫയല്‍ മാനേജര്‍. ഡാറ്റാബേസ് ഫയലുകള്‍ നിര്‍മ്മിക്കാനും തുറക്കാനും സൂക്ഷിക്കാനും ACTION_CREATE_DOCUMENT നോടൊപ്പം ACTION_OPEN_DOCUMENT കൂടെ ആവശ്യമുണ്ട്. KeePassDX ഫോം ഓട്ടോഫില്ലിംഗ് ബയോമെട്രിക് - പാസ്‌വേഡ് ടൈപ്പുചെയ്യുക, തുടർന്ന് \"ബയോമെട്രിക്\" ബട്ടൺ ക്ലിക്കുചെയ്യുക. ഈ ഡാറ്റാബേസിൽ ഇതുവരെ ക്രെഡൻഷ്യൽ സംഭരിച്ചിട്ടില്ല. - ബയോമെട്രിക് കീ വായിക്കാൻ കഴിയില്ല. ദയവായി ഇത് ഇല്ലാതാക്കി ബയോമെട്രിക് തിരിച്ചറിയൽ നടപടിക്രമം ആവർത്തിക്കുക. - ബയോമെട്രിക് ഡാറ്റ ഉപയോഗിച്ച് ഡാറ്റാബേസ് ക്രെഡൻഷ്യൽ എക്‌സ്‌ട്രാക്റ്റുചെയ്യുക - ബയോമെട്രിക് തിരിച്ചറിയൽ സംരക്ഷിക്കുക - ക്രെഡൻഷ്യലുകൾ സംഭരിക്കുന്നതിന് ബയോമെട്രിക് പ്രോംപ്റ്റ് തുറക്കുക - ഡാറ്റാബേസ് അൺലോക്കുചെയ്യുന്നതിന് ബയോമെട്രിക് പ്രോംപ്റ്റ് തുറക്കുക എന്തായാലും ഫയൽ ചേർക്കണോ\? ഈ ഫയൽ അപ്‌ലോഡുചെയ്യുന്നത് നിലവിലുള്ള ഫയലിനെ മാറ്റിസ്ഥാപിക്കും. ഫയൽ മാനേജർ റദ്ദാക്കിയ ഫയലിലേക്കുള്ള ആക്സസ് diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 08dc1cc23..cbca33cdb 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -123,7 +123,6 @@ Åpne Søk Vis passord - Fjern fingeravtrykksnøkkelen Gå til nettadresse Skrivebeskyttet Les og skriv @@ -173,12 +172,7 @@ Ønsker du å fortsette uten passordbeskyttelse\? Ønsker du å fortsette uten en krypteringsnøkkel\? Versjon %1$s - Venter på fingeravtrykk Kryptert passord lagret - Kan ikke lese biometrisk nøkkel. Slett den og gjenta biometrisk gjenkjennelse. - Fremmed fingeravtrykk - Fingeravtrykksproblem: %1$s - Bruk fingeravtrykk til å lagre dette passordet Denne databasen har ikke et passord enda. Historikk Utseende @@ -347,8 +341,6 @@ Lukk felt Kan ikke opprette database med dette passordet og nøkkelfilen. Avansert opplåsing - Lagre biometrisk gjenkjennelse - Advarsel: Du vil fortsatt måtte huske hovedpassordet dersom du bruker biometrisk gjenkjenning. Aktiver Skru av Oppføringsikon @@ -424,7 +416,6 @@ Vis låseknapp Denne etiketten finnes allerede. Bekreft - Åpne database med biometrisk gjenkjenning Tilgang til filen nektes av filbehandleren Innvilg skrivetilgang for å lagre databaseendringer Skjul ødelagte lenker i listen over nylige databaser diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index baa3b6382..c4580b57f 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -170,7 +170,6 @@ Verplaatsen Plakken Annuleren - Opgeslagen biometrische gegevens verwijderen Alleen-lezen Lezen en schrijven Beveiliging @@ -198,12 +197,7 @@ Vermijd wachtwoordtekens buiten het tekstcoderingsformaat in het databasebestand (niet-herkende tekens worden geconverteerd naar dezelfde letter). Doorgaan zonder beveiliging voor wachtwoordontgrendeling\? Doorgaan zonder coderingssleutel\? - Biometrische herkenning gebruiken om de database te ontgrendelen Versleuteld wachtwoord is opgeslagen - Kan de biometrische gegevens niet lezen. Verwijder deze en herhaal de procedure voor biometrische herkenning. - Biometrie niet herkend - Probleem met biometrie: %1$s - Biometrische herkenning gebruiken om wachtwoorden op te slaan Deze database heeft nog geen opgeslagen gegevens. Geschiedenis Uiterlijk @@ -370,10 +364,6 @@ Velden sluiten Kan geen database aanmaken met dit wachtwoord en sleutelbestand. Geavanceerd ontgrendelen - Biometrische herkenning opslaan - Waarschuwing: Je moet nog steeds je hoofdwachtwoord onthouden als je biometrische herkenning gebruikt. - Database openen met biometrische herkenning - Database-referenties uitpakken met biometrische herkenning Biometrie Automatisch om biometrie vragen Automatisch om biometrie vragen als een database hiervoor is ingesteld @@ -443,7 +433,6 @@ Geeft de vergrendelknop weer in de gebruikersinterface Vergrendelknop weergeven Instellingen voor automatisch aanvullen - Voer het wachtwoord in en klik vervolgens op de knop \"Biometrie\". De sleutelopslag is niet correct geïnitialiseerd. Geselecteerde knooppunten definitief verwijderen\? Toegang tot het bestand ingetrokken door bestandsbeheer diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index ff711e818..753acdf16 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -85,7 +85,6 @@ ਸੋਧ-ਯੋਗ ਲਿਖਣ-ਤੋਂ-ਬਚਾਅ URL ਉੱਤੇ ਜਾਓ - ਸੰਭਾਲੀ ਬਾਇਓਮੈਟਰਿਕ ਕੁੰਜੀ ਹਟਾਓ ਪਾਸਵਰਡ ਵਿਖਾਓ ਖੋਜੋ ਖੋਲ੍ਹੋ @@ -272,14 +271,6 @@ ਜਦੋਂ ਸਕਰੀਨ ਬੰਦ ਹੋ ਜਾਵੇ ਤਾਂ ਡਾਟਾਬੇਸ ਨੂੰ ਲਾਕ ਕਰੋ ਕਲਿੱਪਬੋਰਡ ਨੋਟੀਫਿਕੇਸ਼ਨ ਮੂਲ ਆਪੇ-ਭਰਨ ਸੇਵਾ ਵਜੋਂ ਸੈੱਟ ਕਰੋ - ਪਾਸਵਰਡ ਲਿਖੋ ਅਤੇ ਤਦ \"ਬਾਇਓਮੈਟਰਿਕ\" ਬਟਨ ਨੂੰ ਕਲਿੱਕ ਕਰੋ। - ਬਾਇਓਮੈਟਰਿਕ ਗ਼ਲਤੀ: %1$s - ਬਾਇਓਮੈਟਰਿਕ ਪਛਾਣ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ - ਬਾਇਓਮੈਟਰਿਕ ਪਛਾਣ ਨਾਲ ਡਾਟਾਬੇਸ ਖੋਲ੍ਹੋ - ਸਾਵਧਾਨ: ਜੇ ਤੁਸੀਂ ਬਾਇਓਮੈਟਰਿਕ ਪਛਾਣ ਵਰਤਣੀ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਤੁਹਾਨੂੰ ਹਾਲੇ ਵੀ ਆਪਣਾ ਮੁੱਖ ਪਾਸਵਰਡ ਯਾਦ ਰੱਖਣ ਦੀ ਲੋੜ ਹੈ। - ਬਾਇਓਮੈਟਰਿਕ ਪਛਾਣ ਨੂੰ ਸੰਭਾਲੋ - ਸਨਦਾਂ ਸੰਭਾਲਣ ਲਈ ਬਾਇਓਮੈਟਰਿਕ ਪੁੱਛਗਿੱਛ ਕਰੋ - ਡਾਟਾਬੇਸ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਬਾਇਮੈਟਰਿਕ ਪੁੱਛਗਿੱਛ ਖੋਲ੍ਹੋ ਕੋਈ ਬਾਇਓਮੈਟਰਿਕ ਜਾਂ ਡਿਵਾਈਸ ਸਨਦ ਦਾਖਲ ਨਹੀਂ ਕੀਤੀ ਹੈ। ਇਹ ਡਾਟਾ ਕਿਵੇਂ ਵੀ ਹਟਾਉਣਾ ਹੈ\? ਕਿਵੇਂ ਵੀ ਫ਼ਾਇਲ ਜੋੜਨੀ ਹੈ\? diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a13aa720d..ca871847c 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -167,7 +167,6 @@ Przenieś Wklej Anuluj - Usuń zapisany klucz linii papilarnych Chroniony przed zapisem Modyfikowalne Ochrona @@ -195,11 +194,6 @@ Wersja %1$s Zapisano zaszyfrowane hasło Grupy poprzednie - Otwórz żądanie biometryczne, aby odblokować bazę danych - Nie można odczytać klucza biometrycznego. Usuń go i powtórz procedurę rozpoznawania biometrycznego. - Nie można rozpoznać odcisku palca - Problem z odciskiem palca: %1$s - Użyj odcisku palca, aby zapisać to hasło Baza danych nie ma jeszcze hasła. Historia Wygląd @@ -365,10 +359,6 @@ Zamknij pola Nie można utworzyć bazy danych przy użyciu tego hasła i pliku klucza. Zaawansowane odblokowywanie - Zapisz rozpoznawanie biometryczne - Ostrzeżenie: Jeśli korzystasz z rozpoznawania biometrycznego, musisz jeszcze zapamiętać hasło główne. - Otwarta baza danych z rozpoznawaniem biometrycznym - Wyodrębnij poświadczenia bazy danych z danymi biometrycznymi Biometryczne Automatyczne otwieranie monitu biometrycznego Włącz @@ -426,7 +416,6 @@ Wykonywanie polecenia… Czy trwale usunąć wybrane węzły\? Magazyn kluczy nie został poprawnie zainicjowany. - Wpisz hasło, a następnie kliknij przycisk \"Biometric\". Kosz grupy Automatycznie zapisuj bazę danych Zapisz bazę danych po każdym ważnym działaniu (w trybie „Modyfikowalnym”) @@ -519,7 +508,6 @@ Zapisz udostępnione informacje Powiadomienia Nie można pobrać obiektu kryptograficznego. - Nie można zainicjować monitu biometrycznego. Wymagana aktualizacja zabezpieczeń biometrycznych. Nie zarejestrowano żadnych danych biometrycznych ani danych urządzenia. Trwale usunąć wszystkie węzły z kosza\? diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 19e910d8f..acd7a2d36 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -163,7 +163,6 @@ Mover Colar Cancelar - Deletar impressão digital salva Somente leitura Gravação Proteção @@ -191,12 +190,7 @@ Evite caracteres fora do formato de codificação do arquivo do banco (todos os caracteres não reconhecidos são convertidos para a mesma letra). Continuar sem proteção de desbloqueio de senha\? Continuar sem chave de criptografia\? - Escaneamento de impressão digital para abrir o bando de dados Senha encriptada armazenada - Não pôde ler chave de impressão digital. Por favor, apague-a e repita o procedimento de reconhecimento biométrico. - Não pôde reconhecer impressão digital - Problema de Impressão digital: %1$s - Use Impressão digital para armazenar esta senha Ainda não há nenhuma senha armazenada nesse banco de dados. Histórico Aparência @@ -338,7 +332,7 @@ Pressione \'Voltar\' para trancar Trancar a base de dados quando o usuário pressiona o botão \"Voltar\" na tela inicial Limpar ao fechar - Bloquear o banco de dados quando a duração da área de transferência expirar ou a notificação for fechada depois do inicio do uso + Bloquear o banco de dados quando a duração da área de transferência expirar ou a notificação for fechada depois do início do uso Lixeira Seleção de entrada Mostrar campos de entrada no Magikeyboard quando estiver visualizando uma Entrada @@ -368,10 +362,6 @@ Campos fechados Impossibilitado de criar um banco de dados com essa senha e arquivo-chave. Desbloqueio avançado - Salvar reconhecimento biométrico - AVISO: Apesar de usar o reconhecimento biométrico, você ainda precisará lembrar sua senha mestra. - Abrir banco de dados com biometria - Extrair credenciais do banco de dados com biometria Biometria Abrir automaticamente o prompt de biometria Pedir automaticamente pelo prompt de biometria se a base de dados estiver configurada para usá-la @@ -428,7 +418,6 @@ Executando o comando… Apagar permanentemente os nós selecionados\? A chave não foi propriamente inicializada. - Digite sua senha e então clique no botão de \"Biometria\". Grupo de lixeira Salvar automaticamente a base de dados Salvar automaticamente a base de dados depois de uma ação importante (somente no modo \"Gravação\") diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 73e218486..612da17d2 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -169,7 +169,6 @@ Mover Colar Cancelar - Apagar o biométrico gravado Protegido contra escrita Pode ser modificado Criar base de dados @@ -191,9 +190,6 @@ Continuar sem a chave de criptografia\? Compilação %1$s Palavra-passe encriptada armazenada - Biométrico não reconhecido - Problema do biométrico: %1$s - Use o biométrico para armazenar esta palavra-chave Ainda não há nenhuma palavra-chave armazenada nesta base de dados. Histórico Aparência @@ -360,14 +356,11 @@ Permite que escaneie o seu biométrico para abrir a base de dados Usar desbloqueamento avançado para abrir a base de dados mais facilmente Base de dados aberta - Extrair credenciais da base de dados com biométrico - Abrir base de dados com biométrico A base de dados contém UUIDs duplicados. Gravar base de dados A criar a base de dados… Não foi possível gravar a base de dados. Impossível de criar uma base de dados com essa palavra-passe e ficheiro-chave. - Aviso: apesar de usar o reconhecimento biométrico, ainda precisará de se lembrar da sua palavra-passe. Este rótulo já existe. Reinicie a app que contém o formulário para ativar o bloqueio. Bloquear preenchimento automático @@ -387,7 +380,6 @@ Pesquisa de subdomínios Este texto não corresponde ao item solicitado. Adicionar item - Digite sua palavra-passe e depois clique no botão de \"Biométrico\". O token deve conter de %1$d até %2$d dígitos. Número máximo Apagar permanentemente os nós selecionados\? @@ -432,7 +424,6 @@ Descarregar %1$s Conceder acesso de gravação de ficheiro para gravar alterações na base de dados Copiar campos de entrada usando a área de transferência do seu aparelho - Gravar reconhecimento biométrico Dígitos Descartar alterações\? A chave não foi propriamente inicializada. @@ -448,7 +439,6 @@ Mostrar botão de bloqueio Segurança Esconder ligações quebradas de bases de dados - Escaneamento do biométrico para abrir a base de dados Fechar campos Biométrico Incapaz de criar o ficheiro de base de dados. @@ -462,7 +452,6 @@ Segredo OTP inválido. Contato Contador - Não pôde ler a chave biométrica. Por favor, apague-a e repita o procedimento de reconhecimento biométrico. Restaurar histórico OTP Nenhum diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 3d56dcc48..678d4aa93 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -284,7 +284,6 @@ Gravar a base de dados automaticamente depois de uma ação importante (somente no modo \"Modificável\") Gravar a base de dados automaticamente Grupo de cesto da reciclagem - Digite sua palavra-passe e depois clique no botão de \"Biométrico\". A chave não foi propriamente inicializada. Apagar permanentemente os nós selecionados\? A executar o comando… @@ -352,16 +351,6 @@ Biométrico Aparência Ainda não há nenhuma palavra-chave armazenada nesta base de dados. - Problema do biométrico: %1$s - Biométrico não reconhecido - Não pôde ler a chave biométrica. Por favor, apague-a e repita o procedimento de reconhecimento biométrico. - Extrair credenciais da base de dados com biométrico - Abrir base de dados com biométrico - Aviso: apesar de usar o reconhecimento biométrico, ainda precisará de se lembrar da sua palavra-passe. - Gravar reconhecimento biométrico - Use o biométrico para armazenar esta palavra-chave - Escaneamento do biométrico para abrir a base de dados - Apagar o biométrico gravado Definições da base de dados Alterar chave mestre Impossível de criar uma base de dados com essa palavra-passe e ficheiro-chave. diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 720e0e53d..8c53eee11 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -170,7 +170,6 @@ Deschide Căutare Arata parola - Ștergeți cheia biometrică salvată Accesați adresa URL Protejat la scriere Modificabil @@ -235,18 +234,8 @@ Versiunea %1$s Construiți %1$s Magazinul de chei nu este inițializat corect. - Deschideți promptul biometric pentru deblocarea bazei de date - Deschideți promptul biometric pentru a stoca datele de acreditare - Salvați recunoașterea biometrică - Avertisment: trebuie să vă amintiți parola de master dacă utilizați recunoașterea biometrică. - Baza de date deschisă cu recunoaștere biometrică - Extrageți datele de bază cu date biometrice Parola criptată stocată - Nu pot citi cheia biometrică. Vă rugăm să îl ștergeți și să repetați procedura de recunoaștere biometrică. - Nu a putut recunoaște biometric - Eroare biometrică: %1$s Această bază de date nu are încă credențiale stocate. - De acum nu există date creditate stocate. Istoric Aparenta Biometric diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 0196d4d6b..e9e3a5754 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -138,11 +138,7 @@ Внимание Избегайте использования в пароле символов вне кодировки текста в файле базы, так как эти символы будут преобразованы в одинаковый символ. Версия %1$s - Начать биометрическую разблокировку базы Зашифрованный пароль сохранён - Невозможно распознать биометрический ключ. Удалите его и повторите процедуру настройки биометрического распознавания. - Проблема с биометрическим ключом: %1$s - Используйте биометрический ключ, чтобы сохранить главный пароль Для этой базы главный пароль ещё не сохранён. Введите пароль и/или файл ключа, чтобы разблокировать базу. \n @@ -192,7 +188,6 @@ Переместить Вставить Отмена - Удалить биометрический ключ Только чтение Чтение и запись Сначала группы @@ -200,7 +195,6 @@ Название записи Продолжить без пароля для защиты базы\? Продолжить без ключа шифрования\? - Биометрический ключ не распознан История Внешний вид Общие @@ -365,10 +359,6 @@ Закрыть поля Невозможно создать базу с этим паролем и ключевым файлом. Дополнительная разблокировка - Сохранение биометрического ключа - Внимание: вам по-прежнему нужно помнить главный пароль при использовании использование функции биометрического распознавания. - Открыть базу биометрическим ключом - Извлекать главный пароль биометрическим ключом Биометрический ключ Автозапрос биометрического ключа Автоматически запрашивать биометрический ключ, если он установлен для базы @@ -426,7 +416,6 @@ Выполнение команды… Безвозвратно удалить выбранные элементы\? Хранилище ключей не инициализировано должным образом. - Введите пароль, затем нажмите кнопку биометрии. Группа \"корзины\" Автосохранение базы Сохранять базу после каждого важного действия (в \"режиме записи\") @@ -504,7 +493,6 @@ Всё равно удалить эти данные\? Удаление несвязанных данных может уменьшить размер вашей базы данных, но также может удалить данные, используемые для плагинов KeePass. Информация об учётных данных - Невозможно инициализировать ввод биометрического ключа. Отсутствует зарегистрированный биометрический ключ или учётные данные устройства. Сохранять поисковую информацию при ручном выборе записи Сохранять данные поиска diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 1c726b787..715bc2825 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -349,16 +349,6 @@ Visa antalet poster i en grupp Det går inte att skapa en databas med det här lösenordet och nyckelfil. Avancerad upplåsning - Radera sparad biometrisk nyckel - Öppna den biometriska prompten för att låsa upp databasen - Öppna den biometriska prompten för att lagra autentiseringsuppgifter - Spara biometrisk igenkänning - VARNING: Användandet av biometrisk igenkänning befriar dig inte från att veta ditt huvudlösenord. - Öppna databas med biometrisk igenkänning - Hämta databasinformation med biometrisk data - Kan inte läsa den biometriska nyckeln. Radera den och gör om den biometriska igenkänningsproceduren. - Känner inte igen biometrik - Biometriskt fel: %1$s Den här databasen har inga sparade autentiseringsuppgifter ännu. Utseende Biometrik @@ -426,7 +416,6 @@ Utför kommandot … Är du säker på att du vill radera de valda noderna permanent\? Keystore har inte initierats korrekt. - Skriv lösenordet innan du klickar på biometrik-knappen. Papperskorgsgruppen Autospara databas Spara databasen automatiskt efter varje viktig händelse (endast i läget \"Modifierbar\") diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 215e875a8..12917387c 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -123,7 +123,6 @@ Ara Parolayı göster - Kaydedilen parmak izini silin URL\'ye git Yazma korumalı Değiştirilebilir @@ -175,12 +174,7 @@ Şifreleme anahtarı olmadan devam edilsin mi\? Sürüm %1$s Yapı %1$s - Veri tabanının kilidini açmak için biyometrik taramayı aç Şifreli parola saklandı - Parmak izi anahtarı okunamadı. Şifreni geri yükle. - Parmak izi tanınamadı - Parmak izi sorunu: %1$s - Bu şifreyi saklamak için parmak izini kullanın Bu veritabanının henüz bir parolası yok. Geçmiş Görünüm @@ -350,10 +344,6 @@ Alanları kapat Bu parola ve anahtar dosyası ile veritabanı oluşturulamıyor. Gelişmiş kilit açma - Biyometrik tanımayı kaydedin - Uyarı: Biyometrik tanıma kullanıyorsanız hala ana parolanızı hatırlamanız gerekir. - Biyometrik tanıma ile veritabanı aç - Biyometrik verilerle veritabanı kimlik bilgilerini çıkar Biyometrik Biyometrik taramayı otomatik aç Vari tabanı, onu kullanacak biçimde ayarlandıysa biyometriği otomatik olarak sor @@ -410,7 +400,6 @@ Komut çalıştırılıyor… Seçilen düğümler kalıcı olarak silinsin mi\? Anahtar deposu düzgün bir şekilde başlatılmadı. - Parolayı yazın, sonra \"Biyometrik\" düğmesine tıklayın. Geri dönüşüm kutusu grubu Veritabanını otomatik kaydet Her önemli işlemden sonra veri tabanını kaydet (\"Değiştirilebilir\" modda) @@ -503,7 +492,6 @@ Paylaşılan bilgileri kaydet Bildirim Şifreleme nesnesi alınamıyor. - Biyometrik tarama başlatılamıyor. Biyometrik güvenlik güncellemesi gerekli. Biyometrik bilgiler veya aygıt kimlik doğrulama bilgileri kaydedilmedi. Geri dönüşüm kutusundaki tüm düğümler kalıcı olarak silinsin mi\? diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index d691cee8e..fbba7985c 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -203,7 +203,6 @@ Вставити Перемістити Скопіювати - Видалити збережений біометричний ключ Поле файла ключа Налаштування головного ключа Параметри безпеки @@ -266,9 +265,6 @@ Додати вузол Дочірні вузли Не вдалося знайти відповідне обладнання. - Не вдалося розпізнати біометричний ключ - Не вдалося розпізнати біометричний ключ. Видаліть його та повторіть процедуру створення ключа. - Попередження: Якщо ви користуєтеся біометричним ключем, вам однаково необхідно пам\'ятати головний пароль. Застарілі записи не показано Приховувати застарілі записи Набір піктограм застосунку @@ -434,15 +430,8 @@ Біометричний ключ Зовнішній вигляд Історія - Введіть пароль, а потім натисніть \"біометричну\" кнопку. У цій базі даних ще немає збережених облікових даних. - Помилка біометричного ключа: %1$s Зашифрований пароль збережено - Витяг облікових даних бази даних за допомогою біометричного ключа - Відкрити базу даних біометричним ключем - Зберегти біометричний ключ - Розблокувати базу даних біометричним ключем - Скористатися біометричним ключем щоб зберегти дані Сховище ключів не ініціалізовано належним чином. Збірка %1$s Видалити вибрані вузли остаточно\? @@ -519,7 +508,6 @@ Збереження спільних відомостей Сповіщення Не вдалося отримати крипто-об\'єкт. - Не вдалося ініціалізувати біометричний запит. Необхідно оновити біометричний захист. Біометричних чи облікових даних пристрою не зареєстровано. Видалити всі вузли з кошика остаточно\? diff --git a/app/src/main/res/values-v23/fingerprint.xml b/app/src/main/res/values-v23/fingerprint.xml index 7644d0522..9ca38763b 100644 --- a/app/src/main/res/values-v23/fingerprint.xml +++ b/app/src/main/res/values-v23/fingerprint.xml @@ -22,8 +22,7 @@ 80 5 7 - 80dp - 80dp + 80dp diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 545e7e6ef..93692defb 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -167,7 +167,6 @@ 粘贴 取消 显示密码 - 删除已保存的与生物识别相关的密钥 只读 可修改 搜索时忽略备份条目 @@ -192,7 +191,6 @@ 搜索结果 警告 版本 %1$s - 使用生物识别保存此密码 历史 外观 常规 @@ -230,11 +228,7 @@ 确定不使用密码保护? 确认不使用加密密钥吗? Build %1$s - 打开生物识别提示以解锁数据库 加密密码已保存 - 不能读取生物识别密钥,请删除所有生物识别密钥,并重新录入。 - 无法识别生物识别信息 - 生物识别错误:%1$s 当前数据库无密码。 设为默认的填充服务 启用自动填充功能,以快速填写其他应用中的表单 @@ -368,10 +362,6 @@ 关闭字段 无法使用此密码和密钥文件新建数据库。 高级解锁 - 保存生物识别信息 - 警告:即使您已经使用生物识别数据存储了凭据,你仍需牢记主密码 - 使用生物识别功能打开数据库 - 使用生物识别数据提取数据库凭据 生物识别 自动打开生物识别提示 生物识别密钥已配置时自动打开提示 @@ -427,7 +417,6 @@ 清空回收站 正在执行命令…… 是否永久删除选中的条目? - 请先输入密码,再点击“生物识别”按钮。 回收站(组) 自动保存数据库 在每次执行重要操作后保存数据库(仅在编辑模式下有效) @@ -519,7 +508,6 @@ 保存分享的信息 通知 无法检索加密对象。 - 无法初始化生物识别提示。 需要生物识别安全更新。 未登记生物识别或设备凭证。 从回收站永久删除所有节点? diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index ffff77858..4218d0f10 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -150,7 +150,6 @@ 貼上 取消 顯示密碼 - 移除現存生物識別金鑰 唯讀 讀寫 不要搜尋備份的項目 @@ -282,9 +281,6 @@ 驗證 添加項目 已儲存加密密碼 - 使用生物識別開啟資料庫 - 警告:即使已啟用生物識別,你仍須牢記你的主密碼。 - 儲存生物識別資訊 版本號 %1$s 版本 %1$s 確定永久刪除已選項目? @@ -298,7 +294,6 @@ 確定刪除生物識別加密金鑰嗎? 刪除全部生物識別加密金鑰 刪除加密金鑰 - 無法讀取生物識別金鑰。請刪除原有金鑰,再重新啟用生物識別。 金鑰庫未能初始化。 開啟現有資料庫 建立你的資料庫檔案 @@ -346,8 +341,6 @@ 一般 外觀 歷史 - 生物特徵驗證: %1$s - 無法通過生物特徵認證 仍要移除此資料? 仍要新增檔案? 上傳此檔案會取代現有的檔案。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 34aa42078..fe3c9ba9d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -187,7 +187,7 @@ Open Search Show password - Delete saved biometric key + Delete advanced unlock key Go to URL Write-protected Modifiable @@ -276,20 +276,20 @@ No biometric or device credential is enrolled. Biometric security update required. The keystore is not properly initialized. - Open the biometric prompt to unlock the database - Open the biometric prompt to store credentials - Save biometric recognition - Warning: You still need to remember your master password if you use biometric recognition. - Open database with biometric recognition - Extract database credential with biometric data + Open the advanced unlock prompt to unlock the database + Open the advanced unlock prompt to store credentials + Advanced unlock recognition + Warning: You still need to remember your master password if you use advanced unlock recognition. + Open database with advanced unlock recognition + Extract database credential with advanced unlock data Encrypted password stored - Can not read the biometric key. Please delete it and repeat the biometric recognition procedure. - Could not recognize biometric - Biometric error: %1$s + Can not read the advanced unlock key. Please delete it and repeat the unlock recognition procedure. + Could not recognize advanced unlock print + Advanced unlock error: %1$s This database does not have stored credential yet. - Unable to initialize biometric prompt. + Unable to initialize advanced unlock prompt. Unable to retrieve crypto object. - Type in the password, and then click the \"Biometric\" button. + Type in the password, and then click the \"Advanced unlock\" button. History Appearance Biometric diff --git a/art/ic_device_unlock.svg b/art/ic_device_unlock.svg new file mode 100644 index 000000000..43928ea55 --- /dev/null +++ b/art/ic_device_unlock.svg @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/art/ic_fingerprint_remove.svg b/art/ic_fingerprint_remove.svg deleted file mode 100644 index 137817263..000000000 --- a/art/ic_fingerprint_remove.svg +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/art/ic_keystore_remove.svg b/art/ic_keystore_remove.svg new file mode 100644 index 000000000..eb3217a50 --- /dev/null +++ b/art/ic_keystore_remove.svg @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + From e9d0efaf93fa885af17e930aa87f44893f441e8c Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 30 Nov 2020 17:20:58 +0100 Subject: [PATCH 005/113] Fix advanced unlock setting events --- .../settings/NestedAppSettingsFragment.kt | 129 ++++++++++++------ app/src/main/res/values-ar/strings.xml | 1 - app/src/main/res/values-b+sr+Latn/strings.xml | 1 - app/src/main/res/values-cs/strings.xml | 1 - app/src/main/res/values-da/strings.xml | 1 - app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-el/strings.xml | 1 - app/src/main/res/values-es/strings.xml | 1 - app/src/main/res/values-fr/strings.xml | 1 - app/src/main/res/values-hr/strings.xml | 1 - app/src/main/res/values-hu/strings.xml | 1 - app/src/main/res/values-it/strings.xml | 1 - app/src/main/res/values-ja/strings.xml | 1 - app/src/main/res/values-ml/strings.xml | 1 - app/src/main/res/values-nb/strings.xml | 1 - app/src/main/res/values-nl/strings.xml | 1 - app/src/main/res/values-pl/strings.xml | 1 - app/src/main/res/values-pt-rBR/strings.xml | 1 - app/src/main/res/values-pt-rPT/strings.xml | 1 - app/src/main/res/values-pt/strings.xml | 1 - app/src/main/res/values-ro/strings.xml | 1 - app/src/main/res/values-ru/strings.xml | 1 - app/src/main/res/values-sv/strings.xml | 1 - app/src/main/res/values-tr/strings.xml | 1 - app/src/main/res/values-uk/strings.xml | 1 - app/src/main/res/values-zh-rCN/strings.xml | 1 - app/src/main/res/values-zh-rTW/strings.xml | 1 - app/src/main/res/values/strings.xml | 2 +- 28 files changed, 86 insertions(+), 71 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt b/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt index 294068e62..d6d14c4f6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt @@ -30,6 +30,7 @@ import android.view.autofill.AutofillManager import android.widget.Toast import androidx.annotation.RequiresApi import androidx.appcompat.app.AlertDialog +import androidx.fragment.app.FragmentActivity import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.SwitchPreference @@ -49,6 +50,8 @@ import com.kunzisoft.keepass.utils.UriUtil class NestedAppSettingsFragment : NestedSettingsFragment() { + private var deleteKeysAlertDialog: AlertDialog? = null + override fun onCreateScreenPreference(screen: Screen, savedInstanceState: Bundle?, rootKey: String?) { // Load the preferences from an XML resource @@ -207,6 +210,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { setPreferencesFromResource(R.xml.preferences_advanced_unlock, rootKey) activity?.let { activity -> + val biometricUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.biometric_unlock_enable_key)) val deviceCredentialUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.device_credential_unlock_enable_key)) val autoOpenPromptPreference: SwitchPreference? = findPreference(getString(R.string.biometric_auto_open_prompt_key)) @@ -225,18 +229,31 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { false } } else { - setOnPreferenceChangeListener { _, newValue -> - val checked = (newValue as Boolean) - autoOpenPromptPreference?.isEnabled = checked - || deviceCredentialUnlockEnablePreference?.isChecked == true - if (checked) - deviceCredentialUnlockEnablePreference?.isChecked = false + setOnPreferenceClickListener { + val biometricChecked = biometricUnlockEnablePreference.isChecked + val deviceCredentialChecked = deviceCredentialUnlockEnablePreference?.isChecked ?: false + if (!biometricChecked) { + biometricUnlockEnablePreference.isChecked = true + deleteKeysMessage(activity) { + biometricUnlockEnablePreference.isChecked = false + autoOpenPromptPreference?.isEnabled = deviceCredentialChecked + } + } else { + if (deviceCredentialChecked) { + biometricUnlockEnablePreference.isChecked = false + deleteKeysMessage(activity) { + biometricUnlockEnablePreference.isChecked = true + deviceCredentialUnlockEnablePreference?.isChecked = false + } + } else { + autoOpenPromptPreference?.isEnabled = true + } + } true } } } - val deviceCredentialUnlockSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { BiometricUnlockDatabaseHelper.deviceCredentialUnlockSupported(activity) } else false @@ -250,12 +267,26 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { false } } else { - setOnPreferenceChangeListener { _, newValue -> - val checked = (newValue as Boolean) - autoOpenPromptPreference?.isEnabled = checked || - biometricUnlockEnablePreference?.isChecked == true - if (checked) - biometricUnlockEnablePreference?.isChecked = false + setOnPreferenceClickListener { + val deviceCredentialChecked = deviceCredentialUnlockEnablePreference.isChecked + val biometricChecked = biometricUnlockEnablePreference?.isChecked ?: false + if (!deviceCredentialChecked) { + deviceCredentialUnlockEnablePreference.isChecked = true + deleteKeysMessage(activity) { + deviceCredentialUnlockEnablePreference.isChecked = false + autoOpenPromptPreference?.isEnabled = biometricChecked + } + } else { + if (biometricChecked) { + deviceCredentialUnlockEnablePreference.isChecked = false + deleteKeysMessage(activity) { + deviceCredentialUnlockEnablePreference.isChecked = true + biometricUnlockEnablePreference?.isChecked = false + } + } else { + autoOpenPromptPreference?.isEnabled = true + } + } true } } @@ -267,36 +298,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { val deleteKeysFingerprints: Preference? = findPreference(getString(R.string.biometric_delete_all_key_key)) if (biometricUnlockSupported || deviceCredentialUnlockSupported) { deleteKeysFingerprints?.setOnPreferenceClickListener { - context?.let { context -> - AlertDialog.Builder(context) - .setMessage(resources.getString(R.string.biometric_delete_all_key_warning)) - .setIcon(android.R.drawable.ic_dialog_alert) - .setPositiveButton(resources.getString(android.R.string.ok) - ) { _, _ -> - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - BiometricUnlockDatabaseHelper.deleteEntryKeyInKeystoreForBiometric( - activity, - object : BiometricUnlockDatabaseHelper.BiometricUnlockErrorCallback { - fun showException(e: Exception) { - Toast.makeText(context, - getString(R.string.advanced_unlock_scanning_error, e.localizedMessage), - Toast.LENGTH_SHORT).show() - } - - override fun onInvalidKeyException(e: Exception) { - showException(e) - } - - override fun onBiometricException(e: Exception) { - showException(e) - } - }) - } - CipherDatabaseAction.getInstance(context.applicationContext).deleteAll() - } - .setNegativeButton(resources.getString(android.R.string.cancel)) - { _, _ -> }.show() - } + deleteKeysMessage(activity) false } } else { @@ -310,6 +312,41 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { } } + private fun deleteKeysMessage(activity: FragmentActivity, validate: (()->Unit)? = null) { + deleteKeysAlertDialog = AlertDialog.Builder(activity) + .setMessage(resources.getString(R.string.advanced_unlock_delete_all_key_warning)) + .setIcon(android.R.drawable.ic_dialog_alert) + .setPositiveButton(resources.getString(android.R.string.ok) + ) { _, _ -> + validate?.invoke() + deleteKeysAlertDialog?.setOnDismissListener(null) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + BiometricUnlockDatabaseHelper.deleteEntryKeyInKeystoreForBiometric( + activity, + object : BiometricUnlockDatabaseHelper.BiometricUnlockErrorCallback { + fun showException(e: Exception) { + Toast.makeText(context, + getString(R.string.advanced_unlock_scanning_error, e.localizedMessage), + Toast.LENGTH_SHORT).show() + } + + override fun onInvalidKeyException(e: Exception) { + showException(e) + } + + override fun onBiometricException(e: Exception) { + showException(e) + } + }) + } + CipherDatabaseAction.getInstance(activity.applicationContext).deleteAll() + } + .setNegativeButton(resources.getString(android.R.string.cancel) + ) { _, _ ->} + .create() + deleteKeysAlertDialog?.show() + } + private fun onCreateAppearancePreferences(rootKey: String?) { setPreferencesFromResource(R.xml.preferences_appearance, rootKey) @@ -369,7 +406,6 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { override fun onResume() { super.onResume() - activity?.let { activity -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { findPreference(getString(R.string.settings_autofill_enable_key))?.let { autoFillEnablePreference -> @@ -381,6 +417,11 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { } } + override fun onPause() { + deleteKeysAlertDialog?.dismiss() + super.onPause() + } + private var mCount = 0 override fun onStop() { super.onStop() diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 07021869a..51b1a3342 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -341,7 +341,6 @@ ضغط البيانات البيانات تعذر العثور على ماسح البصمة. - هل تريد حذف كل مفاتيح التشفير المرتبطة بالبصمة؟ احذف كل مفاتيح التشفير المرتبطة بالبصمة استخدم إلغاء القفل المتقدم لفتح قاعدة البيانات بسهولة يعرض زر القَفل في الواجهة diff --git a/app/src/main/res/values-b+sr+Latn/strings.xml b/app/src/main/res/values-b+sr+Latn/strings.xml index 067a50e19..40a1e8b8a 100644 --- a/app/src/main/res/values-b+sr+Latn/strings.xml +++ b/app/src/main/res/values-b+sr+Latn/strings.xml @@ -193,7 +193,6 @@ Nije moguće pronaći odgovarajući hardver. Uređaj koristi Android verziju %1$s, ali potrebana verzija je %2$s ili novija. Nije moguće pokrenuti ovu funkciju. - Izbriši sve ključeve za šifrovanje koji se odnose na biometrijsko prepoznavanje\? Izbriši sve ključeve za šifrovanje koji se odnose na biometrijsko prepoznavanje Brisanje ključeva za šifrovanje Automatski zatraži biometriju ako je baza podataka podešena da je koristi diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 00f8657ca..3d7245aed 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -217,7 +217,6 @@ Nechá otevřít databázi snímáním biometrického údaje Smazat šifrovací klíče Smazat všechny šifrovací klíče související s biometrickým rozlišením - Smazat všechny šifrovací klíče související s biometrickým rozlišením\? Tuto funkci se nedaří spustit. V zařízení je instalován Android %1$s, ale potřebná je verze %2$s a novější. Hardware nebyl rozpoznán. diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 775da96d4..2482668f9 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -216,7 +216,6 @@ Giver mulighed for at scanne biometriske for at åbne databasen Slet krypteringsnøgler Slet alle krypteringsnøgler, der er relateret til biometrisk genkendelse - Slet alle krypteringsnøgler, der er relateret til biometrisk genkendelse\? Funktionen kunne ikke startes. Android-version %1$s opfylder ikke minimum versionskrav %2$s. Kunne ikke finde den tilsvarende hardware. diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 8f7355f72..4ae49bf53 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -219,7 +219,6 @@ Zwischenablage Verschlüsselungsschlüssel löschen Alle mit der biometrischen Erkennung verbundenen Verschlüsselungsschlüssel löschen. - Sind Sie sicher, dass Sie alle mit der biometrischen Erkennung verknüpften Schlüssel löschen möchten\? Auf dem Gerät läuft Android %1$s, eine Version ab %2$s wäre aber nötig. Keine entsprechende Hardware. Papierkorb-Nutzung diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 2447aa0ec..dc947505b 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -357,7 +357,6 @@ Ζητήστε αυτόματα βιομετρία εάν η βάση δεδομένων έχει ρυθμιστεί για να τη χρησιμοποιήσει Διαγράψτε τα κλειδιά κρυπτογράφησης Διαγράψτε όλα τα κλειδιά κρυπτογράφησης που σχετίζονται με τη βιομετρική αναγνώριση - Διαγραφή όλων των κλειδιών κρυπτογράφησης που σχετίζονται με τη βιομετρική αναγνώριση; Ενεργοποίηση Απενεργοποίηση Κύριο κλειδί diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 423df5f49..71fd512da 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -206,7 +206,6 @@ Le permite escanear su huella dactilar u otro dato biométrico para abrir la base de datos Eliminar claves de cifrado Eliminar todas las claves de cifrado relacionadas con el reconocimiento biométrico - ¿Confirma que quiere eliminar todas las claves relativas al reconocimiento biométrico\? No se pudo iniciar esta funcionalidad. La versión de Android del dispositivo es %1$s, pero es necesaria la %2$s o posterior. No se encontró el hardware correspondiente. diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0962943d8..9561da61c 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -187,7 +187,6 @@ Permet de numériser votre empreinte biométrique pour ouvrir la base de données Supprimer les clés de chiffrement Supprime toutes les clés de chiffrement liées à la reconnaissance biométrique - Supprimer toutes les clés de chiffrement liées à la reconnaissance biométrique \? Impossible de démarrer cette fonctionnalité. L’appareil tourne sous Android %1$s, mais la version %2$s ou supérieure est requise. Impossible de trouver le matériel correspondant. diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 5c49ba536..aba004a6f 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -196,7 +196,6 @@ Otvaranje baze podataka skeniranjem biometrike Izbriši ključeve šifriranja Izbriši sve ključeve šifriranja povezane s biometrijskim prepoznavanjem - Izbrisati sve ključeve povezane s biometrijskim prepoznavanjem\? Nije moguće pronaći odgovarajući hardver. Ime datoteke Putanja diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 92fec1a26..005cb1736 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -221,7 +221,6 @@ Lehetővé teszi, hogy leolvassa az ujjlenyomatát az adatbázis megnyitásához Titkosítási kulcsok törlése Az összes ujjlenyomat-felismeréssel kapcsolatos titkosítási kulcs törlése - Biztos, hogy törli az összes ujjlenyomat-felismeréssel kapcsolatos titkosítási kulcsot\? A funkciót nem sikerült elindítani. Az eszköz Android %1$s rendszert futtat, de %2$s vagy újabb szükséges. Nem található a megfelelő hardver. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index f2c70a554..796761e9e 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -213,7 +213,6 @@ Consente la scansione biometrica per aprire il database Elimina chiavi di cifratura Elimina tutte le chiavi di cifratura relative al riconoscimento dell\'impronta - Eliminare tutte le chiavi di cifrature associate al riconoscimento biometrico \? Impossibile avviare questa funzione. La tua versione di Android %1$s non è la minima %2$s richiesta. L\'hardware relativo non è stato trovato. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 99d8e00e7..534ccab53 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -309,7 +309,6 @@ データベースが生体認証を使用するように設定されている場合、生体情報の取得を自動的に求めます 暗号鍵を削除 生体認証に関するすべての暗号鍵を削除します - 生体認証に関するすべての暗号鍵を削除しますか? この機能を起動できませんでした。 デバイスは Android %1$s を実行していますが、%2$s 以降が必要です。 対応するハードウェアが見つかりませんでした。 diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 2a83b9968..ba7ea9c8d 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -361,7 +361,6 @@ ഒരു ശൂന്യ കീ ഫയൽ ചേർക്കാൻ ശുപാർശ ചെയ്യുന്നില്ല. അനുവദനീയമായ പാസ്‌വേഡ് ജനറേറ്റർ പ്രതീകങ്ങൾ ക്രമീകരിക്കുക ഉപയോക്താവ് റൂട്ട് സ്ക്രീനിലെ ബാക്ക് ബട്ടൺ ക്ലിക്കുചെയ്യുമ്പോൾ ഡാറ്റാബേസ് ലോക്കുചെയ്യുക - ബയോമെട്രിക് തിരിച്ചറിയലുമായി ബന്ധപ്പെട്ട എല്ലാ എൻ‌ക്രിപ്ഷൻ കീകളും ഇല്ലാതാക്കണോ\? ബയോമെട്രിക് തിരിച്ചറിയലുമായി ബന്ധപ്പെട്ട എല്ലാ എൻ‌ക്രിപ്ഷൻ കീകളും ഇല്ലാതാക്കുക പാത ലിങ്കുചെയ്യാത്ത ഡാറ്റ നീക്കംചെയ്യുക diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index cbca33cdb..18f562846 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -198,7 +198,6 @@ Skru på fingeravtrykksåpning av database Slett krypteringsnøkler Slett alle fingeravtrykksnøkler som har med fingeravtrykksgjenkjennelse å gjøre - Er du sikker på at du vil slette alle nøklene som har med fingeravtrykk å gjøre? Kunne ikke starte denne funksjonen. Din Androidversjon %1$s oppfyller ikke minimumskravet, %2$s kreves. Fant ikke maskinvaren. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index c4580b57f..c4540487a 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -223,7 +223,6 @@ Gebruik biometrische herkenning om de database te openen Coderingssleutels verwijderen Alle sleutels voor biometrische herkenning verwijderen - Alle coderingssleutels voor biometrische herkenning verwijderen\? Kan deze functie niet starten. Het apparaat draait op Android %1$s, maar %2$s of hoger is vereist. De bijbehorende hardware werd niet gevonden. diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index ca871847c..f9b10932b 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -219,7 +219,6 @@ Umożliwia zeskanowanie danych biometrycznych w celu otwarcia bazy danych Usuń klucze szyfrowania Usuń wszystkie klucze szyfrowania związane z rozpoznawaniem linii papilarnych - Czy usunąć wszystkie klucze szyfrowania związane z rozpoznawaniem biometrycznym\? Nie można uruchomić tej funkcji. Urządzenie pracuje na systemie Android %1$s, ale wymaga wersji %2$s lub nowszej. Nie można znaleźć odpowiedniego sprzętu. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index acd7a2d36..88d79de82 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -215,7 +215,6 @@ Permite que você escaneie sua biometria para a abertura do banco de dados Apague chaves de encriptação Apague todas as chaves de encriptação relacionadas ao reconhecimento de Impressões digitais - Apagar todas as chaves de criptografia relacionadas ao reconhecimento biométrico\? Não foi possível iniciar esse recurso. O dispositivo está utilizando Android %1$s, mas precisa %2$s ou posterior. Não foi possível encontrar o hardware correspondente. diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 612da17d2..59caf2e96 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -474,7 +474,6 @@ Desbloqueio avançado Configurar a gestão de palavra-passe única (HOTP / TOTP) para gerar um token solicitado para autenticação de dois fatores (2FA). Lembrar locais de ficheiros-chave - Apagar todas as chaves de criptografia relacionadas ao reconhecimento biométrico\? Em progresso: %1$d%% Abrir automaticamente o escaneamento de biomẽtrico Desbloqueio avançado diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 678d4aa93..b19ab708d 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -341,7 +341,6 @@ Chave Mestre Desativar Ativar - Apagar todas as chaves de criptografia relacionadas ao reconhecimento biométrico\? Apague todas as chaves de encriptação relacionadas ao reconhecimento de biométrico Apague chaves de encriptação Pedir pelo biométrico automaticamente se a base de dados estiver configurada para usá-la diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 8c53eee11..2dafdff4d 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -268,7 +268,6 @@ Deschideți automat biometric prompt atunci când o cheie biometrică este definită pentru o bază de date Ștergeți cheile de criptare Ștergeți toate cheile de criptare legate de recunoașterea biometrică - Sigur doriți să ștergeți toate cheile legate de recunoașterea biometrică\? Nu s-a putut porni această caracteristică. Versiunea dvs. de Android %1$s nu corespunde versiunii minime %2$s necesare. Nu s-a putut găsi hardware-ul corespunzător. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index e9e3a5754..581c5166b 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -219,7 +219,6 @@ Включить разблокировку базы при помощи биометрического ключа Удалить ключи шифрования Удалить все ключи шифрования, связанные с распознаванием биометрического ключа - Удалить все ключи шифрования, связанные с биометрическим распознаванием\? Невозможно запустить эту функцию. Ваша версия Android %1$s, но требуется %2$s. Соответствующее оборудование не найдено. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 715bc2825..ef278761d 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -359,7 +359,6 @@ Öppna biometrisk prompt automatiskt när en biometrisk nyckel är definierad för en databas Radera krypteringsnycklar Radera alla krypteringsnycklar som hör till den biometriska igenkänningen - Är du säker på att du vill radera alla nycklar som hör till den biometriska igenkänningen\? Aktivera Avaktivera Historik diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 12917387c..a8bf8c420 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -200,7 +200,6 @@ Veritabanını açmak için biyometriklerinizi taramanızı sağlar Şifreleme anahtarlarını silin Parmak izi tanıma ile ilgili tüm şifreleme anahtarlarını silin - Biyometrik tanıma ile ilgili tüm şifreleme anahtarları silinsin mi\? Bu özellik başlatılamadı. Aygıtta Android %1$s çalışıyor, ancak %2$s veya sonraki bir sürüm gerekli. İlgili donanım bulunamadı. diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index fbba7985c..c81b85438 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -394,7 +394,6 @@ Назва файлу Пристрій працює під керуванням Android %1$s, але необхідний %2$s чи пізніші. Не вдалось запустити цю функцію. - Видалити всі ключі шифрування, пов\'язані з розпізнаванням біометричного ключа\? Видалити всі ключі шифрування, пов\'язані з розпізнаванням біометричного ключа Видалити ключі шифрування Автоматично запитувати біометричний ключ, якщо базу даних налаштовано для роботи з ним diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 93692defb..4bc8c9d24 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -244,7 +244,6 @@ 通过生物识别解锁数据库 删除加密密钥 删除所有与生物识别相关的密钥 - 要删除所有与生物识别相关的密钥吗? 无法启动此功能。 此设备运行 Android %1$s ,但应用需要 %2$s 或更高版本。 找不到所需的硬件。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 4218d0f10..0dc12e47a 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -291,7 +291,6 @@ 裝置鍵盤設定 啟用用作輸入密碼和其他欄位的自訂鍵盤 鍵盤 - 確定刪除生物識別加密金鑰嗎? 刪除全部生物識別加密金鑰 刪除加密金鑰 金鑰庫未能初始化。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fe3c9ba9d..94d50d479 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -328,7 +328,7 @@ Automatically request advanced unlock if the database is set up to use it Delete encryption keys Delete all encryption keys related to advanced unlock recognition - Delete all encryption keys related to advanced unlock recognition? + Delete all encryption keys related to advanced unlock recognition? Could not start this feature. The device is running Android %1$s, but needs %2$s or later. Could not find the corresponding hardware. From 6bac86638bb66d86a502f4a7b9d6b5ca1ff3323b Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 30 Nov 2020 17:45:58 +0100 Subject: [PATCH 006/113] Change fingerprint pref icon by a bolt --- app/src/main/res/drawable/prefs_bolt_24dp.xml | 13 +++++++++++++ .../main/res/drawable/prefs_fingerprint_24dp.xml | 9 --------- app/src/main/res/xml/preferences.xml | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 app/src/main/res/drawable/prefs_bolt_24dp.xml delete mode 100644 app/src/main/res/drawable/prefs_fingerprint_24dp.xml diff --git a/app/src/main/res/drawable/prefs_bolt_24dp.xml b/app/src/main/res/drawable/prefs_bolt_24dp.xml new file mode 100644 index 000000000..6b711c3c8 --- /dev/null +++ b/app/src/main/res/drawable/prefs_bolt_24dp.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/drawable/prefs_fingerprint_24dp.xml b/app/src/main/res/drawable/prefs_fingerprint_24dp.xml deleted file mode 100644 index 7783072a5..000000000 --- a/app/src/main/res/drawable/prefs_fingerprint_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index eca6d13e4..05fd37224 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -34,7 +34,7 @@ Date: Mon, 30 Nov 2020 17:50:47 +0100 Subject: [PATCH 007/113] Upgrade to 2.9.3 and update CHANGELOG --- CHANGELOG | 3 +++ app/build.gradle | 4 ++-- fastlane/metadata/android/en-US/changelogs/47.txt | 1 + fastlane/metadata/android/fr-FR/changelogs/47.txt | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/47.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/47.txt diff --git a/CHANGELOG b/CHANGELOG index b6ed6de41..3ab9bac28 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +KeePassDX(2.9.3) + * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 + KeePassDX(2.9.2) * Managing OTP links from QR applications #556 * Prevent manual creation of existing field name #718 diff --git a/app/build.gradle b/app/build.gradle index 76f750f43..513ecacf3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.kunzisoft.keepass" minSdkVersion 14 targetSdkVersion 30 - versionCode = 46 - versionName = "2.9.2" + versionCode = 47 + versionName = "2.9.3" multiDexEnabled true testApplicationId = "com.kunzisoft.keepass.tests" diff --git a/fastlane/metadata/android/en-US/changelogs/47.txt b/fastlane/metadata/android/en-US/changelogs/47.txt new file mode 100644 index 000000000..0310fcc24 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/47.txt @@ -0,0 +1 @@ + * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/47.txt b/fastlane/metadata/android/fr-FR/changelogs/47.txt new file mode 100644 index 000000000..5c7e79bd4 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/47.txt @@ -0,0 +1 @@ + * Déverouillage de base de données avec identifiants de l'appareil (PIN/Password/Pattern) #779 #102 \ No newline at end of file From 3d12a0e8e943f7389459045d536aba8a13fad64a Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 1 Dec 2020 13:48:08 +0100 Subject: [PATCH 008/113] Fix fingerprint none enrolled detection --- .../kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt | 5 ++--- .../keepass/biometric/BiometricUnlockDatabaseHelper.kt | 6 ++++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index bf7cbb6cd..daf882b38 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -364,9 +364,8 @@ class AdvancedUnlockedManager(var context: FragmentActivity, } override fun onBiometricException(e: Exception) { - e.localizedMessage?.let { - setAdvancedUnlockedMessageView(it) - } + val errorMessage = e.cause?.localizedMessage ?: e.localizedMessage ?: "" + setAdvancedUnlockedMessageView(errorMessage) } private fun showFingerPrintViews(show: Boolean) { diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt index 056aee485..65700bfbd 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt @@ -311,7 +311,8 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { fun canAuthenticate(context: Context): Int { return try { BiometricManager.from(context).canAuthenticate( - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R + && PreferencesUtil.isDeviceCredentialUnlockEnable(context)) { BIOMETRIC_STRONG or DEVICE_CREDENTIAL } else { BIOMETRIC_STRONG @@ -321,7 +322,8 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { Log.e(TAG, "Unable to authenticate with strong biometric.", e) try { BiometricManager.from(context).canAuthenticate( - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R + && PreferencesUtil.isDeviceCredentialUnlockEnable(context)) { BIOMETRIC_WEAK or DEVICE_CREDENTIAL } else { BIOMETRIC_WEAK From b4f05d4da7df59c472536bb91a4010f849fb8cb8 Mon Sep 17 00:00:00 2001 From: Stephan Paternotte Date: Sat, 21 Nov 2020 20:06:46 +0000 Subject: [PATCH 009/113] Translated using Weblate (Dutch) Currently translated at 100.0% (482 of 482 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/ --- app/src/main/res/values-nl/strings.xml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index baa3b6382..3b3c312b1 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -506,4 +506,27 @@ Gegevens Niet-gekoppelde gegevens verwijderen Verwijdert bijlagen die in de database staan, maar niet aan een item zijn gekoppeld + Geeft de UUID weer die aan een item is gekoppeld + UUID tonen + Het opslaan van gegevens is niet toegestaan voor een database die is geopend als alleen-lezen. + Vraag om gegevens op te slaan wanneer een formulier is gevalideerd + Vragen om gegevens op te slaan + Probeer zoekinformatie op te slaan bij u een handmatige invoerselectie + Zoekinformatie opslaan + Sluit de database na een selectie voor automatisch aanvullen + Database sluiten + Schakel na het vergrendelen van de database automatisch terug naar het vorige toetsenbord + Database vergrendelen + Probeer gedeelde informatie op te slaan bij een handmatige invoerselectie + Gedeelde info opslaan + Melding + Kan crypto-object niet ophalen. + Kan biometrische prompt niet initialiseren. + Biometrische beveiligingsupdate vereist. + Geen biometrische gegevens of apparaatgegevens geregistreerd. + Alles definitief uit de prullenbak verwijderen\? + Registratiemodus + Veilige modus + Zoekmodus + Het opslaan van een nieuw item is niet toegestaan in een alleen-lezen database \ No newline at end of file From 364065ed51569ee9692865e89fab78a7801ad72b Mon Sep 17 00:00:00 2001 From: abidin toumi Date: Sat, 21 Nov 2020 20:43:33 +0000 Subject: [PATCH 010/113] Translated using Weblate (Arabic) Currently translated at 74.6% (360 of 482 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ar/ --- app/src/main/res/values-ar/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 494593422..dac5b383a 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -115,7 +115,7 @@ وظيفة اشتقاق المفتاح مهلة التطبيق مدة الانتظار قبل إقفال قاعدة البيانات - تصفَّح الملفات بتثبيت مدير الملفات OpenIntents + المحرر الذي يقبل هاذا الفعل ACTION_CREATE_DOCUMENT و ACTION_OPEN_DOCUMENT ضروري لانتاج, فتح وحفض ملفات قاعدة البيانات. بعض الأجهزة لا تسمح للتطبيقات باستعمال الحافظة. مهلة الحافظة مدة التخزين في الحافظة(إذا كان جهازك يدعمها) @@ -291,7 +291,7 @@ الخوارزمية أرقام العداد - عين كلمة المرور للمرة الواحدة + كلمة المرور للمرة الواحدة UUID من أجل <strong>حماية خصوصيتا</strong>٫<strong> إصلاح العلل</strong>٫ <strong>إضافة مميزات</strong> <strong>وجعلنا نشطاء دائما</strong>٫ نحن نعتمد على <strong>مساهمتك</strong>. خانة تأشير الملف المفتاحي From d5cd07fe7651884efc514d615920d06a8c511d90 Mon Sep 17 00:00:00 2001 From: jan madsen Date: Mon, 23 Nov 2020 16:14:33 +0000 Subject: [PATCH 011/113] Translated using Weblate (Danish) Currently translated at 98.7% (477 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/da/ --- app/src/main/res/values-da/strings.xml | 29 +++++++++++++++----------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index ab090990e..b6c18c72d 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -35,7 +35,7 @@ Nogle enheder, vil ikke lade programmer bruge udklipsholderen. Kunne ikke rydde udklipsholderen Udklipsholder timeout - Varighed af opbevaring i udklipsholder + Varighed af opbevaring i udklipsholder (hvis det understøttes) Vælg for at kopiere %1$s til udklipsholder Opretter databasenøgle… Database @@ -212,7 +212,7 @@ Angiv tilladte tegn for adgangskodegenerator Udklipsholder Udklipsholdermeddelelser - Aktivér udklipsholder for at kopiere felter når en post vises + Vis udklipsholder for at kopiere felter når en post vises Hvis automatisk sletning af udklipsholder mislykkes, slet historikken manuelt. Lås Skærmlås @@ -224,7 +224,7 @@ Slet alle krypteringsnøgler, der er relateret til biometrisk genkendelse Slet alle krypteringsnøgler, der er relateret til biometrisk genkendelse\? Funktionen kunne ikke startes. - Android-version %1$s opfylder ikke minimum versionskrav %2$s. + Enheden kører Android %1$s, men har brug for %2$s eller nyere. Kunne ikke finde den tilsvarende hardware. Filnavn Sti @@ -247,13 +247,13 @@ Magikeyboard Aktiver et brugerdefineret tastatur, der udfylder adgangskoder og alle identitetsfelter Tillad ingen hovednøgle - Aktiver knappen \"Åbn\", hvis der ikke er valgt nogen legitimationsoplysninger + Tillader at trykke på knappen \"Åbn\", hvis der ikke er valgt nogen legitimationsoplysninger Skrivebeskyttet Åbn database skrivebeskyttet som standard Pædagogiske tips Fremhæv elementer for at lære, hvordan programmet fungerer Nulstil pædagogiske tip - Vis alle pædagogiske info igen + Vis al uddannelsesinformation igen Nulstilling af pædagogiske tips Opret databasefilen Opret den første adgangskodeadministrationsfil. @@ -448,10 +448,10 @@ For at <strong>holde vores frihed</strong>, <strong>rette fejl</strong>, <strong>tilføje funktioner</strong> og <strong>at være altid aktiv</strong>, regner vi med <strong>bidrag</strong>. Hurtig søgning Anmod om en søgning når en database åbnes - Gem placering af databaser - Husk placeringen af databaser - Gem placering af nøglefiler - Husker placeringen af databasernøglefiler + Husk placeringer af databaser + Holder styr på, hvor databaserne gemmes + Husk placering af nøglefiler + Holder styr på, hvor nøglefiler gemmes Vis seneste filer Vis placeringer af de seneste databaser Skjule brudte databaselinks @@ -464,7 +464,7 @@ Kassér Kasser ændringer\? Valider - Foreslår automatisk søgeresultater fra webdomænet eller applikationsId + Foreslår automatisk søgeresultater fra webdomænet eller applikations-id Automatisk søgning Viser låseknappen i brugergrænsefladen Vis låseknap @@ -479,10 +479,10 @@ Blokeringsliste for webdomæne Blokeringsliste der forhindrer automatisk udfyldning af programmer Blokeringsliste for program - Skift automatisk tilbage til det forrige tastatur efter udførelse af automatisk tastehandling + Skift automatisk tilbage til det forrige tastatur efter udførelse af \"Automatisk tastehandling\" Auto nøglehandling Skift automatisk tilbage til det forrige tastatur på databasens legitimationsskærm - Database legitimationsoplysninger skærm + Skærmbilledet til databaselegitimationsoplysninger Skifte tastatur Filter Søg på webdomæner med begrænsninger på underdomæner @@ -524,4 +524,9 @@ Søgetilstand Det er ikke tilladt at gemme et nyt element i en skrivebeskyttet database Oplysninger om legitimationsoplysninger + Der er ikke tilmeldt biometriske legitimationsoplysninger eller enhedsoplysninger. + Overfør en vedhæftet fil til posten for at gemme vigtige eksterne data. + Forsøger at gemme delte oplysninger, når der foretages et manuelt indtastningsvalg + Forsøger at gemme delte oplysninger, når der foretages et manuelt indtastningsvalg + Feltnavnet findes allerede. \ No newline at end of file From ad6e4daa220ec3551f447b6c4ccfba21ad075dbf Mon Sep 17 00:00:00 2001 From: Retrial Date: Sun, 22 Nov 2020 19:59:12 +0000 Subject: [PATCH 012/113] Translated using Weblate (Greek) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/ --- app/src/main/res/values-el/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 19511f474..7f4c7378a 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -480,7 +480,7 @@ Λίστα αποκλεισμού Εφαρμογών Λίστα αποκλεισμού που αποτρέπει την αυτόματη συμπλήρωση εφαρμογών Αυτόματη ενέργεια πλήκτρου - Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο μετά την εκτέλεση της ενέργειας του αυτόματου πλήκτρου + Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο μετά την εκτέλεση της ενέργειας του \"Αυτόματου πλήκτρου\" Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο στην οθόνη διαπιστευτηρίων βάσης δεδομένων Οθόνη διαπιστευτηρίων βάσης δεδομένων Εναλλαγή πληκτρολογίου @@ -527,4 +527,5 @@ Λειτουργία αποθήκευσης Λειτουργία αναζήτησης Η αποθήκευση ενός νέου αντικειμένου δεν επιτρέπεται σε μια βάση δεδομένων μόνο για ανάγνωση + Το όνομα πεδίου υπάρχει ήδη. \ No newline at end of file From 4afadb779cde83af7ebee45f22c301ef4653f6c6 Mon Sep 17 00:00:00 2001 From: HARADA Hiroyuki Date: Mon, 23 Nov 2020 09:34:12 +0000 Subject: [PATCH 013/113] Translated using Weblate (Japanese) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/ --- app/src/main/res/values-ja/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 0bb29f1b3..49c93d4e6 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -402,7 +402,7 @@ データベース認証情報の画面 データベース認証情報の画面で、切り替え前のキーボードへ自動的に戻します 自動キーアクション - 自動キーアクションの実行後、切り替え前のキーボードへ自動的に戻します + [自動キーアクション] の実行後、切り替え前のキーボードへ自動的に戻します データベースをロック データベースのロック後、切り替え前のキーボードへ自動的に戻します データベースを閉じる @@ -524,4 +524,5 @@ データの保存は読み取り専用として開かれたデータベースでは許可されていません。 保存モード 検索モード + フィールド名はすでに存在します。 \ No newline at end of file From 2646c0f0ee38efc4bacf65992559fc89db27624c Mon Sep 17 00:00:00 2001 From: solokot Date: Sun, 22 Nov 2020 21:24:04 +0000 Subject: [PATCH 014/113] Translated using Weblate (Russian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/ --- app/src/main/res/values-ru/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 0196d4d6b..5f2c95094 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -527,4 +527,5 @@ Режим записи Режим поиска Сохранение новых записей невозможно, т.к. база открыта только для чтения + Поле с таким именем уже существует. \ No newline at end of file From e4b2b930afd9506ee8172881eb6ff88d8d2aa6f0 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Sun, 22 Nov 2020 20:23:49 +0000 Subject: [PATCH 015/113] Translated using Weblate (Ukrainian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/ --- app/src/main/res/values-uk/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index d691cee8e..e314b3018 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -484,8 +484,8 @@ Фільтр Додати елемент Перемикання клавіатури - Автоматично перемикатися до попередньої клавіатури після виконання дії Самочинного введення - Самочинне введення + Автоматично перемикатися до попередньої клавіатури після виконання дії «Автоматична дія кнопки» + Автоматична дія кнопки Автоматичне перемикання до попередньої клавіатури, на екрані входу до бази даних Екран входу до бази даних База даних KeePass має містити лише невеликі файли утиліт (наприклад, файли ключів PGP). @@ -527,4 +527,5 @@ Режим збереження Режим пошуку Збереження нового елемента заборонено в базі даних лише для читання + Назва поля вже існує. \ No newline at end of file From 017aaf2e540fef219c7baf3105415ad3dd83975d Mon Sep 17 00:00:00 2001 From: Eric Date: Mon, 23 Nov 2020 03:45:14 +0000 Subject: [PATCH 016/113] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 545e7e6ef..16c91d57f 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -484,7 +484,7 @@ 文本和请求的条目不匹配. 添加条目 数据库凭据屏幕 - 执行自动键动作后,自动切换回前一个键盘 + 执行“自动键动作”后,自动切换回前一个键盘 自动键动作 如果显示数据库凭据屏幕,则自动返回到上一个键盘 切换键盘 @@ -527,4 +527,5 @@ 保存模式 搜索模式 只读数据库不允许保存新条目 + 字段名已经存在。 \ No newline at end of file From c04762154803aed9c43bdf4a48c77deaab834e52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 22 Nov 2020 20:15:51 +0000 Subject: [PATCH 017/113] Translated using Weblate (Turkish) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/ --- app/src/main/res/values-tr/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 215e875a8..c0037c773 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -467,7 +467,7 @@ Alt etki alanı arama Bu metin istenen ögeyle eşleşmiyor. Öge ekle - Otomatik tuş eylemini gerçekleştirdikten sonra otomatik olarak önceki klavyeye dön + \"Otomatik tuş eylemini\" gerçekleştirdikten sonra otomatik olarak önceki klavyeye dön Otomatik tuş eylemi Veri tabanı kimlik bilgileri ekranında otomatik olarak önceki klavyeye dön Veri tabanı kimlik bilgileri ekranı @@ -511,4 +511,5 @@ Kaydetme modu Arama modu Salt okunur bir veri tabanında yeni bir öge kaydetmeye izin verilmiyor + Alan adı zaten var. \ No newline at end of file From 1384c6661db35c315c317c1bb6c5d4e5f27a0521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=2E=20R=C3=BCdinger?= Date: Wed, 25 Nov 2020 12:55:40 +0000 Subject: [PATCH 018/113] Translated using Weblate (German) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/ --- app/src/main/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index ce7c5406b..c410d583b 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -498,7 +498,7 @@ Tastatur wechseln Auto-Key-Aktion Datenbank-Anmeldebildschirm - Automatisches Zurückschalten auf die vorherige Tastatur nach Ausführung der automatischen Tastenaktion + Nach Ausführung der automatischen Tastenaktion automatisch zur vorherigen Tastatur wechseln. Automatisches Zurückschalten zur vorherigen Tastatur auf dem Datenbank-Anmeldebildschirm Laden Sie einen Anhang für Ihren Eintrag hoch, um wichtige externe Daten zu speichern. Anmeldeinformationen From f191259f378ed0d87c7765544946ee2a1b6a3110 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Wed, 25 Nov 2020 12:54:27 +0000 Subject: [PATCH 019/113] Translated using Weblate (German) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/ --- app/src/main/res/values-de/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index c410d583b..74ff6bb9b 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -539,4 +539,5 @@ Versuche bei manueller Eingabeauswahl gemeinsam genutzte Informationen zu speichern Gemeinsam genutzte Informationen speichern Sollen alle ausgewählten Knoten wirklich aus dem Papierkorb gelöscht werden\? + Der Feldname existiert bereits. \ No newline at end of file From 2bc068d65af9c21a4ef3f3f9c47ed8482ea8e5c9 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Wed, 25 Nov 2020 13:23:49 +0000 Subject: [PATCH 020/113] Translated using Weblate (Italian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/ --- app/src/main/res/values-it/strings.xml | 108 +++++++++++++++---------- 1 file changed, 66 insertions(+), 42 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index f79c18b62..c8ab6ceba 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -27,11 +27,11 @@ Aggiungi gruppo Algoritmo di cifratura Scadenza app - Tempo di inattività prima del blocco dell\'app + Tempo di inattività prima del blocco della base di dati App Impostazioni app Parentesi - È necessario un file manager che accetti gli Intent ACTION_CREATE_DOCUMENT e ACTION_OPEN_DOCUMENT per creare, aprire e salvare i file di database. + È necessario un gestore di file che accetti gli Intent ACTION_CREATE_DOCUMENT e ACTION_OPEN_DOCUMENT per creare, aprire e salvare i file di base di dati. Appunti eliminati Errore negli appunti Alcuni dispositivi non permettono alle app di usare gli appunti. @@ -39,15 +39,15 @@ Scadenza appunti Tempo prima di eliminare gli appunti (se supportato dal dispositivo) Copia %1$s negli appunti - Creazione file chiave database… + Creazione file chiave base di dati… Banca dati - Decodifica contenuto database… - Usa come database predefinito + Decodifica contenuto base di dati… + Usa come base di dati predefinita Numeri KeePassDX © %1$d Kunzisoft è un programma <strong>open-source</strong> e <strong>senza pubblicità</strong>. \nViene distribuito sotto le condizioni della licenza <strong>GPL versione 3</strong> o successiva, senza alcuna garanzia. Note - Apri un database esistente + Apri una base di dati esistente Ultimo accesso Annulla Conferma password @@ -64,10 +64,10 @@ La codifica a flusso Arcfour non è supportata. KeePassDX non può gestire questo URI. Impossibile creare il file - Lettura del database fallita. + Impossibile leggere la base di dati. Assicurati che il percorso sia corretto. Inserisci un nome. - Memoria insufficiente per caricare l\'intero database. + Memoria insufficiente per caricare l\'intera base di dati. Deve essere selezionato almeno un tipo di generazione password. Le password non corrispondono. \"Livello\" troppo alto. Impostato a 2147483648. @@ -87,24 +87,24 @@ Password Non è possibile leggere le credenziali. Algoritmo errato. - Formato database non riconosciuto. + Formato della base di dati non riconosciuto. Il file chiave è vuoto. Lunghezza Dimensione elenco elementi Dimensione del testo nell\'elenco del gruppo - Caricamento database… + Caricamento della base di dati… Minuscole Nascondi le password Maschera le password (***) in modo predefinito Informazioni Modifica chiave principale Impostazioni - Impostazioni database + Impostazioni base di dati Elimina Dona Modifica Nascondi password - Blocca database + Blocca la base di dati Apri Cerca Mostra password @@ -115,16 +115,16 @@ Installa un browser web per aprire questo URL. Non cercare nelle voci di backup Ometti i gruppi \"Backup\" e \"Cestino\" dai risultati di ricerca - Creazione nuovo database… + Creazione di una nuova base di dati… In corso… Protezione Sola lettura - KeePassDX richiede l\'autorizzazione di scrittura per poter modificare il tuo database. + KeePassDX richiede l\'autorizzazione di scrittura per poter modificare la tua base di dati. Elimina Root Livello cifratura Livelli di cifratura aggiuntivi forniscono una maggiore protezione contro attacchi di tipo forza bruta, ma può rallentare il caricamento e il salvataggio. - Salvataggio database… + Salvataggio della base di dati… Spazio Cerca Ordine naturale @@ -132,17 +132,17 @@ Titolo/descrizione voce Risultati ricerca Trattino basso - Versione database non supportata. + Versione della base di dati non supportata. Maiuscole Attenzione - Evita password con caratteri al di fuori del formato di codifica del testo nel file di database (i caratteri non riconosciuti vengono convertiti nella stessa lettera). + Evita password con caratteri al di fuori del formato di codifica del testo nel file di base di dati (i caratteri non riconosciuti vengono convertiti nella stessa lettera). Versione %1$s Usa la scansione impronte per sbloccare la banca dati Password criptata salvata Impossibile leggere la chiave biometrica. Eliminala e ripeti la procedura di riconoscimento. Problema impronta: %1$s Usa l\'impronta per salvare questa password - Questo database non ha ancora alcuna password. + Questa base di dati non ha ancora alcuna password. Inserisci la password e/o il file chiave per sbloccare il database. \n \nEseguire il backup del file di database in un luogo sicuro dopo ogni modifica. @@ -178,7 +178,7 @@ Elimina l\'impronta digitale salvata Sola lettura Modificabile - Algoritmo di cifratura del database usato per tutti i dati. + Algoritmo di cifratura della base di dati usato per tutti i dati. Per generare la chiave per l\'algoritmo di cifratura, la chiave principale viene trasformata usando una funzione di derivazione della chiave (con un sale casuale). Utilizzo di memoria Quantità di memoria (in byte) utilizzabili dalla funzione di derivazione della chiave. @@ -226,7 +226,7 @@ Nome file Percorso Assegna una chiave master - Crea un nuovo database + Crea una nuova base di dati Uso del Cestino Sposta i gruppi e le voci nel gruppo \"Cestino\" prima di eliminarlo Carattere campi @@ -311,7 +311,7 @@ Pacchetto icone Pacchetto icone usato nell\'app Modifica elemento - Caricamento del database fallito. + Caricamento della base di dati fallito. Caricamento della chiave fallito. Prova a diminuire l\' \"Utilizzo memoria\" del KDF. Mostra nomi utente Mostra i nomi utente negli elenchi @@ -369,7 +369,7 @@ Sicurezza Sfondo Identificativo univoco universale - Impossibile creare un database con questa password e file chiave. + Impossibile creare una base di dati con questa password e file chiave. Sblocco avanzato Cronologia Imposta password usa e getta @@ -388,38 +388,38 @@ Il periodo deve essere tra %1$d e %2$d secondi. Il token deve contenere tra %1$d e %2$d cifre. %1$s con le stesse credenziali univoche %2$s è già esistente. - Sto creando il database… + Sto creando la base di dati… Impostazioni di sicurezza - Il databse contiene identificativi univoci univerali duplicati. - Non è possibile salvare il database. - Salva il database + La base di dati tiene identificativi univoci univerali duplicati. + Non è possibile salvare la base di dati. + Salva la base di dati Svuota il cestino Esecuzione del comando… Vuoi eliminare definitivamente i nodi selezionati\? Allegati - Richiedi una ricerca quando un database viene aperto + Richiedi una ricerca quando una base di dati viene aperta Ricerca rapida Cancella cronologia Ripristina cronologia Per poter <strong>mantenere la nostra libertà</strong>, <strong>risolvere bug</strong>, <strong>aggiungere funzionalità</strong> ed <strong>essere sempre attivi</strong>, facciamo affidamento sul tuo <strong>contributo</strong>. Contatto - Apri il database con il riconoscimento biometrico + Apri la base di dati con il riconoscimento biometrico Salva il riconoscimento biometrico Il keystore non è inizializzato correttamente. Impostazioni della chiave principale Chiave principale Contribuisci Attenzione: Devi comunque ricordarti la password principale anche se usi il riconoscimento biometrico. - Garantisci il permesso di scrittura per salvare i cambiamenti del database - Nascondi link corrotti nella lista dei database recenti - Nascondi i link di database corrotti - Mostra le posizioni dei database recenti + Garantisci il permesso di scrittura per salvare i cambiamenti della base di dati + Nascondi collegamenti corrotti nella lista delle basi di dati recenti + Nascondi i collegamenti di basi di dati corrotti + Mostra le posizioni delle basi di dati recenti Mostra file recenti - Salva la posizione dei keyfile - Ricorda la posizione dei database - Salva posizione dei database - Per continuare, risolvi il problema generando nuovi UUIDs per i duplicati \? - Impossibile creare il file del database. + Ricorda la posizione dei file chiave + Ricorda la posizione delle basi di dati + Ricorda la posizione delle basi di dati + Per continuare, risolvi il problema generando nuovi UUID per i duplicati\? + Impossibile creare il file della base di dati. Aggiungi allegato Scarta Scartare i cambiamenti\? @@ -438,7 +438,7 @@ Database aperto Biometrico Digita la password e poi fai clic sul pulsante biometrico. - Estrai le credenziali del database con dati biometrici + Estrai le credenziali della base di dati con dati biometrici Forza rinnovo Consigliato cambiare la chiave principale (giorni) Rinnovo raccomandato @@ -472,7 +472,7 @@ Mostra il bottone di blocco Impostazioni dell\'autocompletamento Accesso al file revocato dal file manager - Ricorda la posizione dei keyfiles dei database + Ricorda la posizione dei file chiave dei basi di dati Questa etichetta esiste già. Riavvia l\'app contenente il campo per attivare il blocco. Blocca riempimento automatico @@ -501,11 +501,35 @@ Il contenuto del file chiave non deve mai essere modificato e, nel migliore dei casi, dovrebbe contenere dati generati casualmente. Non è consigliabile aggiungere un file chiave vuoto. Rimuovere questi dati comunque\? - La rimozione di dati scollegati può ridurre le dimensioni del database, ma può anche eliminare i dati utilizzati per i plugin KeePass. + La rimozione di dati scollegati può ridurre le dimensioni della base di dati, ma può anche eliminare i dati utilizzati per i plugin KeePass. Aggiungi comunque il file\? Caricare questo file sostituirà quello esistente. - Un database KeePass dovrebbe contenere solo piccoli file di utilità (come i file di chiavi PGP). + Una base di dati KeePass dovrebbe contenere solo piccoli file di utilità (come i file di chiavi PGP). \n -\nIl database può diventare molto grande e ridurre le prestazioni con questo caricamento. +\nLa base di dati può diventare molto grande e ridurre le prestazioni con questo caricamento. Info credenziali + Visualizza l\'UUID collegato a una voce + Mostra UUID + Il salvataggio dei dati non è consentito per una base du dati aperta in sola lettura. + Chiedi di salvare i dati quando un modulo viene convalidato + Chiedi di salvare i dati + Prova a salvare le informazioni di ricerca quando effettui una selezione di immissione manuale + Salva le informazioni di ricerca + Chiudi la base di dati dopo una selezione di compilazione automatica + Chiudi la base di dati + Torna automaticamente alla tastiera precedente dopo aver bloccato la base di dati + Blocca la base di dati + Prova a salvare le informazioni condivise quando effettui una selezione di immissione manuale + Salva le informazioni condivise + Notifica + Impossibile recuperare l\'oggetto crittografico. + Impossibile inizializzare il prompt biometrico. + È necessario un aggiornamento della sicurezza biometrica. + Eliminare definitivamente tutti i nodi dal cestino\? + Modalità registrazione + Modalità salvataggio + Modalità ricerca + Il nome del campo esiste già. + Il salvataggio di un nuovo elemento non è consentito in una base di dati di sola lettura + Nessuna credenziale biometrica o del dispositivo è registrata. \ No newline at end of file From 56abf73eaf2c07244271c7b1ca520e13c71f41ea Mon Sep 17 00:00:00 2001 From: Filippo De Bortoli Date: Wed, 25 Nov 2020 12:58:45 +0000 Subject: [PATCH 021/113] Translated using Weblate (Italian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/ --- app/src/main/res/values-it/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c8ab6ceba..049686c79 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -408,7 +408,7 @@ Il keystore non è inizializzato correttamente. Impostazioni della chiave principale Chiave principale - Contribuisci + Contributi Attenzione: Devi comunque ricordarti la password principale anche se usi il riconoscimento biometrico. Garantisci il permesso di scrittura per salvare i cambiamenti della base di dati Nascondi collegamenti corrotti nella lista delle basi di dati recenti From 76efb938abeaeee6b33c1d44e0119c6c2e5d33e0 Mon Sep 17 00:00:00 2001 From: Filippo De Bortoli Date: Wed, 25 Nov 2020 13:24:01 +0000 Subject: [PATCH 022/113] Translated using Weblate (Italian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/ --- app/src/main/res/values-it/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 049686c79..dfa254791 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -142,7 +142,7 @@ Impossibile leggere la chiave biometrica. Eliminala e ripeti la procedura di riconoscimento. Problema impronta: %1$s Usa l\'impronta per salvare questa password - Questa base di dati non ha ancora alcuna password. + Questo database non contiene alcuna credenziale. Inserisci la password e/o il file chiave per sbloccare il database. \n \nEseguire il backup del file di database in un luogo sicuro dopo ogni modifica. From a56129980965a93c82d71846b60de2c73f76e9f4 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Wed, 25 Nov 2020 13:50:40 +0000 Subject: [PATCH 023/113] Translated using Weblate (German) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/ --- app/src/main/res/values-de/strings.xml | 34 +++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 74ff6bb9b..5942608a7 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -43,9 +43,9 @@ Zwischenablage-Timeout Dauer der Speicherung in der Zwischenablage (falls vom Gerät unterstützt) %1$s in die Zwischenablage kopieren - Datenbank-Schlüsseldatei erzeugen… + Datenbank-Schlüsseldatei erzeugen … Datenbank - Entschlüsselung der Datenbankinhalte… + Entschlüsselung der Datenbankinhalte … Als Standard-Datenbank verwenden Zahlen KeePassDX © %1$d Kunzisoft ist <strong>quelloffen</strong> und <strong>ohne Werbung</strong>.\nDie Nutzung der Software erfolgt auf eigene Verantwortung und ohne jegliche Garantie. Die Applikation wird unter den Bedingungen der <strong>GPLv3</strong> lizenziert. @@ -97,7 +97,7 @@ Länge Größe der Listenelemente Schriftgröße der Listenelemente - Datenbank wird geladen… + Datenbank wird geladen … Kleinbuchstaben Passwort verstecken Passwörter standardmäßig mit (***) maskieren @@ -118,12 +118,12 @@ Nie Keine Suchergebnisse Bitte einen Webbrowser installieren, um diese URL zu öffnen. - Papierkorb/Backup nicht durchsuchen - Die Gruppen „Backup“ und „Papierkorb“ werden bei der Suche nicht berücksichtigt + Papierkorb/Sicherung nicht durchsuchen + Die Gruppen „Sicherung“ und „Papierkorb“ werden bei der Suche nicht berücksichtigt Schnellsuche Beim Öffnen einer Datenbank eine Suche veranlassen - Neue Datenbank anlegen… - Ausführen… + Neue Datenbank anlegen … + Ausführen … Sicherheit Schreibgeschützt KeePassDX benötigt Schreibrechte, um etwas an der Datenbank zu ändern. @@ -132,7 +132,7 @@ Start Schlüsseltransformationen Zusätzliche Schlüsseltransformationen bieten einen besseren Schutz gegen Wörterbuch- oder Brute-Force-Angriffe. Allerdings dauert dann auch das Laden und Speichern der Datenbank entsprechend länger. - Datenbank wird gespeichert… + Datenbank wird gespeichert … Leerzeichen Suchen Natürliche Sortierung @@ -285,7 +285,7 @@ Sie ermutigen die Entwickler:innen, <strong>neue Funktionen</strong> einzuführen und gemäß Ihren Anmerkungen <strong>Fehler zu beheben</strong>. Vielen Dank für Ihre Unterstützung. Wir bemühen uns, diese Funktion bald zu veröffentlichen. - Vergessen Sie nicht, Ihre App aktuell zu halten, indem Sie neue Versionen installieren. + Vergessen Sie nicht, Ihre Anwendung aktuell zu halten, indem Sie neue Versionen installieren. Download Unterstützen ChaCha20 @@ -346,7 +346,7 @@ Speicherort zuletzt verwendeter Datenbanken anzeigen Defekte Datenbankverknüpfungen ausblenden Nicht funktionierende Verknüpfungen in der Liste der zuletzt verwendeten Datenbanken ausblenden - Nicht die App beenden… + Nicht die Anwendung beenden … Datenbank sperren, wenn auf dem Hauptbildschirm der Zurück-Button gedrückt wird Beim Schließen löschen Papierkorb @@ -357,7 +357,7 @@ Datei öffnen Eintrag hinzufügen Gruppe hinzufügen - Datei-Info + Dateiinformationen Symbol für den Eintrag Passwort-Generator Passwortlänge @@ -408,7 +408,7 @@ Zeitraum muss zwischen %1$d und %2$d Sekunden liegen. Token muss %1$d bis %2$d Stellen enthalten. %1$s mit derselben UUID %2$s existiert bereits. - Datenbank wird erstellt… + Datenbank wird erstellt … Sicherheits-Einstellungen Hauptschlüssel-Einstellungen Die Datenbank enthält UUID-Duplikate. @@ -437,22 +437,22 @@ Die Datenbank konnte nicht gespeichert werden. Datenbank speichern Papierkorb leeren - Befehl ausführen… + Befehl ausführen … Sollen die ausgewählten Knoten wirklich gelöscht werden\? Der Schlüsselspeicher ist nicht richtig initialisiert. Geben Sie das Passwort ein und klicken Sie auf die Biometrie-Schaltfläche. Papierkorb-Gruppe Datenbank automatisch speichern - Automatisches Speichern der Datenbank nach einer wichtigen Aktion (im Modus \"Bearbeiten\") + Automatisches Speichern der Datenbank nach einer wichtigen Aktion (im Modus „Bearbeiten“) Anhänge Historie wiederherstellen Historie löschen Auto-Key-Aktion Aktion der Go-Taste, die automatisch nach dem Drücken einer Feldtaste ausgeführt wird %1$s herunterladen - Initialisieren… + Initialisieren … Fortschritt: %1$d%% - Fertigstellen… + Fertigstellen … Vollständig! Abgelaufene Einträge ausblenden Abgelaufene Einträge werden nicht angezeigt @@ -498,7 +498,7 @@ Tastatur wechseln Auto-Key-Aktion Datenbank-Anmeldebildschirm - Nach Ausführung der automatischen Tastenaktion automatisch zur vorherigen Tastatur wechseln. + Nach Ausführung der automatischen Tastenaktion automatisch zur vorherigen Tastatur wechseln Automatisches Zurückschalten zur vorherigen Tastatur auf dem Datenbank-Anmeldebildschirm Laden Sie einen Anhang für Ihren Eintrag hoch, um wichtige externe Daten zu speichern. Anmeldeinformationen From bc6aeb2e93f70fb8ef1d11d5760f2727b61be50d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=2E=20R=C3=BCdinger?= Date: Wed, 25 Nov 2020 12:56:06 +0000 Subject: [PATCH 024/113] Translated using Weblate (German) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/ --- app/src/main/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 5942608a7..5b17bbb74 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -22,7 +22,7 @@ Translations from David Ramiro --> Kontakt - Beitrag + Beiträge Rückmeldung Webseite Android-Implementierung des Passwortmanagers KeePass From 20a35f42215f9d5443a0d820ef110582a4a4f873 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Wed, 25 Nov 2020 13:49:13 +0000 Subject: [PATCH 025/113] Translated using Weblate (Finnish) Currently translated at 60.0% (290 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fi/ --- app/src/main/res/values-fi/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 68507fcc1..495d438f3 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -30,7 +30,7 @@ Ohjelman asetukset Hakasulkeet Tietokantojen avaamista, luomista ja tallentamista varten tarvitaan tiedostonhallintaohjelma, joka tukee ACTION_CREATE_DOCUMENT ja ACTION_OPEN_DOCUMENT Intent-toimintoja. - Leikepöytä tyhjennetty. + Leikepöytä tyhjennetty Leikepöytävirhe Jotkin laitteet eivät anna sovellusten käyttää leikepöytää. Leikepöytää ei voitu tyhjentää @@ -71,7 +71,7 @@ Salasanat eivät täsmää. Kierroksia on liian paljon. Asetetaan se arvoon 2147483648. Jokaisella tekstillä tulee olla kentässä nimi. - Syötä positiivinen kokonaisluku pituus-kenttään + Syötä positiivinen kokonaisluku pituus-kenttään. Kentän nimi Kentän arvo Tiedostoselain @@ -161,7 +161,7 @@ Turvallisuus Muokkaa merkintää Ainakin yksi pääsytieto tulee olla asetettuna. - Avainta ei pystytty lataamaan. Kokeile vähentää KDF \"Muistin käyttöä\". + Avainta ei pystytty lataamaan. Kokeile vähentää KDF ”Muistin käyttöä”. Tietokantaa ei pystytty avaamaan. Virheellinen OTP salaisuus. OTP @@ -208,7 +208,7 @@ Ota käyttöön automaattinen täyttö täyttääksesi lomakkeita nopeasti muissa sovelluksissa Ulkonäkö Historia - Kirjoita salana ja paina \"Biometrinen\" painiketta. + Kirjoita salana ja paina ”Biometrinen”-painiketta. Biometrinen Tässä salasanatietokannassa ei ole vielä pääsytietoja. Biometrinen virhe: %1$s @@ -241,7 +241,7 @@ Luota leikepöytään Vaihda fontti, jota käytetään kentissä parantaaksesi merkkien näkyvyyttä Kenttäfontti - Siirrä ryhmät ja tietueet \"Roskakori\" ryhmään ennen poistamista + Siirrä ryhmät ja tietueet ”Roskakori” ryhmään ennen poistamista Roskakorin käyttö Aseta pääavain Polku @@ -334,4 +334,4 @@ Et voi siirtää ryhmää itsensä sisälle. Automaattista täyttöä ei voitu ottaa käyttöön. Solmun lapset - + \ No newline at end of file From 31c35939fd446abc1b9bd7afe7a071eb1907f8de Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Wed, 25 Nov 2020 13:41:54 +0000 Subject: [PATCH 026/113] Translated using Weblate (French) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/ --- app/src/main/res/values-fr/strings.xml | 51 +++++++++++++------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index df0ebb96e..0fa51d61d 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -33,7 +33,7 @@ Remplissage de formulaire Parenthèses (ou autres) ASCII étendu - Un gestionnaire de fichiers qui accepte l\'action d\'intention ACTION_CREATE_DOCUMENT et ACTION_OPEN_DOCUMENT est nécessaire pour créer, ouvrir et enregistrer des fichiers de base de données. + Un gestionnaire de fichiers qui accepte l’action d’intention ACTION_CREATE_DOCUMENT et ACTION_OPEN_DOCUMENT est nécessaire pour créer, ouvrir et enregistrer des fichiers de base de données. Autoriser Presse-papier vidé Erreur de presse-papier @@ -306,7 +306,7 @@ Déplacer Coller Annuler - Autoriser l\'absence de clé principale + Autoriser l’absence de clé principale Autorise l’appui du bouton « Ouvrir » si aucun identifiant n’est sélectionné Protéger en écriture Modifiable @@ -343,9 +343,9 @@ Appui clavier audible Changement de clavier Écran des identifications de la base de données - Revenir automatiquement au clavier précédent sur l\'écran des identifications de la base de données + Revenir automatiquement au clavier précédent sur l’écran des identifications de la base de données Action de touche automatique - Revenir automatiquement au clavier précédent après avoir exécuté \"Action de touche automatique\" + Revenir automatiquement au clavier précédent après avoir exécuté « Action de touche automatique » Mode sélection Veuillez ne pas tuer l’application… Appuyer sur « Retour » pour verrouiller @@ -389,12 +389,12 @@ Extraire les identifiants de la base de données avec les données biométriques Biométrie Ouvrir automatiquement l’invite biométrique - Demande automatiquement la reconnaissance biométrique si la base de données est configurée pour l\'utiliser + Demande automatiquement la reconnaissance biométrique si la base de données est configurée pour l’utiliser Clé principale Sécurité Historique Configuration d’un mot de passe à usage unique - Type OTP + Type MDP à usage unique Secret Période (secondes) Compteur @@ -420,7 +420,7 @@ Compression de données La compression des données réduit la taille de la base de données Nombre maximum - Limite le nombre d\'éléments de l’historique par entrée + Limite le nombre d’éléments de l’historique par entrée Taille maximum Limite la taille de l’historique (en octets) par entrée Recommander le renouvellement @@ -446,8 +446,8 @@ Enregistrement automatique de la base de données Enregistre la base de données après chaque action importante (en mode « Modifiable ») Attachements - Restaurer l\'historique - Effacer l\'historique + Restaurer l’historique + Effacer l’historique Action de touche automatique Action de la touche « Go » après avoir appuyé sur une touche « Champ » Téléchargement %1$s @@ -461,7 +461,7 @@ Contribution Afin de <strong>garder notre liberté</strong>, <strong>corriger les bugs</strong>, <strong>ajouter des fonctionnalités</strong> et <strong>être toujours actif</strong>, nous comptons sur votre <strong>contribution</strong>. Recherche rapide - Demande une recherche lors de l\'ouverture d\'une base de données + Demande une recherche lors de l’ouverture d’une base de données Mémoriser l’emplacement des bases de données Garde en mémoire l’emplacement où les bases de données sont stockées Mémoriser les emplacements des fichiers clé @@ -478,25 +478,25 @@ Abandonner Abandonner les modifications \? Valider - Suggère automatiquement des résultats de recherche à partir du domaine Web ou de l\'application ID + Suggérer automatiquement des résultats de recherche à partir du domaine Web ou de l’identifiant de l’application Recherche automatique - Affiche le bouton de verrouillage dans l\'interface utilisateur + Affiche le bouton de verrouillage dans l’interface utilisateur Afficher le bouton de verrouillage Paramètres de remplissage automatique Accès au fichier révoqué par le gestionnaire de fichiers Ce label existe déjà. - Redémarrez l\'application contenant le formulaire pour activer le blocage. + Redémarrez l’application contenant le formulaire pour activer le blocage. Blocker le remplissage automatique Liste de blocage qui empêche le remplissage automatique des domaines Web Liste de blocage de domaine Web Liste de blocage qui empêche le remplissage automatique des applications - Liste de blocage d\'application + Liste de blocage d’application Recherche automatiquement les informations partagées pour remplir le clavier Rechercher les informations partagées Filtre Recherche des domaines Web avec des contraintes de sous-domaines Recherche de sous-domaine - Ce texte ne correspond pas à l\'élément demandé. + Ce texte ne correspond pas à l’élément demandé. Ajouter un élément Téléverser %1$s Téléverse une pièce-jointe à votre entrée pour enregistrer d’importantes données externes. @@ -509,31 +509,32 @@ Informations des identifiants Supprimer les données non-liées peut réduire la taille de votre base de données mais peut également supprimer des données utilisées par des extensions KeePass. Supprimer ces données quand même ? - Il n\'est pas recommandé d\'ajouter un fichier clé vide. + Il n’est pas recommandé d’ajouter un fichier clé vide. Le contenu du fichier clé ne devrait jamais changer, et dans le meilleur des cas, devrait contenir des données générées aléatoirement. Supprimer les données non-liées Supprimer les pièces jointes contenues dans la base de données mais non-liées à une entrée Données - Affiche l\'UUID lié à une entrée - Afficher l\'UUID - L\'enregistrement des données n\'est pas autorisé pour une base de données ouverte en lecture seule. - Demande à enregistrer des données lorsqu\'un formulaire est validé + Affiche l’UUID lié à une entrée + Afficher l’UUID + L’enregistrement des données n’est pas autorisé pour une base de données ouverte en lecture seule. + Demande à enregistrer des données quand un formulaire est validé Demander à enregistrer des données - Essaie d\'enregistrer les informations de recherche lors de la sélection manuelle d\'une entrée + Essayer d’enregistrer les informations de recherche lors de la sélection manuelle d’une entrée Enregistrer les infos de recherche Ferme la base de données après une sélection de remplissage automatique Fermer la base de données Revient automatiquement au clavier précédent après le verrouillage de la base de données Verrouiller la base de données - Essaie d\'enregistrer les informations partagées lors de la sélection manuelle d\'une entrée + Essayer d’enregistrer les informations partagées lors de la sélection manuelle d’une entrée Enregistrer les infos partagées Notification - Impossible de récupérer l\'objet crypto. - Impossible d\'initialiser l\'invite biométrique. + Impossible de récupérer l’objet crypto. + Impossible d’initialiser l’invite biométrique. Mise à jour de sécurité biométrique requise. Supprimer définitivement tous les nœuds de la corbeille \? Mode enregistrement Mode sauvegarde Mode recherche - L\'enregistrement d\'un nouvel élément n\'est pas autorisé dans une base de données en lecture seule + L’enregistrement d’un nouvel élément n’est pas autorisé dans une base de données en lecture seule + Le nom du champ existe déjà. \ No newline at end of file From b93ea5e6625acfd3eb7fa74e87d9795ee0ed1b13 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Wed, 25 Nov 2020 13:35:16 +0000 Subject: [PATCH 027/113] Translated using Weblate (Italian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/ --- app/src/main/res/values-it/strings.xml | 92 +++++++++++++------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index dfa254791..48da11f11 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -70,9 +70,9 @@ Memoria insufficiente per caricare l\'intera base di dati. Deve essere selezionato almeno un tipo di generazione password. Le password non corrispondono. - \"Livello\" troppo alto. Impostato a 2147483648. + «Livello» troppo alto. Impostato a 2147483648. Ogni stringa deve avere un nome. - Inserisci un numero naturale positivo nel campo \"lunghezza\". + Inserisci un numero naturale positivo nel campo «lunghezza». Nome campo Valore campo File non trovato. Prova a riaprirlo dal tuo gestore di file. @@ -114,7 +114,7 @@ Nessun risultato di ricerca Installa un browser web per aprire questo URL. Non cercare nelle voci di backup - Ometti i gruppi \"Backup\" e \"Cestino\" dai risultati di ricerca + Ometti i gruppi «Backup» e «Cestino» dai risultati di ricerca Creazione di una nuova base di dati… In corso… Protezione @@ -142,10 +142,10 @@ Impossibile leggere la chiave biometrica. Eliminala e ripeti la procedura di riconoscimento. Problema impronta: %1$s Usa l\'impronta per salvare questa password - Questo database non contiene alcuna credenziale. - Inserisci la password e/o il file chiave per sbloccare il database. + Questa base di dati non contiene alcuna credenziale. + Inserisci la password o il file chiave per sbloccare la base di dati. \n -\nEseguire il backup del file di database in un luogo sicuro dopo ogni modifica. +\nEseguire il backup del file di base di dati in un luogo sicuro dopo ogni modifica. 5 secondi 10 secondi @@ -213,10 +213,10 @@ Se l\'eliminazione automatica degli appunti fallisce, cancellali manualmente. Blocca Blocco schermo - Blocca il database quando lo schermo è spento + Blocca la base di dati quando lo schermo è spento Impronta digitale Scansione di impronte - Consente la scansione biometrica per aprire il database + Consente la scansione biometrica per aprire la base di dati Elimina chiavi di cifratura Elimina tutte le chiavi di cifratura relative al riconoscimento dell\'impronta Eliminare tutte le chiavi di cifrature associate al riconoscimento biometrico \? @@ -228,15 +228,15 @@ Assegna una chiave master Crea una nuova base di dati Uso del Cestino - Sposta i gruppi e le voci nel gruppo \"Cestino\" prima di eliminarlo + Sposta i gruppi e le voci nel gruppo «Cestino» prima di eliminarlo Carattere campi Cambia il carattere usato nei campi per una migliore visibilità Fiducia appunti Permetti la copia della password e dei campi protetti negli appunti Attenzione: gli appunti sono condivisi da tutte le app. Se vengono copiati dati sensibili, altri software possono recuperarli. - Nome database - Descrizione database - Versione database + Nome della base di dati + Descrizione della base di dati + Versione della base di dati Testo App Altro @@ -246,42 +246,42 @@ Non consentire nessuna chiave principale Abilita il pulsante «Apri» se le credenziali non sono selezionate Protetto da scrittura - Apri il database in sola lettura in modo predefinito + Apri la base di dati in sola lettura in modo predefinito Suggerimenti educativi Evidenzia gli elementi per imparare come funziona l\'app Ripristina i suggerimenti educativi Mostra di nuovo tutte le informazioni educative Suggerimenti educativi ripristinati - Crea il tuo file di database + Crea il tuo file di base di dati Crea il tuo primo file di gestione password. - Apri un database esistente - Apri il tuo file database precedente dal tuo gestore di file per continuare ad usarlo. - Aggiungi elementi al tuo database - Gli elementi aiutano a gestire le tue identità digitali. -\n -\nI gruppi (~ cartelle) organizzano gli elementi nel database. + Apri una base di dati esistente + Apri il tuo file di base di dati precedente dal tuo gestore di file per continuare ad usarlo. + Aggiungi elementi alla tua base di dati + Gli elementi aiutano a gestire le tue identità digitali. +\n +\nI gruppi (come cartelle) organizzano gli elementi nella base di dati. Cerca tra gli elementi Inserisci il titolo, il nome utente o il contenuto di altri campi per recuperare le tue password. - Sblocco del database tramite impronta digitale - Collega la password alla tua impronta digitale per sbloccare velocemente il database. + Sblocco della base di dati tramite impronta digitale + Collega la password alla tua impronta digitale per sbloccare velocemente la base di dati. Modifica l\'elemento Modifica l\'elemento con campi personalizzati. I dati possono fare riferimento ad altri campi. Crea una password robusta Genera una password robusta da associare all\'elemento, definiscila a seconda dei criteri del modulo e non dimenticare di tenerla al sicuro. Aggiungi campi personalizzati Registra un campo aggiuntivo, inserisci delle informazioni e proteggilo se necessario. - Sblocca il tuo database - Proteggi da scrittura il tuo database - Cambia la modalità di apertura per la sessione. -\n -\n\"Sola lettura\" impedisce modifiche accidentali al database. -\n\"Modificabile\" permette di aggiungere, eliminare o modificare tutti gli elementi. + Sblocca la tua base di dati + Proteggi da scrittura la tua base di dati + Cambia la modalità di apertura per la sessione. +\n +\n«Sola lettura» impedisce modifiche accidentali alla base di dati. +\n«Modificabile» permette di aggiungere, eliminare o modificare tutti gli elementi. Copia un campo I campi copiati possono essere incollati ovunque. \n \nUsa il metodo di inserimento che preferisci. - Blocca il database - Blocca velocemente il database, puoi impostare l\'app per bloccarlo dopo un certo periodo e quando lo schermo si spegne. + Blocca la base di dati + Blocca velocemente la base di dati, puoi impostare l\'applicazione per bloccarla dopo un certo periodo e quando lo schermo si spegne. Ordine elementi Scegli l\'ordine di elementi e gruppi. Partecipa @@ -312,7 +312,7 @@ Pacchetto icone usato nell\'app Modifica elemento Caricamento della base di dati fallito. - Caricamento della chiave fallito. Prova a diminuire l\' \"Utilizzo memoria\" del KDF. + Caricamento della chiave fallito. Prova a diminuire l\'«Utilizzo memoria» del KDF. Mostra nomi utente Mostra i nomi utente negli elenchi Appunti @@ -329,7 +329,7 @@ %1$s disponibile nella Magitastiera %1$s Pulisci alla chiusura - Chiudere il database alla chiusura della notifica + Chiudere la base di dati alla chiusura della notifica Aspetto Tema tastiera Tasti @@ -338,14 +338,14 @@ Modalità selezione Non terminare l\'app… Premere \'\'Indietro\'\' per bloccare - Bloccare il database quando l\'utente preme il pulsante Indietro nella schermata principale + Blocca la base di dati quando l\'utente preme il pulsante Indietro nella schermata principale Pulisci alla chiusura - Blocca il database quando scade la durata degli appunti o la notifica viene chiusa dopo che inizi ad usarlo + Blocca la base di dati quando scade la durata degli appunti o la notifica viene chiusa dopo che inizi ad usarlo Cestino Selezione elemento Mostra i campi di input nella Magitastiera durante la visualizzazione di un elemento Elimina password - Elimina la password immessa dopo un tentativo di connessione al database + Elimina la password immessa dopo un tentativo di connessione alla base di dati Apri il file Figli del nodo Aggiungi un nodo @@ -430,12 +430,12 @@ Limita la dimensione (in byte) della cronologia per voce Limita il numero di elementi della cronologia per voce Gruppo cestino - La compressione dei dati riduce le dimensioni del database + La compressione dei dati riduce le dimensioni della base di dati Compressione dati - Proponi l\'autenticazione biometrica quando il database è configurato per usarla - Utilizza lo sblocco avanzato per aprire il database più facilmente + Proponi l\'autenticazione biometrica quando la base di dati è configurata per usarla + Utilizza lo sblocco avanzato per aprire la base di dati più facilmente Copia i campi di immissione utilizzando gli appunti del tuo dispositivo - Database aperto + Base di dati aperta Biometrico Digita la password e poi fai clic sul pulsante biometrico. Estrai le credenziali della base di dati con dati biometrici @@ -451,17 +451,17 @@ Inizializzazione… Scaricamento %1$s Imposta OTP - Salva il database dopo ogni azione importante (in modalità \"Modificabile\") - Salvataggio automatico del database + Salva la base di dati dopo ogni azione importante (in modalità «Modificabile») + Salvataggio automatico della base di dati Suggerisci automaticamente risultati dal dominio web o ID dell\'applicazione Ricerca automatica - Dopo la pressione del tasto \"Campo\" invia il tasto \"Vai\" + Dopo la pressione del tasto «Campo» invia il tasto «Vai» Azione auto key Impostazioni tastiera dispositivo Gzip Nessuna Compressione - Colore del database customizzato + Colore personalizzato della base di dati Nome utente di default Disabilita Abilita @@ -489,13 +489,13 @@ Aggiungi elemento Torna automaticamente alla tastiera precedente quando si esegue l\'azione del tasto automatico Azione tasto automatico - Torna automaticamente alla tastiera precedente nella schermata delle credenziali del database - Schermata credenziali database + Torna automaticamente alla tastiera precedente nella schermata delle credenziali della base di dati + Schermata credenziali della base di dati Cambia tastiera Carica %1$s Carica un allegato alla voce per salvare dati esterni importanti. Aggiungi allegato - Rimuovi gli allegati contenuti nel database ma non collegati ad una voce + Rimuovi gli allegati contenuti nella base di dati ma non collegati ad una voce Rimuovi i dati scollegati Dati Il contenuto del file chiave non deve mai essere modificato e, nel migliore dei casi, dovrebbe contenere dati generati casualmente. From 41cb223099d91024bafa01ea7e6ad5d20ca7fe3a Mon Sep 17 00:00:00 2001 From: Bruno Guerreiro Date: Wed, 25 Nov 2020 16:17:43 +0000 Subject: [PATCH 028/113] Translated using Weblate (Portuguese (Portugal)) Currently translated at 94.8% (458 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_PT/ --- app/src/main/res/values-pt-rPT/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 73e218486..ef144040f 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -305,7 +305,7 @@ \n \n\"Somente leitura\" evita que faça alterações não intencionais na base de dados. \n\"Gravação\" permite-o adicionar, apagar ou modificar todos os elementos. - Mostrar nomes de utilizador em listas de entrada + Mostrar nomes de utilizador na lista entradas Área de transferência Magikeyboard Magikeyboard (KeePassDX) From 8a8b2b027ebb319d78634a31a730f28e31a3e767 Mon Sep 17 00:00:00 2001 From: Miguel Date: Wed, 25 Nov 2020 16:17:11 +0000 Subject: [PATCH 029/113] Translated using Weblate (Portuguese (Portugal)) Currently translated at 94.8% (458 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_PT/ --- app/src/main/res/values-pt-rPT/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index ef144040f..8aa2ec694 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -157,7 +157,7 @@ Média Grande - ASCII Estendido + ASCII Extendido Permitir Não foi possível abrir a sua base de dados. Não foi possível carregar a chave. Tente descarregar o \"Uso de Memória\" do KDF. From d88e20bb56bc89a4c0750806dc733e17a3a5466b Mon Sep 17 00:00:00 2001 From: zeritti Date: Thu, 26 Nov 2020 18:03:33 +0000 Subject: [PATCH 030/113] Translated using Weblate (Czech) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/ --- app/src/main/res/values-cs/strings.xml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 871a37a66..17e349f4c 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -505,4 +505,28 @@ Odstraní přílohy obsažené v databázi, ale nikoli přílohy propojené se záznamem Přidat přílohu Nahrát přílohu k záznamu pro uložení důležitých externích dat. + Ukáže UUID propojené se záznamem + Ukázat UUID + Uložení dat není povoleno, je-li databáze v režimu pouze pro čtení. + Zeptat se na uložení dat, jakmile byl formulář přezkoušen + Zeptat se před uložením + Pokuste se uložit údaje hledání, když manuálně vybíráte položku + Uložit info hledání + Zavřít databázi po samodoplnění polí + Zavřít databázi + Po uzamknutí databáze automaticky přepnout zpět na předchozí klávesnici + Uzamknout databázi + Pokuste se uložit sdílené info, když manuálné vybíráte položku + Uložit sdílené info + Oznámení + Krypto objekt nelze načíst. + Biometrický dialog nelze spustit. + Vyžadována aktualizace biometrického zabezpečení. + Žádné přihlašovací ani biometrické údaje nejsou registrovány. + Trvale odstranit všechny položky z koše\? + Režim registrace + Režim ukládání + Režim vyhledávání + Jméno položky již existuje. + Uložení nové položky v režimu databáze pouze pro čtení není povoleno \ No newline at end of file From 618dcf014d2ae65cd2cf959ef7ba32e967c94503 Mon Sep 17 00:00:00 2001 From: Jennifer Kitts Date: Sat, 28 Nov 2020 02:11:41 +0100 Subject: [PATCH 031/113] Added translation using Weblate (Abkhazian) --- app/src/main/res/values-ab/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-ab/strings.xml diff --git a/app/src/main/res/values-ab/strings.xml b/app/src/main/res/values-ab/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-ab/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From 3caad2ccebf7760228ca709694371b51a1df7e4a Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Sat, 28 Nov 2020 13:41:54 +0000 Subject: [PATCH 032/113] Translated using Weblate (Croatian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/ --- app/src/main/res/values-hr/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index a10de6231..f5eb113e1 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -467,7 +467,7 @@ \nGrupe (~mape) organiziraju unose u bazi podataka. U tijeku: %1$d%% Gotovo! - Automatski se vrati na prethodnu tipkovnicu nakon izvršavanja automatske radnje tipke + Automatski se vrati na prethodnu tipkovnicu nakon izvršavanja „Automatska radnje tipke” Automatska radnja tipke Automatski se prebaci na prethodnu tipkovnicu pri ekranu za unos podataka za prijavu u bazu podataka Ekran za unos podataka za prijavu u bazu podataka @@ -511,4 +511,5 @@ Modus registracije Modus spremanja Modus pretrage + Ime polja već postoji. \ No newline at end of file From 582ffe3f23f2031b0ef01e7883efce4e4e1c8bc4 Mon Sep 17 00:00:00 2001 From: WaldiS Date: Sun, 29 Nov 2020 17:57:41 +0000 Subject: [PATCH 033/113] Translated using Weblate (Polish) Currently translated at 99.5% (481 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/ --- app/src/main/res/values-pl/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a13aa720d..b917910b8 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -527,4 +527,5 @@ Tryb zapisywania Tryb wyszukiwania Zapisywanie nowego elementu nie jest dozwolone w bazie danych tylko do odczytu + Nazwa pola już istnieje. \ No newline at end of file From a3ca03636ada617a50175e2c6b4587d6f96b0e6c Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Mon, 30 Nov 2020 12:14:08 +0000 Subject: [PATCH 034/113] Translated using Weblate (Ukrainian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/ --- app/src/main/res/values-uk/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index e314b3018..448bb2a3b 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -20,7 +20,7 @@ Відгук Домівка KeePassDX є Android-версією менеджера паролів KeePass - Прийняти + "Хто ти в біса такий\? " Додати запис Додати групу Алгоритм шифрування @@ -29,7 +29,7 @@ Застосунок Параметри застосунку Дужки - Для створення, відкриття та збереження файлів баз даних потрібен файловий менеджер, який приймає дії Intent ACTION_CREATE_DOCUMENT та ACTION_OPEN_DOCUMENT. + Для створення, відкриття та збереження файлів баз даних потрібен файловий менеджер, який приймує дії Intent ACTION_CREATE_DOCUMENT та ACTION_OPEN_DOCUMENT. Буфер обміну очищено Час до очищення буфера обміну Тривалість зберігання в буфері обміну (якщо підтримується пристроєм) From 893828ac443e3686a54ff491e1a8a2d9bfbc10ea Mon Sep 17 00:00:00 2001 From: Eric Date: Mon, 30 Nov 2020 09:59:26 +0000 Subject: [PATCH 035/113] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 16c91d57f..60f8d7dae 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -20,7 +20,7 @@ 反馈 主页 Android 平台上基于 KeePass 实现的密码管理器 - 接受 + "你到底是谁? " 添加条目 添加群组 加密算法 @@ -29,7 +29,7 @@ 应用 程序设置 括号 - 新建与保存数据库需要支持打开和新建文件的文件管理器。 + 需要一款接受意图操作 ACTION_CREATE_DOCUMENT 和 ACTION_OPEN_DOCUMENT 的文件管理器来创建、打开和保存数据库文件。 剪贴板已清空 剪贴板清空延时 剪贴板保存时间 (若您的设备支持该功能) From d0b340837da5028268c8775c45bbebeb40f0a6b4 Mon Sep 17 00:00:00 2001 From: Jennifer Kitts Date: Sun, 29 Nov 2020 23:37:17 +0000 Subject: [PATCH 036/113] Translated using Weblate (English) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/ --- app/src/main/res/values/strings.xml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 477813785..22c3dc9b9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -16,14 +16,13 @@ You should have received a copy of the GNU General Public License along with KeePassDX. If not, see . ---> - +--> Contact Contribution Feedback Homepage Android implementation of the KeePass password manager - Accept + "Who the hell are you\? " Add entry Edit entry Add group @@ -37,7 +36,7 @@ App Brackets Extended ASCII - A file manager that accepts the Intent action ACTION_CREATE_DOCUMENT and ACTION_OPEN_DOCUMENT is needed to create, open and save database files. + A file manager that accepts the Intent action. ACTION_CREATE_DOCUMENT and ACTION_OPEN_DOCUMENT is needed to create, open and save database files. Allow Clipboard cleared Clipboard error @@ -526,4 +525,4 @@ Expired entries are not shown Show UUID Displays the UUID linked to an entry - + \ No newline at end of file From 16f255aecabac8d682a2e4660e02f9d013654b7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 29 Nov 2020 23:53:12 +0000 Subject: [PATCH 037/113] Translated using Weblate (Turkish) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/ --- app/src/main/res/values-tr/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index c0037c773..4b57f8c73 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -20,7 +20,7 @@ Geri Bildirim Ana sayfa KeePass parola yöneticisinin Android uygulaması - Kabul et + "Kimsin sen\? " Girdi Ekle Girdi Düzenle Grup Ekle @@ -32,7 +32,7 @@ Uygulama Parantez Genişletilmiş ASCII - Veritabanı dosyaları oluşturmak, açmak ve kaydetmek için Niyet eylemini ACTION_CREATE_DOCUMENT ve ACTION_OPEN_DOCUMENT kabul eden bir dosya yöneticisi gerekir. + Niyet eylemini kabul eden bir dosya yöneticisi. ACTION_CREATE_DOCUMENT ve ACTION_OPEN_DOCUMENT veri tabanı dosyaları oluşturmak, açmak ve kaydetmek için gereklidir. İzin ver Pano temizlendi Pano hatası From 25eb09f11c63405e4e2f96214d8a31c760d07fbb Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Tue, 1 Dec 2020 05:46:27 +0000 Subject: [PATCH 038/113] Translated using Weblate (English) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/ --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 22c3dc9b9..566779c08 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -22,7 +22,7 @@ Feedback Homepage Android implementation of the KeePass password manager - "Who the hell are you\? " + Accept Add entry Edit entry Add group From af445ef157eba1d653d9cab2f3bce42cc867ae89 Mon Sep 17 00:00:00 2001 From: Filippo De Bortoli Date: Tue, 1 Dec 2020 13:40:54 +0000 Subject: [PATCH 039/113] Translated using Weblate (Italian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/ --- app/src/main/res/values-it/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 48da11f11..ef7f148a4 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -379,7 +379,7 @@ Contatore Cifre Algoritmo - Password usa e getta + Password usa e getta (OTP) Segreto per password usa e getta (OTP) non valido. Impostare almeno una credenziale. Non puoi copiare un gruppo qui. @@ -390,7 +390,7 @@ %1$s con le stesse credenziali univoche %2$s è già esistente. Sto creando la base di dati… Impostazioni di sicurezza - La base di dati tiene identificativi univoci univerali duplicati. + Il database contiene identificativi univoci universali (UUID) duplicati. Non è possibile salvare la base di dati. Salva la base di dati Svuota il cestino From 0f3036dd9c71b883eaefbb2908425ab8215c9c2e Mon Sep 17 00:00:00 2001 From: x Date: Tue, 1 Dec 2020 13:37:46 +0000 Subject: [PATCH 040/113] Translated using Weblate (Italian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/ --- app/src/main/res/values-it/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index ef7f148a4..4fb0104cf 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -31,7 +31,7 @@ App Impostazioni app Parentesi - È necessario un gestore di file che accetti gli Intent ACTION_CREATE_DOCUMENT e ACTION_OPEN_DOCUMENT per creare, aprire e salvare i file di base di dati. + Un file manager che accetta l\'azione Intent. ACTION_CREATE_DOCUMENT e ACTION_OPEN_DOCUMENT sono necessari per creare, aprire e salvare i file del database. Appunti eliminati Errore negli appunti Alcuni dispositivi non permettono alle app di usare gli appunti. From 56c3f495d531d9f65dd6c09d0d96185c8e170d97 Mon Sep 17 00:00:00 2001 From: x Date: Tue, 1 Dec 2020 14:40:12 +0000 Subject: [PATCH 041/113] Translated using Weblate (Italian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/ --- app/src/main/res/values-it/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 4fb0104cf..2c0959038 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -216,12 +216,12 @@ Blocca la base di dati quando lo schermo è spento Impronta digitale Scansione di impronte - Consente la scansione biometrica per aprire la base di dati + Consente la scansione biometrica per aprire il database Elimina chiavi di cifratura Elimina tutte le chiavi di cifratura relative al riconoscimento dell\'impronta Eliminare tutte le chiavi di cifrature associate al riconoscimento biometrico \? Impossibile avviare questa funzione. - La tua versione di Android %1$s non è la minima %2$s richiesta. + Il dispositivo usa Android %1$s, ma richiede %2$s o versioni successive. L\'hardware relativo non è stato trovato. Nome file Percorso @@ -232,7 +232,7 @@ Carattere campi Cambia il carattere usato nei campi per una migliore visibilità Fiducia appunti - Permetti la copia della password e dei campi protetti negli appunti + Consenti la copia della password e dei campi protetti negli appunti Attenzione: gli appunti sono condivisi da tutte le app. Se vengono copiati dati sensibili, altri software possono recuperarli. Nome della base di dati Descrizione della base di dati @@ -390,7 +390,7 @@ %1$s con le stesse credenziali univoche %2$s è già esistente. Sto creando la base di dati… Impostazioni di sicurezza - Il database contiene identificativi univoci universali (UUID) duplicati. + Il database contiene Identificativi Univoci Universali (UUID) duplicati. Non è possibile salvare la base di dati. Salva la base di dati Svuota il cestino From 1044dca936523007606b0131c8f42514f324b6b9 Mon Sep 17 00:00:00 2001 From: Filippo De Bortoli Date: Tue, 1 Dec 2020 13:42:05 +0000 Subject: [PATCH 042/113] Translated using Weblate (Italian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/ --- app/src/main/res/values-it/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 2c0959038..952e7d699 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -129,8 +129,8 @@ Cerca Ordine naturale Speciali - Titolo/descrizione voce - Risultati ricerca + Cerca + Risultati della ricerca Trattino basso Versione della base di dati non supportata. Maiuscole From 2e631d3c4282fa9c92271241a4a9d7337bdc6f3e Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Tue, 1 Dec 2020 08:06:54 +0000 Subject: [PATCH 043/113] Translated using Weblate (Ukrainian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/ --- app/src/main/res/values-uk/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 448bb2a3b..62bc699d4 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -20,7 +20,7 @@ Відгук Домівка KeePassDX є Android-версією менеджера паролів KeePass - "Хто ти в біса такий\? " + Прийняти Додати запис Додати групу Алгоритм шифрування From f8691cf285386c5b2707a8cc8a02e8a65f6ac752 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Tue, 1 Dec 2020 05:52:32 +0000 Subject: [PATCH 044/113] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 60f8d7dae..4b5e9823d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -20,7 +20,7 @@ 反馈 主页 Android 平台上基于 KeePass 实现的密码管理器 - "你到底是谁? " + 接受 添加条目 添加群组 加密算法 From f2459489fab6d2d224cb312e8d4c4ba9ed715903 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Tue, 1 Dec 2020 05:51:36 +0000 Subject: [PATCH 045/113] Translated using Weblate (Turkish) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/ --- app/src/main/res/values-tr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 4b57f8c73..08239d471 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -20,7 +20,7 @@ Geri Bildirim Ana sayfa KeePass parola yöneticisinin Android uygulaması - "Kimsin sen\? " + Kabul et Girdi Ekle Girdi Düzenle Grup Ekle From b6f324f39938d97ebec7becdcd3eb443cf1b5315 Mon Sep 17 00:00:00 2001 From: x Date: Tue, 1 Dec 2020 15:54:13 +0000 Subject: [PATCH 046/113] Translated using Weblate (Italian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/ --- app/src/main/res/values-it/strings.xml | 39 +++++++++++++------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 952e7d699..b6f42fb62 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -193,7 +193,7 @@ Creazione Modifica Accesso - Continuare senza aver impostato una password di sblocco \? + Continuare senza aver impostato una password di sblocco\? Continuare senza una chiave di cifratura\? Impronta non riconosciuta Cronologia @@ -244,7 +244,7 @@ Magitastiera Attiva una tastiera personale che popola le tue password e i campi di identità Non consentire nessuna chiave principale - Abilita il pulsante «Apri» se le credenziali non sono selezionate + Permetti di toccare il pulsante \"Apri\" se non sono selezionate credenziali Protetto da scrittura Apri la base di dati in sola lettura in modo predefinito Suggerimenti educativi @@ -269,7 +269,7 @@ Crea una password robusta Genera una password robusta da associare all\'elemento, definiscila a seconda dei criteri del modulo e non dimenticare di tenerla al sicuro. Aggiungi campi personalizzati - Registra un campo aggiuntivo, inserisci delle informazioni e proteggilo se necessario. + Registra un campo aggiuntivo, aggiungi un valore e facoltativamente proteggilo. Sblocca la tua base di dati Proteggi da scrittura la tua base di dati Cambia la modalità di apertura per la sessione. @@ -287,15 +287,14 @@ Partecipa Aiuta a migliorare la stabilità, la sicurezza e ad aggiungere nuove funzioni. Diversamente da molte app di gestione password, questa è <strong>senza pubblicità</strong>, <strong>software libero (copyleft)</strong> e non raccoglie dati personali nei suoi server, non importa quale versione usi. - Acquistando la versione pro, avrai accesso a questo <strong>tema</strong> e soprattutto aiuterai nella <strong>realizzazione di progetti della comunità.</strong> - Questo<strong>tema</strong> è disponibile grazie alla tua generosità. - Per mantenere la nostra libertà ed essere sempre attivi, contiamo sul tuo <strong>contributo.</strong> - + Acquistando la versione pro, avrai accesso a questa stile visivo e soprattutto aiuterai nella realizzazione dei progetti della comunità. + Questa stile visivo è disponibile grazie alla tua generosità. + Al fine di mantenere la nostra libertà ed essere sempre attivi, contiamo sul tuo contributo. Questa funzione è <strong>in sviluppo</strong> e richiede il tuo <strong>contributo</strong> per essere disponibile a breve. Acquistando la versione <strong>pro</strong>, <strong>Contribuendo</strong>, - incoraggi gli sviluppatori a creare <strong>nuove funzioni</strong> e a <strong>correggere errori</strong> secondo le tue osservazioni. + stai incoraggiando gli sviluppatori a creare nuove funzionalità e a correggere errori in base alle tue osservazioni. Grazie mille per il tuo contributo. Stiamo lavorando sodo per rilasciare questa funzione a breve. Non dimenticare di tenere aggiornata l\'app installando nuove versioni. @@ -380,7 +379,7 @@ Cifre Algoritmo Password usa e getta (OTP) - Segreto per password usa e getta (OTP) non valido. + Segreto della password usa e getta (OTP) non valido. Impostare almeno una credenziale. Non puoi copiare un gruppo qui. La chiave segreta deve essere nel formato Base32. @@ -440,32 +439,32 @@ Digita la password e poi fai clic sul pulsante biometrico. Estrai le credenziali della base di dati con dati biometrici Forza rinnovo - Consigliato cambiare la chiave principale (giorni) + È consigliato di cambiare la chiave principale (giorni) Rinnovo raccomandato - I record scaduti sono nascosti - Nascondi i record scaduti + Le voci scadute non sono mostrate + Nascondi le voci scadute Imposta la gestione delle OTP (HOTP / TOTP) per generare un token richiesto per la 2FA. - Completo! + Completato! Finalizzazione… Avanzamento %1$d%% Inizializzazione… Scaricamento %1$s - Imposta OTP + Imposta One-Time Password (OTP) Salva la base di dati dopo ogni azione importante (in modalità «Modificabile») - Salvataggio automatico della base di dati + Salvataggio automatico del database Suggerisci automaticamente risultati dal dominio web o ID dell\'applicazione Ricerca automatica - Dopo la pressione del tasto «Campo» invia il tasto «Vai» - Azione auto key - Impostazioni tastiera dispositivo + Azione del tasto \"Vai\" dopo aver premuto un tasto \"Campo\" + Tasto di azione automatica + Impostazioni della tastiera del dispositivo Gzip Nessuna Compressione Colore personalizzato della base di dati - Nome utente di default + Nome utente predefinito Disabilita Abilita - Richiedi il cambio della master key la prossima volta (una volta) + Richiedi il cambio della chiave principale la prossima volta (una volta) Forza il rinnovo la prossima volta Richiedi il cambio della master key (giorni) Mostra il bottone di blocco nell\'interfaccia utente From 3c261e3cf743e96f0e3071f1a525d3f54ed7b4fc Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 08:54:49 +0100 Subject: [PATCH 047/113] Deleted translation using Weblate (Abkhazian) --- app/src/main/res/values-ab/strings.xml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 app/src/main/res/values-ab/strings.xml diff --git a/app/src/main/res/values-ab/strings.xml b/app/src/main/res/values-ab/strings.xml deleted file mode 100644 index a6b3daec9..000000000 --- a/app/src/main/res/values-ab/strings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file From 9e7dcb0d7c543e316d4e3d2f3165bdb97298849e Mon Sep 17 00:00:00 2001 From: Wilker Santana da Silva Date: Wed, 2 Dec 2020 08:14:36 +0000 Subject: [PATCH 048/113] Translated using Weblate (English) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/ --- app/src/main/res/values/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 566779c08..bea3784aa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -118,7 +118,7 @@ \"Transformation rounds\" too high. Setting to 2147483648. Each string must have a field name. This label already exists. - Enter a positive whole number in the \"Length\" field. + Enter a positive integer number in the \"Length\" field. Could not enable autofill service. You can not move a group into itself. You can not move an entry here. @@ -313,7 +313,7 @@ Screen lock Lock the database when the screen is off Press \'Back\' to lock - Lock the database when the user clicks the back button on the root screen + While on the root of the database, pressing Back will lock the database Show lock button Displays the lock button in the user interface Advanced unlock From acf0e2a1cb5b3897c2cf8080f0f514d7aaf34369 Mon Sep 17 00:00:00 2001 From: vachan-maker Date: Wed, 2 Dec 2020 08:11:58 +0000 Subject: [PATCH 049/113] Translated using Weblate (English) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/ --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bea3784aa..6510e24d2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -123,7 +123,7 @@ You can not move a group into itself. You can not move an entry here. You can not copy an entry here. - You can not copy a group here. + You cannot copy a group here. Unable to create database file. Unable to create database with this password and keyfile. Could not save database. From 357190570530f81f0aff12f58d55ac0270b04e95 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 07:57:30 +0000 Subject: [PATCH 050/113] Translated using Weblate (English) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/ --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6510e24d2..6aeda94aa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,7 +36,7 @@ App Brackets Extended ASCII - A file manager that accepts the Intent action. ACTION_CREATE_DOCUMENT and ACTION_OPEN_DOCUMENT is needed to create, open and save database files. + A file manager that accepts the ACTION_CREATE_DOCUMENT and ACTION_OPEN_DOCUMENT intent action is required to create, open, and save database files. Allow Clipboard cleared Clipboard error From b75502ad878c32708f1054a0835aeea5876f0f05 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Wed, 2 Dec 2020 09:41:17 +0100 Subject: [PATCH 051/113] Replace strong tag --- app/src/main/res/values-it/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 0d0ea686e..c5537dc8b 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -280,14 +280,14 @@ Partecipa Aiuta a migliorare la stabilità, la sicurezza e ad aggiungere nuove funzioni. Diversamente da molte app di gestione password, questa è <strong>senza pubblicità</strong>, <strong>software libero (copyleft)</strong> e non raccoglie dati personali nei suoi server, non importa quale versione usi. - Acquistando la versione pro, avrai accesso a questa stile visivo e soprattutto aiuterai nella realizzazione dei progetti della comunità. - Questa stile visivo è disponibile grazie alla tua generosità. - Al fine di mantenere la nostra libertà ed essere sempre attivi, contiamo sul tuo contributo. + Acquistando la versione pro, avrai accesso a questa <strong>stile visivo</strong> e soprattutto aiuterai nella <strong>realizzazione dei progetti della comunità.</strong> + Questa <strong>stile visivo</strong> è disponibile grazie alla tua generosità. + Al fine di mantenere la nostra libertà ed essere sempre attivi, contiamo sul tuo <strong>contributo.</strong> Questa funzione è <strong>in sviluppo</strong> e richiede il tuo <strong>contributo</strong> per essere disponibile a breve. Acquistando la versione <strong>pro</strong>, <strong>Contribuendo</strong>, - stai incoraggiando gli sviluppatori a creare nuove funzionalità e a correggere errori in base alle tue osservazioni. + stai incoraggiando gli sviluppatori a creare <strong>nuove funzionalità</strong> e a <strong>correggere errori</strong> in base alle tue osservazioni. Grazie mille per il tuo contributo. Stiamo lavorando sodo per rilasciare questa funzione a breve. Non dimenticare di tenere aggiornata l\'app installando nuove versioni. From 66e8b7702b7217d39bffc70c95e91007caf5d40e Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Wed, 2 Dec 2020 09:54:47 +0100 Subject: [PATCH 052/113] Default backup API key to unused --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 513ecacf3..d352d16ea 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,7 +20,7 @@ android { testInstrumentationRunner = "android.test.InstrumentationTestRunner" buildConfigField "String[]", "ICON_PACKS", "{\"classic\",\"material\"}" - manifestPlaceholders = [ googleAndroidBackupAPIKey:"" ] + manifestPlaceholders = [ googleAndroidBackupAPIKey:"unused" ] kapt { arguments { From d210d1bcce5c00f30dec6b5bb60bfc1231f85f43 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 08:26:32 +0000 Subject: [PATCH 053/113] Translated using Weblate (French) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/ --- app/src/main/res/values-fr/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0fa51d61d..226efc982 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -212,7 +212,7 @@ Description de la base de données Version de la base de données Texte - Application + Interface Autres Clavier Magiclavier @@ -316,7 +316,7 @@ Changez le mode d’ouverture pour la session. \n \n« Protégé en écriture » empêche les modifications involontaires de la base de données. -\n« Modifiable » vous permet d’ajouter, de supprimer ou de modifier tous les éléments. +\n« Modifiable » vous permet d’ajouter, de supprimer ou de modifier tous les éléments comme vous le souhaitez. Modifier l’entrée Impossible de charger votre base de données. Impossible de charger la clé. Veuillez essayer de diminuer l’utilisation mémoire de la fonction de dérivation de clé. From 5add632cbc3490ef020a34c0b7c1406b77fcab52 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 07:44:03 +0000 Subject: [PATCH 054/113] Translated using Weblate (Hebrew) Currently translated at 13.8% (67 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/ --- app/src/main/res/values-iw/strings.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index f2cfc3a6d..c10c9157e 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -17,8 +17,7 @@ You should have received a copy of the GNU General Public License along with KeePassDX. If not, see . translated by Arthur Zamarin ---> - +--> משוב דף הבית KeePassDX היא תוכנה המממשת את מנהל הסיסמאות KeePass לאנרואיד. @@ -27,7 +26,7 @@ הוסף קבוצה אלגוריתם פסק זמן ליישום - זמן לפני נעילת מסד הנתונים כאשר היישום לא פעיל. + זמן לפני נעילת מסד הנתונים כאשר היישום לא פעיל יישום הגדרות יישום סוגריים From d3f6374bb4c54ce0ffc9ff880170457b6060394b Mon Sep 17 00:00:00 2001 From: HARADA Hiroyuki Date: Wed, 2 Dec 2020 09:35:56 +0000 Subject: [PATCH 055/113] Translated using Weblate (Japanese) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/ --- app/src/main/res/values-ja/strings.xml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 49c93d4e6..f71c6b869 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -346,7 +346,7 @@ マスターキーの変更を必須にします(日数) 次回更新を強制 次回マスターキーの変更を必須にします(1 回のみ) - フィールド フォント + フィールド書体 フィールド内で使用するフォントを変更して、文字を見やすくします クリップボードの信頼 エントリーのパスワードと保護されたフィールドを、クリップボードにコピーすることを許可します @@ -362,7 +362,7 @@ カスタムカラー データベースのバージョン テキスト - アプリ + インターフェース その他 圧縮 なし @@ -455,7 +455,10 @@ データベースのロックを解除 データベースのロックを解除するには、パスワードまたはキーファイル、またはその両方を入力します。\n\nデータベース ファイルは変更するたびに安全な場所へバックアップしてください。 データベースの書き込みを禁止 - セッションのロック解除モードを変更します。\n\n[書き込み禁止] では、データベースに対する意図しない変更を防ぐことができます。\n[変更可能] では、すべての要素を追加、削除、変更できます。 + セッションのロック解除モードを変更します。 +\n +\n[書き込み禁止] では、データベースに対する意図しない変更を防ぐことができます。 +\n[変更可能] では、すべての要素を必要に応じて追加、削除、変更できます。 フィールドをコピー コピーしたフィールドはどこにでも貼り付けることができます。\n\nお好みのフォーム入力方法を使用してください。 データベースをロック From e73921131409a54de0a9f7bc084f6de11c88724c Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 07:44:35 +0000 Subject: [PATCH 056/113] Translated using Weblate (Latvian) Currently translated at 14.6% (71 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/lv/ --- app/src/main/res/values-lv/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 8736cc9c4..05c33cb72 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -25,7 +25,7 @@ Jauna grupa Šifrēšanas algoritms Pielikuma taimauts - Bloķēšanas taimauts, kad programma nav aktīva. + Bloķēšanas taimauts, kad programma nav aktīva Programma Programmas iestatījumi Iekavas From 79d1f512e52736ca24a2a397973f4f9a545393e8 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 07:45:46 +0000 Subject: [PATCH 057/113] Translated using Weblate (Norwegian Nynorsk) Currently translated at 14.9% (72 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nn/ --- app/src/main/res/values-nn/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-nn/strings.xml b/app/src/main/res/values-nn/strings.xml index 19cc5d963..bd9511b38 100644 --- a/app/src/main/res/values-nn/strings.xml +++ b/app/src/main/res/values-nn/strings.xml @@ -25,7 +25,7 @@ Legg til gruppe Encryption algorithm Programtidsavbrot - Idle time before locking the database + App Programinnstillingar Parentesar From 68ac453100bc42193acf819ca80591bf3e89fd5a Mon Sep 17 00:00:00 2001 From: solokot Date: Wed, 2 Dec 2020 11:45:37 +0000 Subject: [PATCH 058/113] Translated using Weblate (Russian) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/ --- app/src/main/res/values-ru/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 5f2c95094..9df5f9a2d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -244,7 +244,7 @@ Описание базы Версия базы Текст - Приложение + Внешний вид Прочее Клавиатура Настройки Magikeyboard @@ -281,7 +281,7 @@ Изменяйте режим открытия в сессии. \n \nВ \"режиме только для чтения\" можно предотвратить непреднамеренные изменения в базе. -\nВ \"режиме записи\" вы можете добавлять, удалять или изменять любые элементы. +\nВ \"режиме записи\" можно добавлять, удалять или изменять любые элементы. Копируйте поля Скопированные поля можно вставить в любом месте. \n From 795baf2c01814dadac51d0c5154d65987065acc6 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 07:48:24 +0000 Subject: [PATCH 059/113] Translated using Weblate (Slovak) Currently translated at 17.8% (86 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sk/ --- app/src/main/res/values-sk/strings.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 1ccb7debc..605a05c9b 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -16,8 +16,7 @@ You should have received a copy of the GNU General Public License along with KeePassDX. If not, see . ---> - +--> Spätná väzba Domovská stránka Správca hesiel KeePass pre Android @@ -26,7 +25,7 @@ Pridať Skupinu Šifrovací algoritmus Časový limit aplikácie - Čas pred uzamknutím databázy, ak je aplikácia neaktívna. + Čas pred uzamknutím databázy, ak je aplikácia neaktívna Aplikácia Nastavenia aplikácie Konzoly From aa643108754f7187ecd8ed88bac385a363cbcadf Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Wed, 2 Dec 2020 08:17:48 +0000 Subject: [PATCH 060/113] Translated using Weblate (Ukrainian) Currently translated at 99.3% (480 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/ --- app/src/main/res/values-uk/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 62bc699d4..410d66a55 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -66,7 +66,7 @@ Необхідно вибрати принаймні один тип створення пароля. Паролі не збігаються. Забагато циклів. Встановлено 2147483648. - Введіть додатне ціле число до поля \"Довжина\". + Введіть додатне ціле додатне число до поля \"Довжина\". Файловий менеджер Згенерувати пароль Підтвердити пароль @@ -154,7 +154,7 @@ Gzip Стиснення Інше - Застосунок + Інтерфейс Текст Версія бази даних Власний колір бази даних @@ -228,7 +228,7 @@ Не вдалося зберегти базу даних. Неможливо створити базу даних із цим паролем та файлом ключа. Не вдалося створити файл бази даних. - Ви не можете скопіювати групу сюди. + Ви не можете копіювати групу сюди. Ви не можете копіювати записи сюди. Ви не можете перемістити запис сюди. Ви не можете перемістити групу в себе саму. @@ -409,7 +409,7 @@ Розширені параметри розблокування Показувати кнопку блокування в інтерфейсі користувача Показувати кнопку блокування - Блокувати базу даних, коли користувач натискає кнопку назад на головному екрані + Перебуваючи в кореневій частині бази даних, натискання кнопки «Назад» заблокує базу даних Натисніть \'Назад\', щоб заблокувати Блокувати базу даних, якщо екран вимкнено Блокування екрана From e993279c3580b91296467c6bf326849e6abacf36 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 08:23:08 +0000 Subject: [PATCH 061/113] Translated using Weblate (English) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/ --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6aeda94aa..4f3585ac3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -313,7 +313,7 @@ Screen lock Lock the database when the screen is off Press \'Back\' to lock - While on the root of the database, pressing Back will lock the database + Lock the database when the user clicks the back button on the root screen Show lock button Displays the lock button in the user interface Advanced unlock From 086723adf465cb14676e7afe2c5333f8547f1034 Mon Sep 17 00:00:00 2001 From: Wilker Santana da Silva Date: Wed, 2 Dec 2020 08:20:04 +0000 Subject: [PATCH 062/113] Translated using Weblate (English) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/ --- app/src/main/res/values/strings.xml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4f3585ac3..4c72a022e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -349,7 +349,7 @@ Require changing the master key (days) Force renewal next time Require changing the master key the next time (once) - Field font + Field typeface Change font used in fields for better character visibility Clipboard trust Allow copying the entry password and protected fields to the clipboard @@ -365,7 +365,7 @@ Custom database color Database version Text - App + Interface Other Compression None @@ -459,7 +459,10 @@ Unlock your database Enter the password and/or keyfile to unlock your database.\n\nBackup your database file in a safe place after each change. Write protect your database - Change opening mode for the session.\n\n\"Write-protected\" prevents unintended changes to the database.\n\"Modifiable\" lets you add, delete, or modify all elements. + Change opening mode for the session. +\n +\n\"Write-protected\" prevents unintended changes to the database. +\n\"Modifiable\" lets you add, delete, or modify all the elements as you wish. Copy a field Copied fields can be pasted anywhere.\n\nUse the form filling method you prefer. Lock the database @@ -478,7 +481,7 @@ you are encouraging developers to create <strong>new features</strong> and to <strong>fix bugs</strong> according to your remarks. Thanks a lot for your contribution. We are working hard to release this feature quickly. - Do not forget to keep your app up to date by installing new versions. + Remember to keep your app up to date by installing new versions. Download Contribute Download %1$s From 391ce2ebba78cb33077d6fba81a1e4ecc2a71b71 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 07:43:00 +0000 Subject: [PATCH 063/113] Translated using Weblate (Galician) Currently translated at 6.4% (31 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/gl/ --- app/src/main/res/values-gl/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index f631a1f9a..d5db3826d 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -27,7 +27,7 @@ Algoritmo de cifrado Función de derivación de chave Tempo de espera da aplicación - Tempo antes de bloquear a base de datos cando a aplicación está inactiva. + Tiempo de inactividad antes de bloquear la base de datos Aplicación Parénteses ASCII extendido From a857ffa987d5f32e648813d5295ae6edb024c767 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 2 Dec 2020 10:17:15 +0000 Subject: [PATCH 064/113] Translated using Weblate (Turkish) Currently translated at 100.0% (483 of 483 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/ --- app/src/main/res/values-tr/strings.xml | 132 ++++++++++++------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 08239d471..f78a77c41 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -40,7 +40,7 @@ Pano temizlenemedi Pano zaman aşımı Panodaki depolama süresi (aygıtınız tarafından destekleniyorsa) - Veritabanı + Veri tabanı Erişildi İptal Notlar @@ -58,9 +58,9 @@ Yolun doğru olduğundan emin olun. Bir isim girin. %1$s dosyasını panoya kopyalamak için seçin - Veritabanı anahtarı alınıyor… - Veritabanı içeriği deşifre ediliyor… - Öntanımlı veritabanı olarak kullan + Veri tabanı anahtarı alınıyor… + Veri tabanı içeriğinin şifresi çözülüyor… + Öntanımlı veri tabanı olarak kullan Rakamlar KeePassDX © %1$d Kunzisoft <strong>açık kaynaklıdır</strong> ve <strong>reklam içermez</strong>. \n<strong>GPLv3</strong> lisansı altında sağlanmaktadır, herhangi bir garanti vermez. @@ -69,8 +69,8 @@ Arcfour akış şifresi desteklenmiyor. Bu URI, KeePassDX\'te işlenemedi. Bir anahtar dosyası seçin. - Tüm veritabanınızı yüklemek için bellek yok. - Veritabanınız yüklenemedi. + Tüm veri tabanınızı yükleyecek kadar bellek yok. + Veri tabanınız yüklenemedi. Anahtar yüklenemedi. KDF \"Bellek Kullanımı\" nı azaltmaya çalışın. En az bir parola oluşturma türü seçilmelidir. Parolalar uyuşmuyor. @@ -93,14 +93,14 @@ Parola Kimlik bilgileri okunamadı. Yanlış algoritma. - Veritabanı biçimi tanımlanamadı. + Veri tabanı biçimi tanınamadı. Anahtar dosya boş. Uzunluk Kullanıcı adlarını göster Giriş listelerinde kullanıcı adlarını göster Liste ögelerinin boyutu - Öğe listesindeki metin boyutu - Veritabanı yükleniyor… + Öge listesindeki metin boyutu + Veri tabanı yükleniyor… Küçük harf Parolaları gizle Parolaları öntanımlı olarak (***) ile maskele @@ -110,7 +110,7 @@ Ayarlar Uygulama ayarları Form doldurma - Veritabanı ayarları + Veri tabanı ayarları Bağış Yap Düzen Kopyala @@ -130,18 +130,18 @@ Asla Arama sonucu bulunamadı Bu URL\'u açmak için bir web tarayıcısı yükleyin. - Mevcut veritabanını aç - Yeni veritabanı oluştur + Mevcut veri tabanını aç + Yeni veri tabanı oluştur Yedek girişleri arama Arama sonuçlarından \"Yedekleme\" ve \"Geri dönüşüm kutusu\" gruplarını atlar - Yeni veritabanı oluştur… + Yeni veri tabanı oluşturuluyor… Çalışıyor… Koruma Yazma korumalı - Veritabanınızdaki herhangi bir şeyi değiştirmek için KeePassDX\'in yazma iznine ihtiyacı var. + Dosya yöneticinize bağlı olarak KeePassDX\'in depolama alanınıza yazmasına izin verilmeyebilir. Kaldır Kök - Tüm veriler için veritabanı şifreleme algoritması kullanılmıştır. + Tüm veriler için kullanılan veri tabanı şifreleme algoritması. Şifreleme algoritmasının anahtarını üretmek için ana anahtar, rastgele anahtar türetme işlevi kullanılarak dönüştürülür. Dönüşüm turları Ek şifreleme turları, kaba kuvvet saldırılarına karşı daha yüksek koruma sağlar, ancak yükleme ve kaydetmeyi gerçekten yavaşlatabilir. @@ -149,7 +149,7 @@ Anahtar türetme işlevi tarafından kullanılacak bellek miktarı (bayt olarak). Paralellik Anahtar türev fonksiyonu tarafından kullanılan paralellik derecesi (yani iplik sayısı). - Veritabanı kaydediliyor… + Veri tabanı kaydediliyor… Boşluk Ara Sırala @@ -167,7 +167,7 @@ Arama Sonuçları Eksi Altı çizili - Desteklenmeyen veritabanı sürümü. + Desteklenmeyen veri tabanı sürümü. Büyük harf Uyarı Veri tabanı dosyasındaki metin kodlama biçiminin dışındaki parola karakterlerinden kaçın (tanınmayan karakterler aynı harfe dönüştürülür). @@ -181,7 +181,7 @@ Parmak izi tanınamadı Parmak izi sorunu: %1$s Bu şifreyi saklamak için parmak izini kullanın - Bu veritabanının henüz bir parolası yok. + Bu veri tabanında henüz kaydedilmiş kimlik bilgisi yok. Geçmiş Görünüm Genel @@ -200,10 +200,10 @@ Panodaki otomatik silme başarısız olursa, geçmişini elle silin. Kilit Ekran kilidi - Ekran kapalıyken veritabanını kilitle + Ekran kapalıyken veri tabanını kilitle Parmakizi Parmak izi tarama - Veritabanını açmak için biyometriklerinizi taramanızı sağlar + Veri tabanını açmak için biyometriklerinizi taramanızı sağlar Şifreleme anahtarlarını silin Parmak izi tanıma ile ilgili tüm şifreleme anahtarlarını silin Biyometrik tanıma ile ilgili tüm şifreleme anahtarları silinsin mi\? @@ -215,16 +215,16 @@ Ana anahtar atayın Geri dönüşüm kutusu kullanımı Silmeden önce grupları ve girdileri \"Geri Dönüşüm Kutusu\"na taşır - Yazı tipi alanı + Alan yazı tipi Daha iyi karakter görünürlüğü için alanlarda kullanılan yazı tipini değiştirin Pano güveni Giriş parolası ve korunan alanları panoya kopyalamaya izin ver Uyarı: Pano tüm uygulamalar tarafından paylaşılır. Hassas veriler kopyalanırsa, diğer yazılımlar bu verileri kurtarabilir. - Veritabanı adı - Veritabanı açıklaması - Veritabanı sürümü + Veri tabanı adı + Veri tabanı açıklaması + Veri tabanı sürümü Metin - Uygulama + Arayüz Diğer Klavye Magikeyboard @@ -241,7 +241,7 @@ Magikeyboard\'da %1$s mevcut %1$s Kapanışta temizle - Bildirimi kapatırken veritabanını kapatın + Bildirimi kapatırken veri tabanını kapat Görünüm Klavye teması Anahtarlar @@ -256,42 +256,42 @@ Eğitim ipuçlarını sıfırla Tüm eğitim bilgilerini tekrar göster Eğitim ipuçlarını sıfırla - Veritabanı dosyanızı oluşturun + Veri tabanı dosyanızı oluşturun İlk parola yönetim dosyanızı oluşturun. - Mevcut bir veritabanını aç - Kullanmaya devam etmek için önceki veritabanı dosyanızı dosya tarayıcınızdan açın. + Mevcut bir veri tabanını açın + Kullanmaya devam etmek için önceki veri tabanı dosyanızı dosya tarayıcınızdan açın. Veri tabanınıza öge ekleyin - Girdiler dijital kimliğinizi yönetmenize yardımcı olur. -\n -\nGruplar (~klasörler) veritabanınızdaki girdileri düzenler. - Girişlerde ara + Girdiler dijital kimliğinizi yönetmenize yardımcı olur. +\n +\nGruplar (~klasörler) veri tabanınızdaki girdileri düzenler. + Girdilerde arayın Parolanızı kurtarmak için başlık, kullanıcı adı veya diğer alanların içeriğini girin. - Parmak iziyle veri tabanı kilidi açma - Veritabanınızı hızlıca açmak için parolanızı taranan parmak izinize bağlayın. - Girdiyi düzenle + Veri tabanı kilidini biyometrik verilerle açın + Veri tabanınızı hızlıca açmak için parolanızı taranan parmak izinize bağlayın. + Girdiyi düzenleyin Girdinizi özel alanlarla düzenleyin. Havuz verileri farklı giriş alanları arasında referans alınabilir. Güçlü bir parola oluşturun Girişinizle ilişkilendirmek için güçlü bir parola oluşturun, formun kriterlerine göre kolayca tanımlayın ve güvenli parolayı unutmayın. - Özel alanlar ekle + Özel alanlar ekleyin Ek bir alan kaydedin, bir değer ekleyin ve isteğe bağlı olarak koruyun. - Veritabanınızın kilidini açın - Veritabanınızın kilidini açmak için parola ve/veya anahtar dosya girin. + Veri tabanınızın kilidini açın + Veri tabanınızın kilidini açmak için parola ve/veya anahtar dosyası girin. \n -\nHer değişiklikten sonra veritabanı dosyanızı güvenli bir yerde yedekleyin. - Veritabanınızı yazmaya karşı koru +\nHer değişiklikten sonra veri tabanı dosyanızı güvenli bir yerde yedekleyin. + Veri tabanınızı yazmaya karşı koruyun Oturum için açılış modunu değiştir. \n -\n\"Yazma korumalı\", veritabanında istenmeyen değişiklikleri önler. -\n\"Değiştirilebilir\", tüm öğeleri eklemenizi, silmenizi veya değiştirmenizi sağlar. - Bir alan kopyala +\n\"Yazma korumalı\", veri tabanında istenmeyen değişiklikleri önler. +\n\"Değiştirilebilir\", tüm ögeleri istediğiniz gibi eklemenize, silmenize veya değiştirmenize izin verir. + Bir alanı kopyalayın Kopyalanan alanlar herhangi bir yere yapıştırılabilir. \n \nTercih ettiğiniz form doldurma yöntemini kullanın. - Veritabanını kilitle - Veritabanınızı hızlıca kilitleyin, uygulamayı bir süre sonra kilitlemek için ve ekran kapandığında ayarlayabilirsiniz. - Öge sıralama + Veri tabanını kilitleyin + Veri tabanınızı hızlıca kilitleyin, belirli bir süre sonra ve ekran kapandığında kilitlenmesi için uygulamayı ayarlayabilirsiniz. + Ögeleri sıralayın Girdilerin ve grupların nasıl sıralandığını seçin. - Katıl + Katılın Daha fazla özellik ekleyerek istikrarı, güvenliği artırmaya yardımcı olun. Birçok parola yönetimi uygulamasının aksine, bu uygulama <strong>reklam içermez</strong>, <strong> copyleft lisanslı özgür yazılımdır</strong> ve hangi sürümü kullanırsanız kullanın, sunucularında kişisel veri toplamaz. Profesyonel sürümü satın alarak, bu <strong>görsel stile</strong> erişebilecek ve özellikle <strong>topluluk projelerinin gerçekleştirilmesine</strong> yardımcı olacaksınız. @@ -301,7 +301,7 @@ <strong>Pro</strong> sürümü satın alarak, <strong>Katkıda</strong> bulunarak, geliştiricilerin <strong>yeni özellikler</strong> oluşturmasını ve söz konusu hatalara göre <strong>hataları düzeltmesini</strong> teşvik ediyorsunuz. - Katkınız için çok teşekkür ederim. + Katkıda bulunduğunuz için çok teşekkür ederim. Bu özelliği çabucak yayınlamak için çok çalışıyoruz. Yeni sürümleri yükleyerek uygulamanızı güncel tutmayı unutmayın. İndir @@ -317,7 +317,7 @@ Uygulamada kullanılan simge paketi Seçim modu Uygulamayı öldürmeyin… - Kullanıcı kök ekranda geri düğmesine tıkladığında veritabanını kilitle + Kullanıcı kök ekranda geri düğmesine tıkladığında veri tabanını kilitle Kapanışta temizle Panonun süresi dolduğunda veya kullanmaya başladıktan sonra bildirim kapatıldığında veri tabanını kilitle Dosya aç @@ -348,12 +348,12 @@ Arka plan Güncelleme Alanları kapat - Bu parola ve anahtar dosyası ile veritabanı oluşturulamıyor. + Bu parola ve anahtar dosyası ile veri tabanı oluşturulamıyor. Gelişmiş kilit açma Biyometrik tanımayı kaydedin Uyarı: Biyometrik tanıma kullanıyorsanız hala ana parolanızı hatırlamanız gerekir. - Biyometrik tanıma ile veritabanı aç - Biyometrik verilerle veritabanı kimlik bilgilerini çıkar + Veri tabanını biyometrik tanıma ile aç + Veri tabanı kimlik bilgilerini biyometrik veriler ile çıkar Biyometrik Biyometrik taramayı otomatik aç Vari tabanı, onu kullanacak biçimde ayarlandıysa biyometriği otomatik olarak sor @@ -378,14 +378,14 @@ Periyot %1$d ile %2$d saniye arasında olmalıdır. Belirteç %1$d ile %2$d basamak içermelidir. %1$s aynı UUID değerine sahip %2$s zaten var. - Veritabanı oluşturuluyor… + Veri tabanı oluşturuluyor… Güvenlik ayarları Ana anahtar ayarları - Veritabanı tekrarlanan UUID\'ler içermektedir. + Veri tabanı tekrarlanan UUID\'ler içeriyor. Tekrarlananlar için yeni UUID\'ler oluşturarak sorunu çöz ve devam et\? - Veritabanı açıldı + Veri tabanı açıldı Aygıtınızın panosunu kullanarak giriş alanlarını kopyala - Veritabanını daha kolay açmak için gelişmiş kilit açma özelliğini kullan + Veri tabanını daha kolay açmak için gelişmiş kilit açma özelliğini kullan Veri sıkıştırma Veri sıkıştırma veri tabanı boyutunu azaltır Azami sayı @@ -399,12 +399,12 @@ Bir dahaki sefere yenilemeye zorla Bir dahaki sefere ana anahtarı değiştirmeyi gerektirir (bir kez) Öntanımlı kullanıcı adı - Özel veritabanı rengi + Özel veri tabanı rengi Sıkıştırma Yok Gzip Aygıt klavye ayarları - Veritabanı kaydedilemedi. + Veri tabanı kaydedilemedi. Veri tabanını kaydet Geri dönüşüm kutusunu boşalt Komut çalıştırılıyor… @@ -412,7 +412,7 @@ Anahtar deposu düzgün bir şekilde başlatılmadı. Parolayı yazın, sonra \"Biyometrik\" düğmesine tıklayın. Geri dönüşüm kutusu grubu - Veritabanını otomatik kaydet + Veri tabanını otomatik kaydet Her önemli işlemden sonra veri tabanını kaydet (\"Değiştirilebilir\" modda) Ekler Geçmişi geri yükle @@ -427,9 +427,9 @@ Süresi dolmuş girdileri gizle Süresi dolmuş girdiler gösterilmez Veri tabanı değişikliklerini kaydetmek için dosya yazma erişimi ver - Son veritabanları listesindeki bozuk bağlantıları gizle - Bozuk veritabanı bağlantılarını gizle - Son veritabanlarının konumlarını göster + Son veri tabanları listesindeki bozuk bağlantıları gizle + Bozuk veri tabanı bağlantılarını gizle + Son veri tabanlarının konumlarını göster Son dosyaları göster Anahtar dosyalarının nerede saklandığını takip eder Anahtar dosyası konumlarını hatırla @@ -440,8 +440,8 @@ Katkı İletişim İki ögeli kimlik doğrulaması (2FA) için istenen bir belirteç oluşturmak için bir kerelik parola yönetimini (HOTP / TOTP) ayarlayın. - OTP ayarla - Veritabanı dosyası oluşturulamıyor. + Bir kerelik parola (OTP) ayarlayın + Veri tabanı dosyası oluşturulamıyor. <strong>Özgürlüğümüzü korumak</strong>, <strong>hataları düzeltmek</strong>, <strong>özellikler eklemek</strong> ve <strong>her zaman etkin olmak</strong> için, <strong>desteğinize</strong> güveniyoruz. Ek ekle Vazgeç @@ -474,7 +474,7 @@ Klavye değiştir %1$s yükle Önemli harici verileri kaydetmek için girdinize bir ek yükleyin. - Ek ekle + Ek ekleyin Dosya yine de eklensin mi\? Bu dosyanın yüklenmesi mevcut dosyanın yerini alacaktır. Bir KeePass veri tabanının sadece küçük yardımcı dosyaları (PGP anahtar dosyaları gibi) içermesi beklenmektedir. From 754a7f70bc678d18211ec0937d76508aa4e0acf8 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Wed, 2 Dec 2020 13:22:18 +0100 Subject: [PATCH 065/113] Remove unused translation --- app/src/main/res/values-cs/strings.xml | 1 - app/src/main/res/values-nl/strings.xml | 1 - 2 files changed, 2 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index e43741f53..4ef5f355e 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -508,7 +508,6 @@ Uložit sdílené info Oznámení Krypto objekt nelze načíst. - Biometrický dialog nelze spustit. Vyžadována aktualizace biometrického zabezpečení. Žádné přihlašovací ani biometrické údaje nejsou registrovány. Trvale odstranit všechny položky z koše\? diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index ade222995..ecf550dfa 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -509,7 +509,6 @@ Gedeelde info opslaan Melding Kan crypto-object niet ophalen. - Kan biometrische prompt niet initialiseren. Biometrische beveiligingsupdate vereist. Geen biometrische gegevens of apparaatgegevens geregistreerd. Alles definitief uit de prullenbak verwijderen\? From ee67238133155a618c82e82934ae73e0d2226b03 Mon Sep 17 00:00:00 2001 From: solokot Date: Wed, 2 Dec 2020 14:39:15 +0000 Subject: [PATCH 066/113] Translated using Weblate (Russian) Currently translated at 100.0% (486 of 486 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/ --- app/src/main/res/values-ru/strings.xml | 32 +++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 68a4d387c..a39276445 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -214,11 +214,11 @@ Блокировка Блокировка экрана Блокировать базу при отключении экрана - Дополнительная разблокировка + Расширенная разблокировка Сканирование биометрического ключа Включить разблокировку базы при помощи биометрического ключа Удалить ключи шифрования - Удалить все ключи шифрования, связанные с распознаванием биометрического ключа + Удалить все ключи шифрования, связанные с распознаванием расширенной разблокировки Невозможно запустить эту функцию. Ваша версия Android %1$s, но требуется %2$s. Соответствующее оборудование не найдено. @@ -228,7 +228,7 @@ Создать новую базу Использовать \"корзину\" Перемещать группу или запись в \"корзину\" вместо удаления - Особый шрифт + Шрифт полей Использовать в полях особый шрифт для лучшей читаемости Доверять буферу обмена Разрешить копирование пароля и защищённых полей в буфер обмена @@ -326,7 +326,7 @@ Звук при нажатии Не убивайте приложение… Блокировка нажатием \"Назад\" - Блокировка базы при нажатии кнопки \"Назад\" на начальном экране + Блокировка базы нажатием кнопки \"Назад\" на начальном экране Очищать при закрытии Блокировать базу при закрытии уведомления после использования или истечения времени ожидания Корзина @@ -357,10 +357,10 @@ Обновить Закрыть поля Невозможно создать базу с этим паролем и ключевым файлом. - Дополнительная разблокировка + Расширенная разблокировка Биометрический ключ - Автозапрос биометрического ключа - Автоматически запрашивать биометрический ключ, если он установлен для базы + Автозапрос ключа + Автоматически запрашивать расширенную разблокировку, если она установлена для базы Включить Отключить Режим выбора @@ -390,7 +390,7 @@ Исправить проблему путём создания новых UUID для дубликатов и продолжить работу\? База открыта Копирование полей ввода с помощью буфера обмена устройства - Использовать дополнительную разблокировку для более лёгкого открытия базы данных + Использовать расширенную разблокировку для более лёгкого открытия базы данных Сжатие данных Сжатие данных уменьшает размер базы Максимум записей @@ -515,4 +515,20 @@ Режим поиска Сохранение новых записей невозможно, т.к. база открыта только для чтения Поле с таким именем уже существует. + Позволяет использовать учётные данные вашего устройства для открытия базы + Разблокировка учётных данных устройства + Учётные данные устройства + Введите пароль и нажмите кнопку \"Расширенная разблокировка\". + Невозможно инициализировать запрос расширенной разблокировки. + Невозможно распознать расширенную разблокировку + Невозможно прочитать ключ расширенной разблокировки. Удалите его и повторите процедуру распознавания разблокировки. + Извлекать учётные данные базы с использованием расширенной разблокировки + Открывать базу с расширенным распознаванием разблокировки + Предупреждение: даже при использовании расширенной разблокировки вам всё равно необходимо помнить главный пароль. + Открывать запрос расширенной разблокировки для сохранения учётных данных + Открывать запрос расширенной разблокировки для разблокировки базы + Удалить все ключи шифрования, связанные с распознаванием расширенной разблокировки\? + Ошибка расширенной разблокировки: %1$s + Распознавание расширенной разблокировки + Удалить ключ расширенной разблокировки \ No newline at end of file From c9f7bbbd25824e7bc05a45da645da937a92b6cd4 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 3 Dec 2020 15:41:13 +0100 Subject: [PATCH 067/113] Remove default database parameter when the file is no longer accessible #803 --- CHANGELOG | 1 + .../activities/FileDatabaseSelectActivity.kt | 2 +- .../keepass/activities/PasswordActivity.kt | 64 ++++++++++++------- .../keepass/settings/PreferencesUtil.kt | 2 + .../viewmodels/DatabaseFileViewModel.kt | 31 +++++++++ .../viewmodels/DatabaseFilesViewModel.kt | 8 +-- .../metadata/android/en-US/changelogs/47.txt | 3 +- .../metadata/android/fr-FR/changelogs/47.txt | 3 +- 8 files changed, 82 insertions(+), 32 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3ab9bac28..43547028b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ KeePassDX(2.9.3) * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 + * Remove default database parameter when the file is no longer accessible #803 KeePassDX(2.9.2) * Managing OTP links from QR applications #556 diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt index 60058a243..14ff0c5e2 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt @@ -237,10 +237,10 @@ class FileDatabaseSelectActivity : SpecialModeActivity(), private fun fileNoFoundAction(e: FileNotFoundException) { val error = getString(R.string.file_not_found_content) + Log.e(TAG, error, e) coordinatorLayout?.let { Snackbar.make(it, error, Snackbar.LENGTH_LONG).asError().show() } - Log.e(TAG, error, e) } private fun launchPasswordActivity(databaseUri: Uri, keyFile: Uri?) { diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt index e31f58523..3e40e602a 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt @@ -56,6 +56,7 @@ import com.kunzisoft.keepass.biometric.BiometricUnlockDatabaseHelper import com.kunzisoft.keepass.database.action.ProgressDatabaseTaskProvider import com.kunzisoft.keepass.database.element.Database import com.kunzisoft.keepass.database.exception.DuplicateUuidDatabaseException +import com.kunzisoft.keepass.database.exception.FileNotFoundDatabaseException import com.kunzisoft.keepass.education.PasswordActivityEducation import com.kunzisoft.keepass.model.RegisterInfo import com.kunzisoft.keepass.model.SearchInfo @@ -92,6 +93,7 @@ open class PasswordActivity : SpecialModeActivity() { private val databaseFileViewModel: DatabaseFileViewModel by viewModels() + private var mDefaultDatabase: Boolean = false private var mDatabaseFileUri: Uri? = null private var mDatabaseKeyFileUri: Uri? = null @@ -173,6 +175,11 @@ open class PasswordActivity : SpecialModeActivity() { mAllowAutoOpenBiometricPrompt = savedInstanceState.getBoolean(ALLOW_AUTO_OPEN_BIOMETRIC_PROMPT) } + // Observe if default database + databaseFileViewModel.isDefaultDatabase.observe(this) { isDefaultDatabase -> + mDefaultDatabase = isDefaultDatabase + } + // Observe database file change databaseFileViewModel.databaseFileLoaded.observe(this, Observer { databaseFile -> // Force read only if the file does not exists @@ -220,32 +227,40 @@ open class PasswordActivity : SpecialModeActivity() { if (resultException != null) { resultError = resultException.getLocalizedMessage(resources) - // Relaunch loading if we need to fix UUID - if (resultException is DuplicateUuidDatabaseException) { - showLoadDatabaseDuplicateUuidMessage { + when (resultException) { + is DuplicateUuidDatabaseException -> { + // Relaunch loading if we need to fix UUID + showLoadDatabaseDuplicateUuidMessage { - var databaseUri: Uri? = null - var masterPassword: String? = null - var keyFileUri: Uri? = null - var readOnly = true - var cipherEntity: CipherDatabaseEntity? = null + var databaseUri: Uri? = null + var masterPassword: String? = null + var keyFileUri: Uri? = null + var readOnly = true + var cipherEntity: CipherDatabaseEntity? = null - result.data?.let { resultData -> - databaseUri = resultData.getParcelable(DATABASE_URI_KEY) - masterPassword = resultData.getString(MASTER_PASSWORD_KEY) - keyFileUri = resultData.getParcelable(KEY_FILE_URI_KEY) - readOnly = resultData.getBoolean(READ_ONLY_KEY) - cipherEntity = resultData.getParcelable(CIPHER_ENTITY_KEY) + result.data?.let { resultData -> + databaseUri = resultData.getParcelable(DATABASE_URI_KEY) + masterPassword = resultData.getString(MASTER_PASSWORD_KEY) + keyFileUri = resultData.getParcelable(KEY_FILE_URI_KEY) + readOnly = resultData.getBoolean(READ_ONLY_KEY) + cipherEntity = resultData.getParcelable(CIPHER_ENTITY_KEY) + } + + databaseUri?.let { databaseFileUri -> + showProgressDialogAndLoadDatabase( + databaseFileUri, + masterPassword, + keyFileUri, + readOnly, + cipherEntity, + true) + } } - - databaseUri?.let { databaseFileUri -> - showProgressDialogAndLoadDatabase( - databaseFileUri, - masterPassword, - keyFileUri, - readOnly, - cipherEntity, - true) + } + is FileNotFoundDatabaseException -> { + // Remove this default database inaccessible + if (mDefaultDatabase) { + databaseFileViewModel.removeDefaultDatabase() } } } @@ -277,6 +292,9 @@ open class PasswordActivity : SpecialModeActivity() { mDatabaseFileUri = intent?.getParcelableExtra(KEY_FILENAME) mDatabaseKeyFileUri = intent?.getParcelableExtra(KEY_KEYFILE) } + mDatabaseFileUri?.let { + databaseFileViewModel.checkIfIsDefaultDatabase(it) + } } override fun onNewIntent(intent: Intent?) { diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt index f6d9bf2be..90a4f67d5 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt @@ -19,6 +19,7 @@ */ package com.kunzisoft.keepass.settings +import android.app.backup.BackupManager import android.content.Context import android.content.res.Resources import android.net.Uri @@ -43,6 +44,7 @@ object PreferencesUtil { } apply() } + BackupManager(context).dataChanged() } fun getDefaultDatabasePath(context: Context): String? { diff --git a/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFileViewModel.kt b/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFileViewModel.kt index 449f5da10..ffc8f8d8d 100644 --- a/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFileViewModel.kt +++ b/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFileViewModel.kt @@ -4,8 +4,12 @@ import android.app.Application import android.net.Uri import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData +import com.kunzisoft.keepass.app.App import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction +import com.kunzisoft.keepass.app.database.IOActionTask import com.kunzisoft.keepass.model.DatabaseFile +import com.kunzisoft.keepass.settings.PreferencesUtil +import com.kunzisoft.keepass.utils.UriUtil class DatabaseFileViewModel(application: Application) : AndroidViewModel(application) { @@ -15,6 +19,33 @@ class DatabaseFileViewModel(application: Application) : AndroidViewModel(applica mFileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(application.applicationContext) } + val isDefaultDatabase: MutableLiveData by lazy { + MutableLiveData() + } + + fun checkIfIsDefaultDatabase(databaseUri: Uri) { + IOActionTask( + { + (UriUtil.parse(PreferencesUtil.getDefaultDatabasePath(getApplication().applicationContext)) + == databaseUri) + }, + { + isDefaultDatabase.value = it + } + ).execute() + } + + fun removeDefaultDatabase() { + IOActionTask( + { + PreferencesUtil.saveDefaultDatabasePath(getApplication().applicationContext, + null) + }, + { + } + ).execute() + } + val databaseFileLoaded: MutableLiveData by lazy { MutableLiveData() } diff --git a/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFilesViewModel.kt b/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFilesViewModel.kt index 28e628589..a69d42895 100644 --- a/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFilesViewModel.kt +++ b/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFilesViewModel.kt @@ -1,7 +1,6 @@ package com.kunzisoft.keepass.viewmodels import android.app.Application -import android.app.backup.BackupManager import android.net.Uri import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData @@ -42,11 +41,8 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic fun setDefaultDatabase(databaseFile: DatabaseFile?) { IOActionTask( { - val context = getApplication().applicationContext - UriUtil.parse(PreferencesUtil.getDefaultDatabasePath(context)) - PreferencesUtil.saveDefaultDatabasePath(context, databaseFile?.databaseUri) - val backupManager = BackupManager(context) - backupManager.dataChanged() + PreferencesUtil.saveDefaultDatabasePath(getApplication().applicationContext, + databaseFile?.databaseUri) }, { checkDefaultDatabase() diff --git a/fastlane/metadata/android/en-US/changelogs/47.txt b/fastlane/metadata/android/en-US/changelogs/47.txt index 0310fcc24..621aa077b 100644 --- a/fastlane/metadata/android/en-US/changelogs/47.txt +++ b/fastlane/metadata/android/en-US/changelogs/47.txt @@ -1 +1,2 @@ - * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 \ No newline at end of file + * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 + * Remove default database parameter when the file is no longer accessible #803 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/47.txt b/fastlane/metadata/android/fr-FR/changelogs/47.txt index 5c7e79bd4..9e784d90f 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/47.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/47.txt @@ -1 +1,2 @@ - * Déverouillage de base de données avec identifiants de l'appareil (PIN/Password/Pattern) #779 #102 \ No newline at end of file + * Déverouillage de base de données avec identifiants de l'appareil (PIN/Password/Pattern) #779 #102 + * Supprimer le parmètre de base de données par défaut quand le fichier n'est plus accessible #803 \ No newline at end of file From 73e7f4669c6101da403b8e55dac733ab903348c8 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 3 Dec 2020 15:45:03 +0100 Subject: [PATCH 068/113] Remove lifecycle observer import --- .../keepass/activities/FileDatabaseSelectActivity.kt | 9 ++++----- .../com/kunzisoft/keepass/activities/PasswordActivity.kt | 5 ++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt index 14ff0c5e2..6a55ac16f 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt @@ -36,7 +36,6 @@ import androidx.activity.viewModels import androidx.annotation.RequiresApi import androidx.appcompat.widget.Toolbar import androidx.coordinatorlayout.widget.CoordinatorLayout -import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.SimpleItemAnimator @@ -162,7 +161,7 @@ class FileDatabaseSelectActivity : SpecialModeActivity(), } // Observe list of databases - databaseFilesViewModel.databaseFilesLoaded.observe(this, Observer { databaseFiles -> + databaseFilesViewModel.databaseFilesLoaded.observe(this) { databaseFiles -> when (databaseFiles.databaseFileAction) { DatabaseFilesViewModel.DatabaseFileAction.NONE -> { mAdapterDatabaseHistory?.replaceAllDatabaseFileHistoryList(databaseFiles.databaseFileList) @@ -186,13 +185,13 @@ class FileDatabaseSelectActivity : SpecialModeActivity(), } } databaseFilesViewModel.consumeAction() - }) + } // Observe default database - databaseFilesViewModel.defaultDatabase.observe(this, Observer { + databaseFilesViewModel.defaultDatabase.observe(this) { // Retrieve settings for default database mAdapterDatabaseHistory?.setDefaultDatabase(it) - }) + } // Attach the dialog thread to this activity mProgressDatabaseTaskProvider = ProgressDatabaseTaskProvider(this).apply { diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt index 3e40e602a..d93b56960 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt @@ -39,7 +39,6 @@ import androidx.annotation.RequiresApi import androidx.appcompat.widget.Toolbar import androidx.biometric.BiometricManager import androidx.core.app.ActivityCompat -import androidx.lifecycle.Observer import com.google.android.material.snackbar.Snackbar import com.kunzisoft.keepass.R import com.kunzisoft.keepass.activities.dialogs.DuplicateUuidDialog @@ -181,7 +180,7 @@ open class PasswordActivity : SpecialModeActivity() { } // Observe database file change - databaseFileViewModel.databaseFileLoaded.observe(this, Observer { databaseFile -> + databaseFileViewModel.databaseFileLoaded.observe(this) { databaseFile -> // Force read only if the file does not exists mForceReadOnly = databaseFile?.let { !it.databaseFileExists @@ -201,7 +200,7 @@ open class PasswordActivity : SpecialModeActivity() { filenameView?.text = databaseFile?.databaseAlias ?: "" onDatabaseFileLoaded(databaseFile?.databaseUri, keyFileUri) - }) + } mProgressDatabaseTaskProvider = ProgressDatabaseTaskProvider(this).apply { onActionFinish = { actionTask, result -> From 8b3831eb2b2b6a8fa5cd6c2f41f777a2593a7bd2 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 3 Dec 2020 23:21:59 +0100 Subject: [PATCH 069/113] Move OTP button to the first view level in Magikeyboard #587 --- CHANGELOG | 1 + .../keepass/magikeyboard/MagikIME.kt | 11 ++++++++- .../com/kunzisoft/keepass/model/EntryInfo.kt | 4 ++-- app/src/main/res/xml/keyboard_password.xml | 8 +++---- .../main/res/xml/keyboard_password_entry.xml | 24 ++++++++++++------- .../metadata/android/en-US/changelogs/47.txt | 3 ++- .../metadata/android/fr-FR/changelogs/47.txt | 3 ++- 7 files changed, 36 insertions(+), 18 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 43547028b..74108b04f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ KeePassDX(2.9.3) * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 * Remove default database parameter when the file is no longer accessible #803 + * Move OTP button to the first view level in Magikeyboard #587 KeePassDX(2.9.2) * Managing OTP links from QR applications #556 diff --git a/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.kt b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.kt index 0af4a798a..6c9a02beb 100644 --- a/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.kt +++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.kt @@ -42,6 +42,7 @@ import com.kunzisoft.keepass.database.element.Database import com.kunzisoft.keepass.model.EntryInfo import com.kunzisoft.keepass.model.Field import com.kunzisoft.keepass.notifications.KeyboardEntryNotificationService +import com.kunzisoft.keepass.otp.OtpEntryFields.OTP_TOKEN_FIELD import com.kunzisoft.keepass.settings.PreferencesUtil import com.kunzisoft.keepass.utils.* @@ -245,6 +246,13 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener { } actionGoAutomatically() } + KEY_OTP -> { + if (entryInfoKey != null) { + currentInputConnection.commitText( + entryInfoKey!!.getGeneratedFieldValue(OTP_TOKEN_FIELD), 1) + } + actionGoAutomatically() + } KEY_URL -> { if (entryInfoKey != null) { currentInputConnection.commitText(entryInfoKey!!.url, 1) @@ -254,7 +262,7 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener { KEY_FIELDS -> { if (entryInfoKey != null) { fieldsAdapter?.apply { - setFields(entryInfoKey!!.customFields) + setFields(entryInfoKey!!.customFields.filter { it.name != OTP_TOKEN_FIELD}) notifyDataSetChanged() } } @@ -326,6 +334,7 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener { private const val KEY_ENTRY = 620 private const val KEY_USERNAME = 500 private const val KEY_PASSWORD = 510 + private const val KEY_OTP = 515 private const val KEY_URL = 520 private const val KEY_FIELDS = 530 diff --git a/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt b/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt index 69c965b2c..29695adab 100644 --- a/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt +++ b/app/src/main/java/com/kunzisoft/keepass/model/EntryInfo.kt @@ -96,8 +96,8 @@ class EntryInfo : Parcelable { } fun getGeneratedFieldValue(label: String): String { - otpModel?.let { - if (label == OTP_TOKEN_FIELD) { + if (label == OTP_TOKEN_FIELD) { + otpModel?.let { return OtpElement(it).token } } diff --git a/app/src/main/res/xml/keyboard_password.xml b/app/src/main/res/xml/keyboard_password.xml index d6c8cfbb7..8701c2b58 100644 --- a/app/src/main/res/xml/keyboard_password.xml +++ b/app/src/main/res/xml/keyboard_password.xml @@ -26,26 +26,26 @@ diff --git a/app/src/main/res/xml/keyboard_password_entry.xml b/app/src/main/res/xml/keyboard_password_entry.xml index 566974b13..dda269a28 100644 --- a/app/src/main/res/xml/keyboard_password_entry.xml +++ b/app/src/main/res/xml/keyboard_password_entry.xml @@ -26,25 +26,31 @@ android:codes="520" android:keyEdgeFlags="left" android:keyIcon="@drawable/ic_link_black_24dp" - android:keyWidth="24%p" + android:keyWidth="15%p" android:horizontalGap="1%p" android:isRepeatable="false"/> + @@ -61,25 +67,25 @@ diff --git a/fastlane/metadata/android/en-US/changelogs/47.txt b/fastlane/metadata/android/en-US/changelogs/47.txt index 621aa077b..203447736 100644 --- a/fastlane/metadata/android/en-US/changelogs/47.txt +++ b/fastlane/metadata/android/en-US/changelogs/47.txt @@ -1,2 +1,3 @@ * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 - * Remove default database parameter when the file is no longer accessible #803 \ No newline at end of file + * Remove default database parameter when the file is no longer accessible #803 + * Move OTP button to the first view level in Magikeyboard #587 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/47.txt b/fastlane/metadata/android/fr-FR/changelogs/47.txt index 9e784d90f..62664c08b 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/47.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/47.txt @@ -1,2 +1,3 @@ * Déverouillage de base de données avec identifiants de l'appareil (PIN/Password/Pattern) #779 #102 - * Supprimer le parmètre de base de données par défaut quand le fichier n'est plus accessible #803 \ No newline at end of file + * Supprimer le parmètre de base de données par défaut quand le fichier n'est plus accessible #803 + * Déplacer le bouton OTP vers le premier niveau de vue dans le Magiclavier #587 \ No newline at end of file From 6a7649e1d7516c1012e6b5ee726ce8d2cfc9cc9e Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 3 Dec 2020 23:56:42 +0100 Subject: [PATCH 070/113] Tooltips for Magikeyboard #586 --- CHANGELOG | 1 + app/src/main/res/values/strings.xml | 5 +++++ app/src/main/res/xml/keyboard_password.xml | 10 ++++++++-- app/src/main/res/xml/keyboard_password_entry.xml | 12 ++++++++++++ fastlane/metadata/android/en-US/changelogs/47.txt | 3 ++- fastlane/metadata/android/fr-FR/changelogs/47.txt | 3 ++- 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 74108b04f..cc80ab03e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ KeePassDX(2.9.3) * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 * Remove default database parameter when the file is no longer accessible #803 * Move OTP button to the first view level in Magikeyboard #587 + * Tooltips for Magikeyboard #586 KeePassDX(2.9.2) * Managing OTP links from QR applications #556 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e66c8f70d..ff5cb8dd8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -411,6 +411,11 @@ Automatically switch back to the previous keyboard after executing \"Auto key action\" Lock database Automatically switch back to the previous keyboard after locking the database + Custom fields + Back to previous keyboard + Select entry + Backspace + Enter Close database Close the database after an autofill selection Auto search diff --git a/app/src/main/res/xml/keyboard_password.xml b/app/src/main/res/xml/keyboard_password.xml index 8701c2b58..50e128b21 100644 --- a/app/src/main/res/xml/keyboard_password.xml +++ b/app/src/main/res/xml/keyboard_password.xml @@ -18,6 +18,8 @@ --> @@ -26,25 +28,29 @@ + android:isRepeatable="false" /> @@ -26,30 +28,35 @@ android:codes="520" android:keyEdgeFlags="left" android:keyIcon="@drawable/ic_link_black_24dp" + android:tooltipText="@string/entry_url" android:keyWidth="15%p" android:horizontalGap="1%p" android:isRepeatable="false"/> Date: Thu, 3 Dec 2020 01:43:44 +0000 Subject: [PATCH 071/113] Translated using Weblate (Greek) Currently translated at 96.0% (467 of 486 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/ --- app/src/main/res/values-el/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index fafe46c7c..150c03e98 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -515,4 +515,10 @@ Λειτουργία αναζήτησης Η αποθήκευση ενός νέου αντικειμένου δεν επιτρέπεται σε μια βάση δεδομένων μόνο για ανάγνωση Το όνομα πεδίου υπάρχει ήδη. + Προηγμένο ξεκλείδωμα αναγνώρισης + Προειδοποίηση: Θα πρέπει να θυμάστε τον κύριο κωδικό πρόσβασης εάν χρησιμοποιείτε προηγμένο ξεκλείδωμα αναγνώρισης. + Ανοίξτε τη βάση δεδομένων με προηγμένο ξεκλείδωμα αναγνώρισης + Ανοίξτε τη προηγμένη προτροπή ξεκλειδώματος για αποθήκευση διαπιστευτηρίων + Ανοίξτε τη προηγμένη προτροπή ξεκλειδώματος για να ξεκλείιδώσετε τη βάση δεδομένων + Διαγραφή προηγμένου κλειδιού ξεκλειδώματος \ No newline at end of file From 52f1a672c882fb794fb66ed2e9cebc4a87fe2bea Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 12:56:36 +0000 Subject: [PATCH 072/113] Translated using Weblate (French) Currently translated at 100.0% (486 of 486 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/ --- app/src/main/res/values-fr/strings.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 084402e30..ff67079b1 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -524,4 +524,20 @@ Mode recherche L’enregistrement d’un nouvel élément n’est pas autorisé dans une base de données en lecture seule Le nom du champ existe déjà. + Supprimer toutes les clés de chiffrement liées à la reconnaissance de déverrouillage avancée \? + Vous permet d\'utiliser les informations d\'identification de votre appareil pour ouvrir la base de données + Déverrouillage par identifiants de l\'appareil + Déverouillage de l\'appareil + Tapez le mot de passe, puis cliquez sur le bouton \"Déverrouillage avancé\". + Impossible d\'initialiser l\'invite de déverrouillage avancé. + Erreur de déverrouillage avancé : %1$s + Impossible de reconnaître l\'empreinte de déverrouillage avancé + Impossible de lire la clé de déverrouillage avancé. Veuillez la supprimer et répéter la procédure de reconnaissance de déverrouillage. + Extraire les identifiants de la base de données avec des données de déverrouillage avancées + Ouvrir la base de données avec la reconnaissance de déverrouillage avancée + Attention : Vous devez toujours vous souvenir de votre mot de passe principal si vous utilisez la reconnaissance de déverrouillage avancée. + Reconnaissance de déverrouillage avancée + Ouvrez l\'invite de déverrouillage avancé pour stocker les informations d\'identification + Ouvrez l\'invite de déverrouillage avancé pour déverrouiller la base de données + Supprimer la clé de déverrouillage avancé \ No newline at end of file From 3075a9f9f431a0dca7b6bf32d5c5a4950247bbae Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Wed, 2 Dec 2020 12:56:55 +0000 Subject: [PATCH 073/113] Translated using Weblate (Japanese) Currently translated at 96.0% (467 of 486 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/ --- app/src/main/res/values-ja/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 80423c594..3dff9a6c1 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -515,4 +515,5 @@ 保存モード 検索モード フィールド名はすでに存在します。 + 高度なロック解除用の鍵を削除 \ No newline at end of file From f25819a940f4f469d23dc29adffe30997b9e4b3e Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Wed, 2 Dec 2020 22:41:31 +0000 Subject: [PATCH 074/113] Translated using Weblate (Ukrainian) Currently translated at 100.0% (486 of 486 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/ --- app/src/main/res/values-uk/strings.xml | 28 ++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index ad1623907..6464bcf39 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -281,7 +281,7 @@ Завантаження %1$s Допомогти Завантажити - Не забудьте постійно оновлювати застосунок, встановлюючи нові версії. + Не забувайте оновлювати застосунок, встановлюючи нові версії. Ми докладаємо всіх зусиль для якнайшвидшого випуску цієї функції. Щиро вдячні за вашу допомогу. ви заохочуєте розробників створювати <strong>нові функції</strong> та <strong>виправляти помилки</strong> відповідно до ваших зауважень. @@ -305,7 +305,7 @@ Змініть режим сеансу. \n \n\"Захист від запису\" запобігає внесенню випадкових змін до бази даних. -\n\"Дозволити зміни\" дозволяє вам додавати, видаляти чи змінювати будь-які елементи. +\n\"Дозволити зміни\" дозволяє додавати, видаляти чи змінювати будь-які елементи. Зберігати базу даних після кожної важливої дії (у режимі \"Дозволити зміни\") Захистіть вашу базу даних від запису Розблокуйте вашу базу даних @@ -394,17 +394,17 @@ Назва файлу Пристрій працює під керуванням Android %1$s, але необхідний %2$s чи пізніші. Не вдалось запустити цю функцію. - Видалити всі ключі шифрування, пов\'язані з розпізнаванням біометричного ключа + Видалити всі ключі шифрування, пов\'язані з розпізнаванням розширеного розблокування Видалити ключі шифрування - Автоматично запитувати біометричний ключ, якщо базу даних налаштовано для роботи з ним - Автоматично запитувати біометричний ключ + Автоматично запитувати розширене розблокування, якщо базу даних налаштовано для роботи з ним + Автозапит ключа Дозволяє сканувати біометричні дані, щоб відкрити базу даних Розблокування біометричним ключем Увімкніть розширені параметри розблокування та спростіть відкриття бази даних Розширені параметри розблокування Показувати кнопку блокування в інтерфейсі користувача Показувати кнопку блокування - Перебуваючи в кореневій частині бази даних, натискання кнопки «Назад» заблокує базу даних + Блокувати базу даних, коли користувач натисне кнопку назад на головному екрані Натисніть \'Назад\', щоб заблокувати Блокувати базу даних, якщо екран вимкнено Блокування екрана @@ -515,4 +515,20 @@ Режим пошуку Збереження нового елемента заборонено в базі даних лише для читання Назва поля вже існує. + Видалити всі ключі шифрування, пов\'язані з розширеним розпізнаванням розблокування\? + Дає змогу використовувати облікові дані пристрою для відкриття бази даних + Розблокування облікових даних пристрою + Облікові дані пристрою + Введіть пароль, а потім натисніть кнопку «Розширене розблокування». + Не вдалося ініціалізувати запит на розширене розблокування. + Помилка розширеного розблокування: %1$s + Не вдалося розпізнати розширене розблокування + Не вдалося розпізнати ключ розширеного розблокування. Видаліть його та повторіть процедуру створення ключа. + Витягування облікових даних бази даних за допомогою даних розширеного розблокування + Відкрити базу даних розширеним розпізнаванням розблокування + Попередження: Навіть якщо ви користуєтеся розширеним розблокуванням, вам однаково необхідно пам\'ятати головний пароль. + Розпізнавання розширеного розблокування + Відкривати запит розширеного розблокування, щоб зберегти облікові дані + Відкривати запит розширеного розблокування, щоб розблокувати базу даних + Видалити ключ розширеного розблокування \ No newline at end of file From f2cb062b1e4dc8c1f79ab88ce436df75f277d568 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 3 Dec 2020 09:21:46 +0000 Subject: [PATCH 075/113] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (486 of 486 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 40 +++++++++++++++------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 3ee5e9ce3..79933f10d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -208,7 +208,7 @@ 数据库描述 数据库版本 文字样式 - 程序 + 界面 其他 键盘 魔法键盘 @@ -243,14 +243,14 @@ 生物识别解锁 通过生物识别解锁数据库 删除加密密钥 - 删除所有与生物识别相关的密钥 + 删除所有与高级解锁识别相关的加密密钥 无法启动此功能。 此设备运行 Android %1$s ,但应用需要 %2$s 或更高版本。 找不到所需的硬件。 分配主密钥 回收站使用情况 删除群组和条目前先移至回收站 - 字段字体 + 字段字型 更改字段字体,可以使字符更清楚 允许复制整段密码和受保护的字段至剪切板 警告:复制密码时密码在剪贴板中,而所有程序都可访问剪切板。因此复制密码时,设备上的其他程序也能看到密码。 @@ -301,10 +301,10 @@ 添加一个新的字段并添加为其添加一个值,此时可以选择是否保护该字段及其值。 解锁数据库 数据库启用写入保护(只读) - 更改会话的打开模式。 -\n -\n“写入保护(只读)”可防止对数据库的意外更改。 -\n“可编辑(可写)”允许您添加、删除或者修改元素。 + 更改此会话的打开模式。 +\n +\n“写入保护(只读)”可防止对数据库的意外更改。 +\n“可编辑”允许您随心所欲地添加、删除或者修改所有元素。 复制字段 已复制的字段可以粘贴到任何地方。 \n @@ -325,11 +325,11 @@ 您的留言,是对开发人员添加<strong>新功能</strong>及<strong>修复 bugs</strong> 的鼓励。 非常感谢您的捐助和贡献。 我们正在努力的研发并尽快发布新特性。 - 别忘了更新程序。 + 别忘了通过安装新版本来保持你的应用程序是最新的。 选择模式 不要终止程序… 按返回键以锁定 - 点击屏幕底部的返回键时锁定数据库 + 当用户单击根屏幕上的返回按钮时锁定数据库 关闭程序时清空剪贴板 剪贴板持续时间过期或通知在您开始使用后关闭时,锁定数据库 回收站 @@ -362,8 +362,8 @@ 无法使用此密码和密钥文件新建数据库。 高级解锁 生物识别 - 自动打开生物识别提示 - 生物识别密钥已配置时自动打开提示 + 自动打开提示 + 自动请求高级解锁,如果数据库设置为使用它 启用 禁用 主密钥 @@ -379,7 +379,7 @@ 一次性密码 错误的一次性密码密钥。 至少需要设置一个凭据。 - 不能将群组复制到这里。 + 这里不能复制组。 密钥必须是BASE32格式。 计数器必须在%1$d和%2$d之间。 时长必须在%1$d秒到%2$d秒之间。 @@ -515,4 +515,20 @@ 搜索模式 只读数据库不允许保存新条目 字段名已经存在。 + 删除所有与高级解锁识别相关的加密密钥吗? + 允许您使用设备凭据来打开数据库 + 设备凭据解锁 + 设备凭据 + 输入密码,然后点击“高级解锁”按钮。 + 无法初始化高级解锁提示。 + 高级解锁出错:%1$s + 无法识别高级解锁印记 + 无法读取高级解锁密钥。请删除它,并重复解锁识别步骤。 + 用高级解锁数据提取数据库凭据 + 用高级解锁识别打开数据库 + 警告:即使您使用高级解锁识别,您仍然需要记住您的主密码。 + 高级解锁识别 + 打开高级解锁提示来存储凭证 + 打开高级解锁提示来解锁数据库 + 删除高级解锁密钥 \ No newline at end of file From ce49aa2ebd7ef401092557a0d1377330a66462b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Wed, 2 Dec 2020 15:59:28 +0000 Subject: [PATCH 076/113] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 70.7% (344 of 486 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nb_NO/ --- app/src/main/res/values-nb/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 18f562846..c8463ebc3 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -419,4 +419,13 @@ Innvilg skrivetilgang for å lagre databaseendringer Skjul ødelagte lenker i listen over nylige databaser Skjul ødelagte databaselenker + Spør om lagring av data + Avansert opplåsningsfeil: + Det anbefales ikke å legge til en tom nøkkelfil. + Legg til filen uansett\? + Registreringsmodus + Lagringsmodus + Søkemodus + Feltnavnet finnes allerede. + Legg til element \ No newline at end of file From 3906df314d525f1103bf981f4dffdef80b3c181e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Wed, 2 Dec 2020 14:59:27 +0000 Subject: [PATCH 077/113] Translated using Weblate (Turkish) Currently translated at 100.0% (486 of 486 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/ --- app/src/main/res/values-tr/strings.xml | 29 ++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index bb0b89b06..e3aeeb64e 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -194,11 +194,11 @@ Kilit Ekran kilidi Ekran kapalıyken veri tabanını kilitle - Parmakizi - Parmak izi tarama + Gelişmiş kilit açma + Biyometrik kilit açma Veri tabanını açmak için biyometriklerinizi taramanızı sağlar Şifreleme anahtarlarını silin - Parmak izi tanıma ile ilgili tüm şifreleme anahtarlarını silin + Gelişmiş kilit açma tanıma ile ilgili tüm şifreleme anahtarlarını silin Bu özellik başlatılamadı. Aygıtta Android %1$s çalışıyor, ancak %2$s veya sonraki bir sürüm gerekli. İlgili donanım bulunamadı. @@ -259,7 +259,7 @@ Girdilerde arayın Parolanızı kurtarmak için başlık, kullanıcı adı veya diğer alanların içeriğini girin. Veri tabanı kilidini biyometrik verilerle açın - Veri tabanınızı hızlıca açmak için parolanızı taranan parmak izinize bağlayın. + Veri tabanınızı hızlıca açmak için parolanızı taranan biyometrik verinize bağlayın. Girdiyi düzenleyin Girdinizi özel alanlarla düzenleyin. Havuz verileri farklı giriş alanları arasında referans alınabilir. Güçlü bir parola oluşturun @@ -343,8 +343,8 @@ Bu parola ve anahtar dosyası ile veri tabanı oluşturulamıyor. Gelişmiş kilit açma Biyometrik - Biyometrik taramayı otomatik aç - Vari tabanı, onu kullanacak biçimde ayarlandıysa biyometriği otomatik olarak sor + Otomatik açma istemi + Vari tabanı onu kullanacak biçimde ayarlandıysa otomatik olarak gelişmiş kilit açma isteğinde bulun Etkinleştir Devre dışı Ana anahtar @@ -498,4 +498,21 @@ Arama modu Salt okunur bir veri tabanında yeni bir öge kaydetmeye izin verilmiyor Alan adı zaten var. + Gelişmiş kilit açma tanıma ile ilgili tüm şifreleme anahtarları silinsin mi\? + Veri tabanını açmak için aygıt kimlik bilgilerinizi kullanmanıza olanak tanır + Aygıt kimlik bilgisiyle kilit açma + Aygıt kimlik bilgileri + Parolayı yazın ve ardından \"Gelişmiş kilit açma\" düğmesine tıklayın. + Gelişmiş kilit açma istemi başlatılamıyor. + Bu veri tabanında henüz saklanmış kimlik bilgisi yok. + Gelişmiş kilit açma hatası: %1$s + Gelişmiş kilit açma parmak izi tanınamadı + Gelişmiş kilit açma anahtarı okunamıyor. Lütfen silin ve kilit açma tanıma işlemini tekrarlayın. + Veri tabanı kimlik bilgilerini gelişmiş kilit açma özelliğiyle çıkarın + Veri tabanını gelişmiş kilit açma tanıma ile aç + Uyarı: Gelişmiş kilit açma tanıma kullanırsanız, yine de ana parolanızı hatırlamanız gerekmektedir. + Gelişmiş kilit açma tanıma + Kimlik bilgilerini saklamak için gelişmiş kilit açma istemini aç + Veri tabanının kilidini açmak için gelişmiş kilit açma istemini aç + Gelişmiş kilit açma anahtarını sil \ No newline at end of file From 0452dd14f6bc062428799ea074e80e3b8d077706 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Wed, 2 Dec 2020 22:48:00 +0000 Subject: [PATCH 078/113] Translated using Weblate (Croatian) Currently translated at 97.9% (476 of 486 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/ --- app/src/main/res/values-hr/strings.xml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index e9231819a..dba69fb15 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -175,7 +175,7 @@ Trajno izbrisati odabrane čvorove\? Verzija %1$s Izgradnja %1$s - Šifrirana lozinka pohranjena + Šifrirana lozinka spremljena Povijest Izgled Opće @@ -195,7 +195,7 @@ Biometrijsko otključavanje Otvaranje baze podataka skeniranjem biometrike Izbriši ključeve šifriranja - Izbriši sve ključeve šifriranja povezane s biometrijskim prepoznavanjem + Izbriši sve ključeve šifriranja povezane s prepoznavanjem naprednog otključavanja Nije moguće pronaći odgovarajući hardver. Ime datoteke Putanja @@ -409,9 +409,9 @@ Istekli unosi se ne pokazuju Zaključaj bazu podataka Otključaj bazu podataka - Automatski traži biometriju, ako je baza podataka tako postavljena + Automatski zatraži napredno otključavanje ako je baza podataka tako postavljena Nije moguće pokrenuti ovu funkciju. - Automatski otvori biometrijsku prijavu + Automatski otvori prozor za prijavu Istek vremena međuspremnika Pretraži unose Kopiraj jedno polje @@ -499,4 +499,15 @@ Modus spremanja Modus pretrage Ime polja već postoji. + Izbrisati sve ključeve šifriranja povezane s prepoznavanjem naprednog otključavanja\? + Upiši lozinku i zatim pritisni gumb „Napredno otključavanje”. + Otvori bazu podataka pomoću prepoznavanja naprednog otključavanja + Upozorenje: Ako koristiš prepoznavanje naprednog otključavanja morat ćeš i dalje znati glavnu lozinku. + Izbriši ključ naprednog otključavanja + Prepoznavanje naprednog otključavanja + Nije moguće pokrenuti prozor naprednog otključavanja. + Greška naprednog otključavanja: %1$s + Izdvoji podatake za prijavu na bazu podataka pomoću podataka naprednog otključavanja + Otvori prozor naprednog otključavanja za spremanje podataka za prijavu + Otvori prozor naprednog otključavanja za otključavanje baze podataka \ No newline at end of file From 08906ae1dadb1c17d604c5ebf8295185796bc35a Mon Sep 17 00:00:00 2001 From: HARADA Hiroyuki Date: Fri, 4 Dec 2020 01:44:51 +0000 Subject: [PATCH 079/113] Translated using Weblate (Japanese) Currently translated at 100.0% (491 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/ --- app/src/main/res/values-ja/strings.xml | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 3dff9a6c1..630a29c71 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -305,10 +305,10 @@ 高度なロック解除を使用して、データベースをより簡単に開きます 生体認証によるロック解除 生体情報をスキャンしてデータベースを開くことができるようにします - 生体認証プロンプトを自動で開く - データベースが生体認証を使用するように設定されている場合、生体情報の取得を自動的に求めます + プロンプトを自動で開く + データベースに設定されている場合、高度なロック解除を自動的に要求します 暗号鍵を削除 - 生体認証に関するすべての暗号鍵を削除します + 高度なロック解除に関するすべての暗号鍵を削除します この機能を起動できませんでした。 デバイスは Android %1$s を実行していますが、%2$s 以降が必要です。 対応するハードウェアが見つかりませんでした。 @@ -516,4 +516,24 @@ 検索モード フィールド名はすでに存在します。 高度なロック解除用の鍵を削除 + 高度なロック解除を使って認証できませんでした + エンター + バックスペース + 前のキーボードに戻る + カスタム フィールド + 高度なロック解除に関する暗号鍵をすべて削除しますか? + デバイス認証情報を使用してデータベースを開くことができるようにします + デバイス認証情報によるロック解除 + デバイス認証情報 + パスワードを入力し、[高度なロック解除] ボタンをタップします。 + 高度なロック解除プロンプトを初期化できません。 + 高度なロック解除のエラー:%1$s + 高度なロック解除用の鍵が読み取れません。削除してロック解除の手順をやり直してください。 + 高度なロック解除を使ってデータベース認証情報を取り出します + 高度なロック解除を使ってデータベースを開く + 警告:高度なロック解除を使用する場合も、マスター パスワードを記憶する必要があります。 + 高度なロック解除の承認 + ログイン プロンプトを開いて、認証情報を保存する + ログイン プロンプトを開いて、ロックを解除する + エントリーを選択 \ No newline at end of file From eb0e5b478f50f758255612fde34bb9b0040585e6 Mon Sep 17 00:00:00 2001 From: HARADA Hiroyuki Date: Fri, 4 Dec 2020 02:45:55 +0000 Subject: [PATCH 080/113] Translated using Weblate (Japanese) Currently translated at 100.0% (491 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/ --- app/src/main/res/values-ja/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 630a29c71..bd9cada7f 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -532,8 +532,8 @@ 高度なロック解除を使ってデータベース認証情報を取り出します 高度なロック解除を使ってデータベースを開く 警告:高度なロック解除を使用する場合も、マスター パスワードを記憶する必要があります。 - 高度なロック解除の承認 - ログイン プロンプトを開いて、認証情報を保存する - ログイン プロンプトを開いて、ロックを解除する + 高度なロック解除の認証 + ログイン プロンプトを開いて認証情報を保存する + ログイン プロンプトを開いてロックを解除する エントリーを選択 \ No newline at end of file From 5b247575c80bc9b788d14f80adddd8fcc38f55eb Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 5 Dec 2020 12:09:07 +0100 Subject: [PATCH 081/113] Fix small bugs #805 --- CHANGELOG | 1 + .../biometric/AdvancedUnlockedManager.kt | 36 ++++++++++++++----- .../metadata/android/en-US/changelogs/47.txt | 3 +- .../metadata/android/fr-FR/changelogs/47.txt | 3 +- 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index cc80ab03e..db0f9f004 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ KeePassDX(2.9.3) * Remove default database parameter when the file is no longer accessible #803 * Move OTP button to the first view level in Magikeyboard #587 * Tooltips for Magikeyboard #586 + * Fix small bugs #805 KeePassDX(2.9.2) * Managing OTP links from QR applications #556 diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index daf882b38..88288988b 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -200,13 +200,35 @@ class AdvancedUnlockedManager(var context: FragmentActivity, advancedUnlockInfoView?.setIconViewClickListener(false, null) } + @Suppress("DEPRECATION") + private fun openBiometricSetting() { + advancedUnlockInfoView?.setIconViewClickListener(false) { + when { + /* + Build.VERSION.SDK_INT >= Build.VERSION_CODES.R -> { + // Need parameters and result parser + context.startActivityForResult(Intent(Settings.ACTION_BIOMETRIC_ENROLL), + ACTION_BIOMETRIC_ENROLL_REQUEST_CODE) + } + Build.VERSION.SDK_INT >= Build.VERSION_CODES.P -> { + // Not working with Xiaomi... (crash after trying to enroll fingerprint + context.startActivityForResult(Intent(Settings.ACTION_FINGERPRINT_ENROLL), + ACTION_FINGERPRINT_ENROLL_REQUEST_CODE) + } + */ + else -> { + // ACTION_SECURITY_SETTINGS do not contains fingerprint enrollment in Xiaomi... + context.startActivity(Intent(Settings.ACTION_SETTINGS)) + } + } + } + } + private fun initSecurityUpdateRequired() { showFingerPrintViews(true) setAdvancedUnlockedTitleView(R.string.biometric_security_update_required) - advancedUnlockInfoView?.setIconViewClickListener(false) { - context.startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS)) - } + openBiometricSetting() } private fun initNotConfigured() { @@ -214,18 +236,14 @@ class AdvancedUnlockedManager(var context: FragmentActivity, setAdvancedUnlockedTitleView(R.string.configure_biometric) setAdvancedUnlockedMessageView("") - advancedUnlockInfoView?.setIconViewClickListener(false) { - context.startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS)) - } + openBiometricSetting() } private fun initKeyManagerNotAvailable() { showFingerPrintViews(true) setAdvancedUnlockedTitleView(R.string.keystore_not_accessible) - advancedUnlockInfoView?.setIconViewClickListener(false) { - context.startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS)) - } + openBiometricSetting() } private fun initWaitData() { diff --git a/fastlane/metadata/android/en-US/changelogs/47.txt b/fastlane/metadata/android/en-US/changelogs/47.txt index 884192f20..8c9cc192c 100644 --- a/fastlane/metadata/android/en-US/changelogs/47.txt +++ b/fastlane/metadata/android/en-US/changelogs/47.txt @@ -1,4 +1,5 @@ * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 * Remove default database parameter when the file is no longer accessible #803 * Move OTP button to the first view level in Magikeyboard #587 - * Tooltips for Magikeyboard #586 \ No newline at end of file + * Tooltips for Magikeyboard #586 + * Fix small bugs #805 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/47.txt b/fastlane/metadata/android/fr-FR/changelogs/47.txt index 498508345..47c62097b 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/47.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/47.txt @@ -1,4 +1,5 @@ * Déverouillage de base de données avec identifiants de l'appareil (PIN/Password/Pattern) #779 #102 * Supprimer le parmètre de base de données par défaut quand le fichier n'est plus accessible #803 * Déplacer le bouton OTP vers le premier niveau de vue dans le Magiclavier #587 - * Info-bulles pour le Magiclavier #586 \ No newline at end of file + * Info-bulles pour le Magiclavier #586 + * Correction petits bugs #805 \ No newline at end of file From b7e855977324d1b6331137e598a27317da70ad4e Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 5 Dec 2020 14:42:45 +0100 Subject: [PATCH 082/113] Remove unused code --- .../biometric/AdvancedUnlockedManager.kt | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index 88288988b..ac983a821 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -203,24 +203,8 @@ class AdvancedUnlockedManager(var context: FragmentActivity, @Suppress("DEPRECATION") private fun openBiometricSetting() { advancedUnlockInfoView?.setIconViewClickListener(false) { - when { - /* - Build.VERSION.SDK_INT >= Build.VERSION_CODES.R -> { - // Need parameters and result parser - context.startActivityForResult(Intent(Settings.ACTION_BIOMETRIC_ENROLL), - ACTION_BIOMETRIC_ENROLL_REQUEST_CODE) - } - Build.VERSION.SDK_INT >= Build.VERSION_CODES.P -> { - // Not working with Xiaomi... (crash after trying to enroll fingerprint - context.startActivityForResult(Intent(Settings.ACTION_FINGERPRINT_ENROLL), - ACTION_FINGERPRINT_ENROLL_REQUEST_CODE) - } - */ - else -> { - // ACTION_SECURITY_SETTINGS do not contains fingerprint enrollment in Xiaomi... - context.startActivity(Intent(Settings.ACTION_SETTINGS)) - } - } + // ACTION_SECURITY_SETTINGS does not contain fingerprint enrollment on some devices... + context.startActivity(Intent(Settings.ACTION_SETTINGS)) } } From 9f23bb612960aed9a813dc0af6e2086e37891e9a Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 5 Dec 2020 15:03:23 +0100 Subject: [PATCH 083/113] Device credential as default unlock method in Android R+ --- .../education/PasswordActivityEducation.kt | 4 ++-- app/src/main/res/values-ar/strings.xml | 3 +-- app/src/main/res/values-cs/strings.xml | 2 -- app/src/main/res/values-da/strings.xml | 2 -- app/src/main/res/values-de/strings.xml | 2 -- app/src/main/res/values-el/strings.xml | 2 -- app/src/main/res/values-es/strings.xml | 2 -- app/src/main/res/values-fr/strings.xml | 2 -- app/src/main/res/values-hr/strings.xml | 3 +-- app/src/main/res/values-hu/strings.xml | 2 -- app/src/main/res/values-it/strings.xml | 2 -- app/src/main/res/values-ja/strings.xml | 2 -- app/src/main/res/values-ml/strings.xml | 1 - app/src/main/res/values-nb/strings.xml | 2 -- app/src/main/res/values-nl/strings.xml | 2 -- app/src/main/res/values-pa/strings.xml | 2 -- app/src/main/res/values-pl/strings.xml | 2 -- app/src/main/res/values-pt-rBR/strings.xml | 2 -- app/src/main/res/values-pt-rPT/strings.xml | 2 -- app/src/main/res/values-pt/strings.xml | 3 +-- app/src/main/res/values-ro/strings.xml | 2 -- app/src/main/res/values-ru/strings.xml | 2 -- app/src/main/res/values-sv/strings.xml | 2 -- app/src/main/res/values-tr/strings.xml | 2 -- app/src/main/res/values-uk/strings.xml | 2 -- .../main/res/values-v30/donottranslate.xml | 23 +++++++++++++++++++ app/src/main/res/values-zh-rCN/strings.xml | 2 -- app/src/main/res/values/strings.xml | 4 ++-- 28 files changed, 30 insertions(+), 53 deletions(-) create mode 100644 app/src/main/res/values-v30/donottranslate.xml diff --git a/app/src/main/java/com/kunzisoft/keepass/education/PasswordActivityEducation.kt b/app/src/main/java/com/kunzisoft/keepass/education/PasswordActivityEducation.kt index e74303fbf..d3d3a044e 100644 --- a/app/src/main/java/com/kunzisoft/keepass/education/PasswordActivityEducation.kt +++ b/app/src/main/java/com/kunzisoft/keepass/education/PasswordActivityEducation.kt @@ -86,8 +86,8 @@ class PasswordActivityEducation(activity: Activity) onOuterViewClick: ((TapTargetView?) -> Unit)? = null): Boolean { return checkAndPerformedEducation(!isEducationBiometricPerformed(activity), TapTarget.forView(educationView, - activity.getString(R.string.education_biometric_title), - activity.getString(R.string.education_biometric_summary)) + activity.getString(R.string.education_advanced_unlock_title), + activity.getString(R.string.education_advanced_unlock_summary)) .textColorInt(Color.WHITE) .tintTarget(false) .cancelable(true), diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index ade6ba531..20e24bea0 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -103,7 +103,6 @@ هل أنت متأكد من أنك لا تريد استخدام أي مفتاح تشفير ؟ الإصدار %1$s أضف عناصر جديدة إلى قاعدتك - قم بفتح قاعدة بياناتك ببصمتك إضافة حقول مخصصة نسخ حقل تأمين قاعدة البيانات @@ -351,7 +350,7 @@ قاعدة البيانات مفتوحة إعدادات الملء التلقائي حرر المدخلة - لفتح قاعدة البيانات بسرعة اربط كلمة المرور بالبصمة. + لفتح قاعدة البيانات بسرعة اربط كلمة المرور بالبصمة. لإيجاد كلمة المرور، أدخل العنوان أو اسم المستخدم أو محتوى أحد الحقول. المدخلات لإدارة معرفاتك الرقمية. \n diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 4ef5f355e..0e9696fbb 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -259,8 +259,6 @@ \nSkupiny (ekvivalent složek) organizují záznamy v databázi. Hledejte v položkách Zadejte název, uživatelské jméno nebo jiné položky k nalezení svých hesel. - Odemknutí databáze biometricky - Propojte své heslo s načtenou biometrikou pro rychlé odemknutí databáze. Upravit položku Přidejte ke své položce vlastní kolonky. Společná data mohou být sdílena mezi více různými kolonkami. Vytvořit silné heslo diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 2260a6f44..826cc66d1 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -258,8 +258,6 @@ \nGrupper (~mapper) organiserer poster i databasen. Søg i poster Indtast titel, brugernavn eller indhold af andre felter for at hente adgangskoder. - Biometrisk oplåsning af databasen - Knyt adgangskoden til det scannede biometri for hurtigt at låse databasen op. Rediger posten Rediger post med brugerdefinerede felter. Pool data kan refereres mellem forskellige indtastningsfelter. Opret en stærk adgangskode diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 499a0326d..31a8549cc 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -249,8 +249,6 @@ \nGruppen (wie Ordner) helfen, Einträge in der Datenbank zu ordnen. Einträge durchsuchen Titel, Benutzernamen oder Inhalte anderer Feldern eingeben, um die Passwörter wiederzufinden. - Biometrische Datenbank-Entsperrung - Verknüpft Ihr Passwort mit Ihrer gescannten Biometrie, um Ihre Datenbank schnell zu entsperren. Eintrag bearbeiten Bearbeiten Sie Ihren Eintrag mit persönlichen Feldern. Persönliche Felder können mit Querverweisen aus anderen Einträgen ergänzt werden. Ein starkes Passwort erstellen diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index fafe46c7c..7e6b3cf62 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -407,8 +407,6 @@ Gzip Ενεργοποιώντας ένα προσαρμοσμένο πληκτρολόγιο συγκεντρώνει τους κωδικούς πρόσβασής σας και όλα τα πεδία ταυτότητας Ρυθμίσεις πληκτρολογίου συσκευής - Βιομετρικό ξεκλείδωμα βάσης δεδομένων - Συνδέστε τον κωδικό πρόσβασής σας στο σαρωμένο βιομετρικό σας για να ξεκλειδώσετε γρήγορα τη βάση δεδομένων σας. Δεν ήταν δυνατή η αποθήκευση της βάσης δεδομένων. Αποθήκευση βάσης δεδομένων Αδειάστε τον κάδο ανακύκλωσης diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 71fd512da..c8af0e177 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -241,8 +241,6 @@ \nLos grupos (~carpetas) organizan las entradas en su base de datos. Busque registros fácilmente Busque entradas por título, nombre de usuario u otros campos para recuperar fácilmente sus contraseñas. - Desbloquee su base de datos con su huella digital - Vincule la contraseña a su escaneo biométrico para desbloquear rápidamente la base de datos. Editar la entrada Edite la entrada con campos personalizados, puede agregar referencias a los datos de la agrupación entre campos de diferentes entradas. Crear una contraseña segura diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 084402e30..ab19d17c1 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -225,8 +225,6 @@ \nLes groupes (≈dossiers) organisent les entrées dans votre base de données. Rechercher dans les entrées Saisir le titre, le nom d’utilisateur ou le contenu des autres champs pour récupérer vos mots de passe. - Déverrouillage biométrique de la base de données - Associe votre mot de passe à votre empreinte biométrique numérisée pour déverrouiller rapidement votre base de données. Modifier l’entrée Modifie votre entrée avec des champs personnalisés. La collection des données peut être référencée entre différents champs de l’entrée. Créer un mot de passe fort diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index e9231819a..2fb59dc4d 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -366,7 +366,6 @@ Istek vremena za brisanje unosa tipkovnicom Zaštiti bazu podataka od pisanja Popis blokiranja web domena - Biometrijsko otključavanje baze podataka AES Doprinos Ova oznaka već postoji. @@ -398,7 +397,7 @@ Argon2 Twofish Prikaži mjesto nedavnih baza podataka - Za brzo otključavanje baze podataka, poveži lozinku sa skeniranom biometrijom. + Za brzo otključavanje baze podataka, poveži lozinku sa skeniranom biometrijom. Kako bismo zadržali našu slobodu i uvijek bili aktivni, računamo na tvoj<strong>doprinos.</strong> Za stvaranje ključa za algoritam šifriranja, glavni ključ se transformira pomoću funkcije za generiranje ključeva koja sadrži slučajnu komponentu. Zaključaj bazu podataka kad korisnik pritisne gumb za natrag na ekranu diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 005cb1736..35eff66f8 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -280,8 +280,6 @@ \nA csoportok (~mappák) rendszerezik a bejegyzéseket az adatbázisban. Keresés a bejegyzések között Adja meg a címet, felhasználónevet vagy más mezők tartalmát, hogy lekérje a jelszavát. - Adatbázis feloldása ujjlenyomattal - Kösse össze a jelszavát a mentett ujjlenyomatával, hogy gyorsan fel tudja oldani az adatbázist. Bejegyzés szerkesztése Erős jelszó létrehozása Állítson elő egy erős jelszót, és rendelje hozzá a bejegyzéshez, adja meg egyszerűen az űrlap feltételeinek megfelelően, és ne felejtse el biztonságosan tárolni. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c5537dc8b..e192b80da 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -255,8 +255,6 @@ \nI gruppi (come cartelle) organizzano gli elementi nella base di dati. Cerca tra gli elementi Inserisci il titolo, il nome utente o il contenuto di altri campi per recuperare le tue password. - Sblocco della base di dati tramite impronta digitale - Collega la password alla tua impronta digitale per sbloccare velocemente la base di dati. Modifica l\'elemento Modifica l\'elemento con campi personalizzati. I dati possono fare riferimento ad altri campi. Crea una password robusta diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 80423c594..749bd9999 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -427,8 +427,6 @@ エントリーはデジタル ID の管理に役立ちます。\n\nグループ(≒フォルダ)はデータベース内のエントリーを整理します。 エントリーを検索 パスワードを取得するには、タイトル、ユーザー名、または他のフィールドの内容を入力します。 - 生体認証によるロック解除 - スキャンした生体情報にパスワードをリンクして、データベースのロックをすばやく解除します。 エントリーを編集 エントリーをカスタム フィールドとともに編集します。共有データは異なるエントリーのフィールド間で参照することができます。 強力なパスワードを作成 diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index ba7ea9c8d..0722cdd56 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -369,7 +369,6 @@ അറിയിപ്പ് വിവരം എൻ‌ട്രികളും ഗ്രൂപ്പുകളും എങ്ങനെ അടുക്കുന്നുവെന്ന് തിരഞ്ഞെടുക്കുക. ഇനം തരംതിരിക്കൽ - ബയോമെട്രിക് ഡാറ്റാബേസ് അൺലോക്കുചെയ്യൽ ടൈം ഔട്ട് ഫീൽഡിന്റെ ഫോണ്ട് ഡാറ്റ diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 18f562846..1c4a7d6e7 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -240,8 +240,6 @@ \nLegg til grupper (tilsvarende mapper) for å organisere dine oppføringer og databasen din. Søk i dine oppføringer Søk etter oppføringer etter tittel, brukernavn eller andre felter for å hente passordene dine. - Lås opp databasen din med fingeravtrykket ditt - Lenk passordet og fingeravtrykket ditt for å låse opp databasen din enkelt. Rediger oppføringen Rediger din oppføring med egendefinerte felter, referanser til pooldata kan legges til mellom felter av forskjellige oppføringer. Opprett et sterkt passord diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index ecf550dfa..51742bf94 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -265,8 +265,6 @@ \nGroepen (~mappen) organiseren de items in je database. Doorzoek al je items Doorzoek items op titel, gebruikersnaam of andere velden om wachtwoorden te vinden. - Biometrische database -ontgrendeling - Koppel je wachtwoord aan je biometrie om de database snel te ontgrendelen. Item bewerken Bewerk het item met aangepaste velden. Referenties kunnen worden toegevoegd tussen velden van verschillende items. Genereer een sterk wachtwoord diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 753acdf16..6c9197cfe 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -338,8 +338,6 @@ ਡਾਟਾਬੇਸ ਬੰਦ ਕਰੋ ਲਿਖਣ ਤੋਂ ਸੁਰੱਖਿਅਤ ਐਂਟਰੀਆਂ ਵਿੱਚੋਂ ਲੱਭੋ - ਬਾਇਓਮੈਟਰਿਕ ਡਾਟਾਬੇਸ ਅਣ-ਲਾਕ ਕਰੋ - ਤੁਹਾਡੇ ਡਾਟਾਬੇਸ ਨੂੰ ਫ਼ੌਰੀ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਆਪਣੇ ਪਾਸਵਰਡ ਨੂੰ ਆਪਣੇ ਸਕੈਨ ਕੀਤੇ ਬਾਇਮੈਟਰਿਕ ਨਾਲ ਲਿੰਕ ਕਰੋ। ਐਂਟਰੀ ਨੂੰ ਸੋਧੋ ਅਟੈਚਮੈਂਟ ਜੋੜੋ ਖ਼ਾਸ ਬਾਹਰੀ ਡਾਟਾ ਸੰਭਾਲਣ ਲਈ ਤੁਹਾਡੀ ਐਂਟਰੀ ਲਈ ਅਟੈਚਮੈਂਟ ਅੱਪਲੋਡ ਕਰੋ। diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 348eb4b72..179793068 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -261,8 +261,6 @@ \nGrupy (~ foldery) organizują wpisy w bazie danych. Przeszukuj wpisy Wprowadź tytuł, nazwę użytkownika lub zawartość innych pól, aby odzyskać swoje hasła. - Biometryczne odblokowanie bazy danych - Połącz swoje hasło z zeskanowanym odciskiem palca, aby szybko odblokować bazę danych. Edytuj wpis Edytuj swój wpis za pomocą pól niestandardowych. Dane puli mogą być przywoływane między różnymi polami wprowadzania. Utwórz silne hasło diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 88d79de82..215176357 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -257,8 +257,6 @@ \nGrupos (~pastas) organizam suas entradas e sua base de dados. Pesquise suas entradas Entre com título, nome de usuário ou outros campos para recuperar facilmente suas senhas. - Desbloqueio do banco de dados por Impressão digital - Faça o link entre sua senha e sua impressão digital para rapidamente desbloquear seu banco de dados. Modifique a entrada Edite a sua entrada com campos personalizados. Os conjuntos de dados podem ser referenciados entre campos de entradas diferentes. Criar uma senha forte diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 755b4b519..09125876d 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -247,8 +247,6 @@ \nGrupos (~pastas) organizam as suas entradas na sua base de dados. Pesquise suas entradas Entre com título, nome de utilizador ou outros campos para recuperar facilmente as suas palavras-passe. - Desbloqueio da base de dados por biométricos - Ligue a sua palavra-passe e o seu biométrico gravado para rapidamente desbloquear a sua base de dados. Modifique a entrada Edite a sua entrada com campos personalizados. Os conjuntos de dados podem ser referenciados entre campos de entradas diferentes. Crie uma palavra-passe forte diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index b19ab708d..ed332033a 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -194,7 +194,6 @@ Configurar OTP Envie um anexo à sua entrada para gravar dados externos importantes. Adicionar anexo - Desbloqueio da base de dados por biométricos Permite tocar no botão \"Abrir\" se nenhumas credenciais estiverem selecionadas Remove anexos contidos na base de dados, mas não ligados a uma entrada Remover dados não ligados @@ -290,7 +289,7 @@ Esvaziar cesto da reciclagem Gravar base de dados Não foi possível gravar a base de dados. - Ligue a sua palavra-passe e o seu biométrico gravado para rapidamente desbloquear a sua base de dados. + Ligue a sua palavra-passe e o seu biométrico gravado para rapidamente desbloquear a sua base de dados. Configurações do teclado do aparelho Ative um teclado customizado, populando suas palavras-passe e todos os campos de identidade Gzip diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 2dafdff4d..f90f90eee 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -359,8 +359,6 @@ \nGrupuri (~ foldere) organizează intrări în baza de date. Căutați prin intrări Introduceți titlul, numele de utilizator sau conținutul altor câmpuri pentru a prelua parolele. - Deblocarea bazei de date prin biometric - Conectați parola la biometrica scanată pentru a debloca rapid baza de date. Modificați intrarea Modificați-vă înregistrarea cu câmpuri personalizate. Datele despre pool pot fi referențiate între diferite câmpuri de intrare. Creați o parolă puternică pentru intrarea dvs. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 68a4d387c..2ec54e8bc 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -260,8 +260,6 @@ \n \nДобавляйте группы (аналог папок) для организации записей и баз. Легко находите ваши записи - Биометрическая разблокировка базы - Установите взаимосвязь между паролем и биометрическим ключом для быстрой разблокировки базы. Ищите записи по названию, имени или другим полям для быстрого доступа к своим паролям. Редактируйте записи Редактируйте записи с настраиваемыми полями. Возможны перекрёстные ссылки между полями разных записей. diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index ef278761d..625fc1ee2 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -407,8 +407,6 @@ Gzip Aktivera ett anpassat tangentbord som innehåller dina lösenord och alla identitetsfält Enhetens tangentbordsinställningar - Lås upp databasen med biometrik - Länka dina lösenord till din skannande biometrik för att snabbt låsa upp din databas. Kunde inte spara databas. Spara databas Töm papperskorgen diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index bb0b89b06..c10641ef8 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -258,8 +258,6 @@ \nGruplar (~klasörler) veri tabanınızdaki girdileri düzenler. Girdilerde arayın Parolanızı kurtarmak için başlık, kullanıcı adı veya diğer alanların içeriğini girin. - Veri tabanı kilidini biyometrik verilerle açın - Veri tabanınızı hızlıca açmak için parolanızı taranan parmak izinize bağlayın. Girdiyi düzenleyin Girdinizi özel alanlarla düzenleyin. Havuz verileri farklı giriş alanları arasında referans alınabilir. Güçlü bir parola oluşturun diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index ad1623907..5ade58037 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -317,8 +317,6 @@ Створіть надійний пароль Додавайте власні поля до записів. Дані полів різних записів можна повʼязувати між собою. Змінюйте записи - Зв\'яжіть пароль та скановані біометричні дані для швидкого розблокування бази даних. - Біометричне розблокування бази даних Введіть назву, ім\'я користувача або вміст інших полів для пошуку паролів. Шукайте поміж записів Створюйте записи для керування вашими обліковими записами. diff --git a/app/src/main/res/values-v30/donottranslate.xml b/app/src/main/res/values-v30/donottranslate.xml new file mode 100644 index 000000000..db90c98ab --- /dev/null +++ b/app/src/main/res/values-v30/donottranslate.xml @@ -0,0 +1,23 @@ + + + + false + true + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 3ee5e9ce3..9d865c98d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -291,8 +291,6 @@ \n还可以使用群组来管理数据库中的条目。 搜索条目 输入标题、用户名或其他字段的内容来搜索密码。 - 正在解锁生物识别数据库 - 将主密钥与生物识别信息关联,以快速解锁数据库。 编辑此条目 使用自定义字段编辑条。自定义字段可以在不同的条目间引用。 新建一个强密码 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ff5cb8dd8..7a474b00e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -452,8 +452,8 @@ Entries help manage your digital identities.\n\nGroups (~folders) organize entries in your database. Search through entries Enter title, username or content of other fields to retrieve your passwords. - Biometric database unlocking - Link your password to your scanned biometric to quickly unlock your database. + Advanced database unlocking + Link your password to your scanned biometric or device credential to quickly unlock your database. Edit the entry Edit your entry with custom fields. Pool data can be referenced between different entry fields. Create a strong password From 96a007aace547aebae4f1ff6ff8549043ad331d9 Mon Sep 17 00:00:00 2001 From: zeritti Date: Sat, 5 Dec 2020 11:55:43 +0000 Subject: [PATCH 084/113] Translated using Weblate (Czech) Currently translated at 100.0% (491 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/ --- app/src/main/res/values-cs/strings.xml | 41 +++++++++++++++++++------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 4ef5f355e..cefc9e87b 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -69,7 +69,7 @@ Zadaná hesla se neshodují. Příliš vysoký „Počet průchodů“. Nastavuji na 2147483648. Je třeba, aby každý řetězec měl název kolonky. - Do nastavení „Délka“ zadejte celé kladné číslo. + Do pole „Délka“ zadejte celé kladné číslo. Název pole Hodnota pole Správce souborů @@ -216,7 +216,7 @@ Biometrické odemčení Nechá otevřít databázi snímáním biometrického údaje Smazat šifrovací klíče - Smazat všechny šifrovací klíče související s biometrickým rozlišením + Smazat všechny šifrovací klíče související s rozpoznáním pokročilého odemknutí Tuto funkci se nedaří spustit. V zařízení je instalován Android %1$s, ale potřebná je verze %2$s a novější. Hardware nebyl rozpoznán. @@ -235,7 +235,7 @@ Popis databáze Verze databáze Text - Aplikace + Rozhraní Ostatní Klávesnice Magikeyboard @@ -269,10 +269,10 @@ Registrovat další kolonku, zadat hodnotu a volitelně ji ochránit. Odemknout databázi Ochraňte svou databázi před zápisem - Změnit režim otevírání pro dané sezení. -\n -\nV režimu pouze pro čtení zabráníte nechtěným změnám do databáze. -\n V režimu zápisu je možné přidávat, mazat nebo měnit všechny prvky dle libosti. + Změnit režim otevírání pro dané sezení. +\n +\nV režimu \"pouze pro čtení\" zabráníte nechtěným změnám do databáze. +\nV režimu \"zápisu\" je možné přidávat, mazat nebo měnit všechny prvky podle libosti. Zkopírujte kolonku Zkopírované kolonky lze vkládat kam chcete \n @@ -293,7 +293,7 @@ povzbudíte vývojáře k přidávání <strong>nových funkcí</strong> a <strong>opravování chyb</strong> dle vašich připomínek. Mnohé díky za vaše přispění. Tvrdě pracujeme na brzkém vydání této funkce. - Nezapomeňte aplikaci aktualizovat instalováním nových verzí. + Pamatujte na aktualizaci aplikace instalováním nových verzí. Stáhnout Zapojit se ChaCha20 @@ -358,8 +358,8 @@ Nelze vytvořit databázi s tímto heslem a klíčem ze souboru. Pokročilé odemčení Biometrika - Automaticky otevřít biometrickou pobídku - Automaticky žádat biometriku, je-li databáze nastavena k jejímu použití + Automaticky otevřít pobídku + Automaticky žádat pokročilé odemknutí, je-li databáze nastavena k jejímu použití Zapnout Vypnout Hlavní klíč @@ -516,4 +516,25 @@ Režim vyhledávání Jméno položky již existuje. Uložení nové položky v režimu databáze pouze pro čtení není povoleno + Enter + Backspace + Vybrat záznam + Zpět na předchozí klávesnici + Vlastní položky + Smazat všechny šifrovací klíče související s rozpoznáním pokročilého odemknutí\? + Dovolí pro otevření databáze použít heslo Vašeho zařízení + Odemknutí heslem zařízení + Heslo zařízení + Zadejte heslo a klikněte na tlačítko \"Pokročilé odemknutí\". + Nelze inicializovat pobídku pro pokročilé odemknutí. + Chyba při pokročilém odemknutí: %1$s + Otisk pro pokročilé odemknutí nebyl rozpoznán + Nelze načíst klíč pokročilého odemknutí. Prosím, smažte jej a opakujte proces rozpoznání uzamknutí. + Načíst důvěrný údaj pomocí dat pokročilého odemknutí + Otevřít databázi pomocí rozpoznání pokročilého odemknutí + Varování: Pokud použijete rozpoznání pokročilého odemknutí, musíte si i nadále pamatovat hlavní heslo. + Rozpoznání pokročilého odemknutí + Pro uložení důvěrných údajů otevřete pobídku pokročilého odemknutí + Pro odemknutí databáze otevřete pobídku pokročilého odemknutí + Smazat klíč pokročilého odemknutí \ No newline at end of file From 1e01a74986d37712fc09981d56157ff675574f76 Mon Sep 17 00:00:00 2001 From: Retrial Date: Fri, 4 Dec 2020 23:56:50 +0000 Subject: [PATCH 085/113] Translated using Weblate (Greek) Currently translated at 100.0% (491 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/ --- app/src/main/res/values-el/strings.xml | 29 +++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 150c03e98..3a474ac79 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -213,7 +213,7 @@ Περιγραφή Βάσης Δεδομένων Έκδοση Βάσης Δεδομένων Κείμενο - Εφαρμογή + Διεπαφή Άλλα Πληκτρολόγιο Magikeyboard @@ -257,7 +257,7 @@ ενθαρρύνετε τους προγραμματιστές να δημιουργούν <strong>νέες λειτουργίες</strong> και να <strong>διορθώνουν σφάλματα</strong> σύμφωνα με τις παρατηρήσεις σας. Ευχαριστούμε πολύ για τη συνεισφορά σας. Εργαζόμαστε σκληρά για να διαθέσουμε αυτό το χαρακτηριστικό γρήγορα. - Μην ξεχνάτε να ενημερώνετε την εφαρμογή σας, εγκαθιστώντας νέες εκδόσεις. + Θυμηθείτε να ενημερώνετε την εφαρμογή σας, εγκαθιστώντας νέες εκδόσεις. Download Συνεισφορά ChaCha20 @@ -286,7 +286,7 @@ Αλλάξτε τη λειτουργία ανοίγματος για το session. \n \nΤο \"Προστατευμένο από εγγραφή\" αποτρέπει τυχόν μη επιθυμητές αλλαγές στη βάση δεδομένων. -\nΤο \"Τροποποιητικό\" σάς επιτρέπει να προσθέσετε, να διαγράψετε ή να τροποποιήσετε όλα τα στοιχεία. +\nΤο \"Τροποποιητικό\" σάς επιτρέπει να προσθέσετε, να διαγράψετε ή να τροποποιήσετε όλα τα στοιχεία όπως επιθυμείτε. Επεξεργασία καταχώρησης Δεν ήταν δυνατή η φόρτωση της βάσης δεδομένων σας. Δεν ήταν δυνατή η φόρτωση του κλειδιού. Προσπαθήστε να μειώσετε την KDF \"Χρήση μνήμης\". @@ -315,7 +315,7 @@ Λειτουργία επιλογής Μη κλείσιμο της εφαρμογής … Πατήστε \'Πίσω\' για να κλειδώσετε - Κλείδωμα της βάσης δεδομένων όταν ο χρήστης κάνει κλικ στο κουμπί \"πίσω\" στη αρχική οθόνη + Κλείδωμα της βάσης δεδομένων όταν ο χρήστης κάνει κλικ στο κουμπί \"πίσω\" στην οθόνη προέλευσης Καθαρισμός στο κλείσιμο Κλείδωμα της βάσης δεδομένων όταν λήξει η διάρκεια του προχείρου ή η ειδοποίηση κλείσει αφού αρχίσετε να την χρησιμοποιείτε Κάδος ανακύκλωσης @@ -353,10 +353,10 @@ Προηγμένο ξεκλείδωμα Βιομετρικό ξεκλείδωμα Σας επιτρέπει να σαρώσετε το βιομετρικό σας για να ανοίξετε τη βάση δεδομένων - Αυτόματο άνοιγμα βιομετρικής προτροπής - Ζητήστε αυτόματα βιομετρία εάν η βάση δεδομένων έχει ρυθμιστεί για να τη χρησιμοποιήσει + Αυτόματο άνοιγμα προτροπής + Ζητήστε αυτόματα προηγμένο ξεκλείδωμα εάν η βάση δεδομένων έχει ρυθμιστεί για να το χρησιμοποιήσει Διαγράψτε τα κλειδιά κρυπτογράφησης - Διαγράψτε όλα τα κλειδιά κρυπτογράφησης που σχετίζονται με τη βιομετρική αναγνώριση + Διαγράψτε όλα τα κλειδιά κρυπτογράφησης που σχετίζονται με το προηγμένο ξεκλείδωμα Ενεργοποίηση Απενεργοποίηση Κύριο κλειδί @@ -521,4 +521,19 @@ Ανοίξτε τη προηγμένη προτροπή ξεκλειδώματος για αποθήκευση διαπιστευτηρίων Ανοίξτε τη προηγμένη προτροπή ξεκλειδώματος για να ξεκλείιδώσετε τη βάση δεδομένων Διαγραφή προηγμένου κλειδιού ξεκλειδώματος + Enter + Backspace + Επιλέξτε καταχώριση + Επιστροφή στο προηγούμενο πληκτρολόγιο + Προσαρμοσμένα πεδία + Διαγραφή όλων των κλειδιών κρυπτογράφησης που σχετίζονται με το προηγμένο ξεκλείδωμα αναγνώρισης; + Σας επιτρέπει να χρησιμοποιήσετε τα διαπιστευτήρια της συσκευής σας για να ανοίξετε τη βάση δεδομένων + Ξεκλείδωμα διαπιστευτηρίων συσκευής + Διαπιστευτήρια συσκευής + Πληκτρολογήστε τον κωδικό πρόσβασης, και στη συνέχεια κάντε κλικ στο κουμπί \"Προηγμένο ξεκλείδωμα\". + Δεν είναι δυνατή η προετοιμασία προτροπής προηγμένου ξεκλειδώματος. + Δεν ήταν δυνατή η αναγνώριση αποτυπώματος προηγμένου ξεκλειδώματος + Προηγμένο ξεκλείδωμα σφάλμα: %1$s + Δεν είναι δυνατή η ανάγνωση του προηγμένου κλειδιού ξεκλειδώματος. Διαγράψτε το και επαναλάβετε τη διαδικασία αναγνώρισης ξεκλειδώματος. + Εξαγωγή διαπιστευτηρίων βάσης δεδομένων με προηγμένο ξεκλείδωμα δεδομένων \ No newline at end of file From d41ddf60b414a58b2e2c1eb9775a13233f21d4cb Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Thu, 3 Dec 2020 23:03:36 +0000 Subject: [PATCH 086/113] Translated using Weblate (French) Currently translated at 100.0% (491 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/ --- app/src/main/res/values-fr/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index ff67079b1..34b7cdc7f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -540,4 +540,9 @@ Ouvrez l\'invite de déverrouillage avancé pour stocker les informations d\'identification Ouvrez l\'invite de déverrouillage avancé pour déverrouiller la base de données Supprimer la clé de déverrouillage avancé + Entrer + Retour arrière + Sélection d\'une entrée + Retour au clavier précédent + Champs customisés \ No newline at end of file From e909280d5be1bdda2b77d6f7631c56414c3413d8 Mon Sep 17 00:00:00 2001 From: WaldiS Date: Sat, 5 Dec 2020 13:24:46 +0000 Subject: [PATCH 087/113] Translated using Weblate (Polish) Currently translated at 98.7% (485 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/ --- app/src/main/res/values-pl/strings.xml | 34 +++++++++++++++++++------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 348eb4b72..e1b442bff 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -218,7 +218,7 @@ Skanowanie odcisków palców Umożliwia zeskanowanie danych biometrycznych w celu otwarcia bazy danych Usuń klucze szyfrowania - Usuń wszystkie klucze szyfrowania związane z rozpoznawaniem linii papilarnych + Usuń wszystkie klucze szyfrujące związane z zaawansowanym rozpoznawaniem odblokowania Nie można uruchomić tej funkcji. Urządzenie pracuje na systemie Android %1$s, ale wymaga wersji %2$s lub nowszej. Nie można znaleźć odpowiedniego sprzętu. @@ -228,7 +228,7 @@ Utwórz nową bazę danych Wykorzystaj kosz Przenosi grupy i wpisy do grupy \"Kosz\" przed usunięciem - Pole czcionka + Krój pisma pola Zmień czcionkę użytą w polach, aby poprawić widoczność postaci Zaufanie do schowka Zezwalanie na kopiowanie hasła wejściowego i chronionych pól do schowka @@ -237,7 +237,7 @@ Opis bazy danych Wersja bazy danych Tekst - Aplikacja + Wygląd Inne Klawiatura Magikeyboard @@ -273,8 +273,8 @@ Zapisz ochronę swojej bazy danych Zmień tryb otwierania sesji. \n -\n„Zabezpieczony przed zapisem” zapobiega niezamierzonym zmianom w bazie danych. -\n„Modyfikowalne” pozwala dodawać, usuwać lub modyfikować wszystkie elementy. +\n\"Ochrona przed zapisem\" zapobiega niezamierzonych zmian w bazie danych. +\n\"Modyfikowalne\" pozwala dodawać, usuwać lub modyfikować wszystkie elementy, jak chcesz. Skopiuj pole Skopiowane pola można wkleić w dowolnym miejscu. \n @@ -295,7 +295,7 @@ zachęcasz programistów do tworzenia <strong>nowych funkcji</strong> i <strong>naprawy błędów</strong> zgodnie z Twoimi uwagami. Wielkie dzięki za twój wkład. Ciężko pracujemy, aby szybko udostępnić tę funkcję. - Nie zapomnij o aktualizacji aplikacji, instalując nowe wersje. + Pamiętaj, aby aktualizować swoją aplikację, instalując nowe wersje. Pobieranie Przyczyń się ChaCha20 @@ -359,10 +359,10 @@ Nie można utworzyć bazy danych przy użyciu tego hasła i pliku klucza. Zaawansowane odblokowywanie Biometryczne - Automatyczne otwieranie monitu biometrycznego + Automatyczne otwieranie Włącz Wyłącz - Automatycznie pytaj o dane biometryczne, jeśli baza danych jest ustawiona do korzystania z nich + Automatyczne żądanie zaawansowanego odblokowania, jeśli baza danych jest skonfigurowana do korzystania z niej Węzły podrzędne Klucz główny Zabezpieczenia @@ -375,7 +375,7 @@ Cyfry Algorytm OTP - Nie można tutaj skopiować wpisu. + Tutaj nie można skopiować grupy. Tworzenie bazy danych… Ustawienia zabezpieczeń Ustawienia klucza głównego @@ -515,4 +515,20 @@ Tryb wyszukiwania Zapisywanie nowego elementu nie jest dozwolone w bazie danych tylko do odczytu Nazwa pola już istnieje. + Enter + Backspace + Wybierz pozycję + Wróć do poprzedniej klawiatury + Pola niestandardowe + Czy usunąć wszystkie klucze szyfrowania związane z zaawansowanym rozpoznawaniem odblokowania\? + Umożliwia otwieranie bazy danych za pomocą poświadczeń urządzenia + Odblokowanie uwierzytelniające urządzenia + Uwierzytelnienie urządzenia + Wpisz hasło, a następnie kliknij przycisk \"Zaawansowane odblokowanie\". + Nie można rozpoznać zaawansowanego wydruku odblokowującego + Nie można odczytać zaawansowanego klucza odblokowuj. Usuń go i powtórz procedurę rozpoznawania odblokowania. + Wyodrębnij poświadczenia bazy danych z zaawansowanymi danymi odblokowującymi + Ostrzeżenie: Jeśli używasz zaawansowanego rozpoznawania odblokowania, nadal musisz zapamiętać hasło główne. + Zaawansowane rozpoznawanie odblokowania + Usuń zaawansowany klucz odblokowujący \ No newline at end of file From 03fb4cbf0c453f36a78a5daaeec5c8add310b464 Mon Sep 17 00:00:00 2001 From: solokot Date: Fri, 4 Dec 2020 10:06:25 +0000 Subject: [PATCH 088/113] Translated using Weblate (Russian) Currently translated at 100.0% (491 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/ --- app/src/main/res/values-ru/strings.xml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index a39276445..aff219040 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -264,10 +264,10 @@ Установите взаимосвязь между паролем и биометрическим ключом для быстрой разблокировки базы. Ищите записи по названию, имени или другим полям для быстрого доступа к своим паролям. Редактируйте записи - Редактируйте записи с настраиваемыми полями. Возможны перекрёстные ссылки между полями разных записей. + Редактируйте записи с пользовательскими полями. Возможны перекрёстные ссылки между полями разных записей. Создайте надёжный пароль Создайте надёжный пароль, связанный с записью, легко настраиваемый под критерии формы. И не забудьте главный пароль от базы. - Добавляйте настраиваемые поля + Добавляйте пользовательские поля Зарегистрируйте дополнительное поле, добавьте значение и при необходимости защитите его. Разблокируйте базу База только для чтения @@ -531,4 +531,9 @@ Ошибка расширенной разблокировки: %1$s Распознавание расширенной разблокировки Удалить ключ расширенной разблокировки + Ввод + Возврат к предыдущей клавиатуре + Пользовательские поля + Backspace + Выберите запись \ No newline at end of file From 24fb1b1a8f3e57d814f1dfa071e7c13b5daf311d Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Thu, 3 Dec 2020 23:17:19 +0000 Subject: [PATCH 089/113] Translated using Weblate (Ukrainian) Currently translated at 100.0% (491 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/ --- app/src/main/res/values-uk/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 6464bcf39..99daa7644 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -531,4 +531,9 @@ Відкривати запит розширеного розблокування, щоб зберегти облікові дані Відкривати запит розширеного розблокування, щоб розблокувати базу даних Видалити ключ розширеного розблокування + Enter + Backspace + Вибрати запис + Повернутися до попередньої клавіатури + Власні поля \ No newline at end of file From 0e29cd0ceeca80104019f6925b265b497243e115 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 4 Dec 2020 01:37:02 +0000 Subject: [PATCH 090/113] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (491 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 79933f10d..3f3ebf83f 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -531,4 +531,9 @@ 打开高级解锁提示来存储凭证 打开高级解锁提示来解锁数据库 删除高级解锁密钥 + 输入 + 退格键 + 选择条目 + 回到先前的键盘 + 自定义字段 \ No newline at end of file From 5499ad5b945bd68994635c16c0be772ed2ded4e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Fri, 4 Dec 2020 10:22:49 +0000 Subject: [PATCH 091/113] Translated using Weblate (Turkish) Currently translated at 100.0% (491 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/ --- app/src/main/res/values-tr/strings.xml | 49 ++++++++++++++------------ 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index e3aeeb64e..7bcaf7360 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -21,8 +21,8 @@ Ana sayfa KeePass parola yöneticisinin Android uygulaması Kabul et - Girdi Ekle - Girdi Düzenle + Girdi ekle + Girdi düzenle Grup Ekle Şifreleme Şifreleme algoritması @@ -47,7 +47,7 @@ Parolayı onayla Oluşturuldu Değiştirilmiş - Giriş Verisi bulamadı. + Girdi verisi bulunamadı. Parola Kaydet Başlık @@ -97,7 +97,7 @@ Anahtar dosya boş. Uzunluk Kullanıcı adlarını göster - Giriş listelerinde kullanıcı adlarını göster + Girdi listelerinde kullanıcı adlarını göster Liste ögelerinin boyutu Öge listesindeki metin boyutu Veri tabanı yükleniyor… @@ -131,7 +131,7 @@ Bu URL\'u açmak için bir web tarayıcısı yükleyin. Mevcut veri tabanını aç Yeni veri tabanı oluştur - Yedek girişleri arama + Yedek girdilerde arama Arama sonuçlarından \"Yedekleme\" ve \"Geri dönüşüm kutusu\" gruplarını atlar Yeni veri tabanı oluşturuluyor… Çalışıyor… @@ -189,7 +189,7 @@ İzin verilen parola üreticisi karakterlerini ayarla Pano Pano bildirimleri - Bir girişi görüntülerken alanları kopyalamak için pano bildirimlerini göster + Bir girdiyi görüntülerken alanları kopyalamak için pano bildirimlerini göster Panodaki otomatik silme başarısız olursa, geçmişini elle silin. Kilit Ekran kilidi @@ -210,7 +210,7 @@ Alan yazı tipi Daha iyi karakter görünürlüğü için alanlarda kullanılan yazı tipini değiştirin Pano güveni - Giriş parolası ve korunan alanları panoya kopyalamaya izin ver + Girdi parolası ve korunan alanları panoya kopyalamaya izin ver Uyarı: Pano tüm uygulamalar tarafından paylaşılır. Hassas veriler kopyalanırsa, diğer yazılımlar bu verileri kurtarabilir. Veri tabanı adı Veri tabanı açıklaması @@ -226,11 +226,11 @@ Magikeyboard ayarları Girdi Zaman aşımı - Klavye girişini temizlemek için zaman aşımı + Klavye girdisini temizlemek için zaman aşımı Bildirim bilgisi - Bir giriş mevcut olduğunda bir bildirim göster + Bir girdi kullanılabilir olduğunda bildirim göster Girdi - Magikeyboard\'da %1$s mevcut + %1$s Magikeyboard\'da kullanılabilir %1$s Kapanışta temizle Bildirimi kapatırken veri tabanını kapat @@ -261,9 +261,9 @@ Veri tabanı kilidini biyometrik verilerle açın Veri tabanınızı hızlıca açmak için parolanızı taranan biyometrik verinize bağlayın. Girdiyi düzenleyin - Girdinizi özel alanlarla düzenleyin. Havuz verileri farklı giriş alanları arasında referans alınabilir. + Girdinizi özel alanlarla düzenleyin. Havuz verileri farklı girdi alanları arasında referans alınabilir. Güçlü bir parola oluşturun - Girişinizle ilişkilendirmek için güçlü bir parola oluşturun, formun kriterlerine göre kolayca tanımlayın ve güvenli parolayı unutmayın. + Girdinizle ilişkilendirmek için güçlü bir parola oluşturun, formun kriterlerine göre kolayca tanımlayın ve güvenli parolayı unutmayın. Özel alanlar ekleyin Ek bir alan kaydedin, bir değer ekleyin ve isteğe bağlı olarak koruyun. Veri tabanınızın kilidini açın @@ -314,25 +314,25 @@ Panonun süresi dolduğunda veya kullanmaya başladıktan sonra bildirim kapatıldığında veri tabanını kilitle Dosya aç Düğüm ekle - Girdi Ekle + Girdi ekle Grup ekle Dosya bilgileri Parola onay kutusu Anahtar dosyası onay kutusu - Giriş simgesi + Girdi simgesi Parola üreteci Parola uzunluğu Alan ekle Alanı kaldır UUID - Buraya bir girişi taşıyamazsınız. - Buraya bir girişi kopyalayamazsınız. - Giriş sayısını göster - Bir gruptaki girişlerin sayısını göster + Bir girdiyi buraya taşıyamazsınız. + Bir girdiyi buraya kopyalayamazsınız. + Girdi sayısını göster + Bir gruptaki girdilerin sayısını göster Kilitlemek için \'Geri\'ye basın Geri dönüşüm kutusu - Giriş seçimi - Bir girişi görüntülerken Magikeyboard\'da giriş alanlarını göster + Girdi seçimi + Bir girdiyi görüntülerken Magikeyboard\'da giriş alanlarını göster Parolayı sil Veri tabanına bağlantı denemesinden sonra girilen parolayı siler Alt düğüm @@ -372,14 +372,14 @@ Veri tabanı tekrarlanan UUID\'ler içeriyor. Tekrarlananlar için yeni UUID\'ler oluşturarak sorunu çöz ve devam et\? Veri tabanı açıldı - Aygıtınızın panosunu kullanarak giriş alanlarını kopyala + Aygıtınızın panosunu kullanarak girdi alanlarını kopyalayın Veri tabanını daha kolay açmak için gelişmiş kilit açma özelliğini kullan Veri sıkıştırma Veri sıkıştırma veri tabanı boyutunu azaltır Azami sayı Girdi başına geçmiş ögelerinin sayısını sınırla Azami boyut - Giriş başına geçmiş boyutunu (bayt olarak) sınırlama + Girdi başına geçmiş boyutunu (bayt olarak) sınırla Yenilemeyi öner Ana anahtarın değiştirilmesini öner (gün) Yenilemeyi zorla @@ -515,4 +515,9 @@ Kimlik bilgilerini saklamak için gelişmiş kilit açma istemini aç Veri tabanının kilidini açmak için gelişmiş kilit açma istemini aç Gelişmiş kilit açma anahtarını sil + Enter + Backspace + Girdi seç + Önceki klavyeye geri dön + Özel alanlar \ No newline at end of file From 3d3a9d9baddfe2664f49f6b1ce6cdbeda521c5a9 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Sat, 5 Dec 2020 14:22:55 +0000 Subject: [PATCH 092/113] Translated using Weblate (Croatian) Currently translated at 100.0% (491 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/ --- app/src/main/res/values-hr/strings.xml | 30 +++++++++++++++++--------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index dba69fb15..2524115d2 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -222,7 +222,7 @@ Proizvoljna boja baze podataka Verzija baze podataka Tekst - Aplikacija + Sučelje Ostalo Komprimiranje Bez @@ -239,7 +239,7 @@ Nema dovoljno memorije za učitavanje cijele baze podataka. Nije moguće učitati bazu podataka. Nije moguće učitati ključ. Pokušaje smanjiti uporabu memorije KDF. - Barem jedna akreditacija mora biti postavljena. + Barem jedan skup podataka za prijavu mora biti postavljen. Svaki niz mora imati ime polja. Nije moguće aktivirati uslugu automatskog ispunjavanja. Nije moguće premjestiti grupu u samu sebe. @@ -250,7 +250,7 @@ Nije moguće spremiti bazu podataka. Razdoblje mora biti između %1$d i %2$d sekundi. Nije moguće pronaći datoteku. Probaj je ponovo otvoriti iz upravitelja datoteka. - Nije moguće čitati akreditacije. + Nije moguće čitati podatke za prijavu. Veličina elemenata popisa Veličina teksta u popisu elemenata Mala slova @@ -272,7 +272,7 @@ Posebni znakovi Podcrtaj Velika slova - Ova baza podataka još nema spremljenu akreditaciju. + Ova baza podataka još nema spremljene podatke za prijavu. Biometrija Prijavi se s KeePassDX Aktiviraj automatsko ispunjavanje za brzo ispunjavanje obrazaca u drugim aplikacijama @@ -312,7 +312,7 @@ Vibracija tipki Zvuk tipki Dozvoli bez lozinke - Dozvoljava dodir gumba „Otvori”, ako nijedna akreditacija nije odabrana + Dozvoljava dodir gumba „Otvori”, ako nisu odabrani nikoji podaci za prijavu Izbriši lozinku Briše upisanu lozinku nakon pokušaja povezivanja s bazom podataka Zaštićeno od pisanja @@ -377,7 +377,7 @@ Dodatni prolazi šifriranja pružaju veću zaštitu od brutalnih napada, ali stvarno mogu usporiti učitavanje i spremanje. Traži web domene s ograničenjima poddomena Traži dijeljene informacije - Ne zaboravi aktualizirati aplikaciju najnovijim verzijama. + Redovito aktualiziraj aplikaciju instaliranjem najnovijih verzija. Za aktiviranje blokiranja, ponovo pokreni aplikaciju koja sadrži obrazac. Odaberi način razvrstavanja unosa i grupa. Pristup datoteci koju je opozvao upravitelj datoteka @@ -401,7 +401,7 @@ Za brzo otključavanje baze podataka, poveži lozinku sa skeniranom biometrijom. Kako bismo zadržali našu slobodu i uvijek bili aktivni, računamo na tvoj<strong>doprinos.</strong> Za stvaranje ključa za algoritam šifriranja, glavni ključ se transformira pomoću funkcije za generiranje ključeva koja sadrži slučajnu komponentu. - Zaključaj bazu podataka kad korisnik pritisne gumb za natrag na ekranu + Zaključaj bazu podataka kad korisnik pritisne gumb za natrag na glavnom ekranu Sakrij pokvarene poveznice baze podataka Blokiranje automatskog ispunjavanja Baza ključeva nije ispravno inicijalizirana. @@ -457,8 +457,8 @@ Gotovo! Automatski se vrati na prethodnu tipkovnicu nakon izvršavanja „Automatska radnje tipke” Automatska radnja tipke - Automatski se prebaci na prethodnu tipkovnicu pri ekranu za unos podataka za prijavu u bazu podataka - Ekran za unos podataka za prijavu u bazu podataka + Automatski se prebaci na prethodnu tipkovnicu pri ekranu za unos podataka za prijavu na bazu podataka + Ekran za unos podataka za prijavu na bazu podataka Promijeni tipkovnicu Baza podataka za KeePass trebala bi sadržavati samo male datoteke uslužnih programa (poput PGP datoteke ključeva). \n @@ -475,7 +475,7 @@ Ukloni nepovezane podatke Podaci Svejedno ukloniti ove podatke\? - Podaci podataka prijave + Podaci za prijavu Pokušaj spremiti podatke pretrage prilikom odabira ručnog unosa Obavijest Nije dopušteno spremati novi element u zaštićenoj bazi podataka @@ -510,4 +510,14 @@ Izdvoji podatake za prijavu na bazu podataka pomoću podataka naprednog otključavanja Otvori prozor naprednog otključavanja za spremanje podataka za prijavu Otvori prozor naprednog otključavanja za otključavanje baze podataka + Nije moguće prepoznati digitanlni otisak za napredno otključavanje + Nije moguće pročitati napredni ključ za otključavanje. Izbriši ga i ponovi postupak prepoznavanja. + Tipka Enter + Tipka Backspace + Odaberi unos + Natrag na prethodnu tipkovnicu + Prilagođena polja + Omogućuje otvaranje baze podataka pomoću podataka za prijavu + Otključavanje s podacima za prijavu uređaja + Podaci za prijavu uređaja \ No newline at end of file From caeb3054757848c8153447d6a5154d13c9ca64fe Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 7 Dec 2020 12:17:07 +0100 Subject: [PATCH 093/113] Fix deletion keystore key --- .../com/kunzisoft/keepass/activities/PasswordActivity.kt | 2 +- .../kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt | 3 +-- .../keepass/biometric/BiometricUnlockDatabaseHelper.kt | 6 +++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt index d93b56960..755e3e493 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/PasswordActivity.kt @@ -709,7 +709,7 @@ open class PasswordActivity : SpecialModeActivity() { changeOpenFileReadIcon(item) } R.id.menu_keystore_remove_key -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - advancedUnlockedManager?.deleteEntryKey() + advancedUnlockedManager?.deleteEncryptedDatabaseKey() } else -> return MenuUtil.onDefaultMenuOptionsItemSelected(this, item) } diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index ac983a821..6d68425e5 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -342,11 +342,10 @@ class AdvancedUnlockedManager(var context: FragmentActivity, menuInflater.inflate(R.menu.advanced_unlock, menu) } - fun deleteEntryKey() { + fun deleteEncryptedDatabaseKey() { allowOpenBiometricPrompt = false advancedUnlockInfoView?.setIconViewClickListener(false, null) biometricUnlockDatabaseHelper?.closeBiometricPrompt() - biometricUnlockDatabaseHelper?.deleteEntryKey() cipherDatabaseAction.deleteByDatabaseUri(databaseFileUri) { checkBiometricAvailability() } diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt index 65700bfbd..b0b060073 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/BiometricUnlockDatabaseHelper.kt @@ -234,7 +234,7 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { } } catch (unrecoverableKeyException: UnrecoverableKeyException) { Log.e(TAG, "Unable to initialize decrypt data", unrecoverableKeyException) - deleteEntryKey() + deleteKeystoreKey() } catch (invalidKeyException: KeyPermanentlyInvalidatedException) { Log.e(TAG, "Unable to initialize decrypt data", invalidKeyException) biometricUnlockCallback?.onInvalidKeyException(invalidKeyException) @@ -264,7 +264,7 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { } } - fun deleteEntryKey() { + fun deleteKeystoreKey() { try { keyStore?.load(null) keyStore?.deleteEntry(BIOMETRIC_KEYSTORE_KEY) @@ -397,7 +397,7 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) { biometricCallback.onBiometricException(e) } } - deleteEntryKey() + deleteKeystoreKey() } } } From e600d8a56c0e080245b59e7e64c980cda326e11d Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 7 Dec 2020 14:08:44 +0100 Subject: [PATCH 094/113] Add temp advanced unlocking settings --- .../keepass/settings/PreferencesUtil.kt | 25 ++++++++++++++----- app/src/main/res/values/donottranslate.xml | 10 +++++--- app/src/main/res/values/strings.xml | 6 +++++ .../res/xml/preferences_advanced_unlock.xml | 17 +++++++++++++ 4 files changed, 49 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt index 90a4f67d5..d4baa0d14 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt @@ -203,6 +203,13 @@ object PreferencesUtil { ?: TimeoutHelper.DEFAULT_TIMEOUT } + fun getAdvancedUnlockTimeout(context: Context): Long { + val prefs = PreferenceManager.getDefaultSharedPreferences(context) + return prefs.getString(context.getString(R.string.temp_advanced_unlock_timeout_key), + context.getString(R.string.temp_advanced_unlock_timeout_default))?.toLong() + ?: TimeoutHelper.DEFAULT_TIMEOUT + } + fun isLockDatabaseWhenScreenShutOffEnable(context: Context): Boolean { val prefs = PreferenceManager.getDefaultSharedPreferences(context) return prefs.getBoolean(context.getString(R.string.lock_database_screen_off_key), @@ -237,18 +244,24 @@ object PreferencesUtil { context.resources.getBoolean(R.bool.biometric_unlock_enable_default)) } - fun isAdvancedUnlockPromptAutoOpenEnable(context: Context): Boolean { - val prefs = PreferenceManager.getDefaultSharedPreferences(context) - return prefs.getBoolean(context.getString(R.string.biometric_auto_open_prompt_key), - context.resources.getBoolean(R.bool.biometric_auto_open_prompt_default)) - } - fun isDeviceCredentialUnlockEnable(context: Context): Boolean { val prefs = PreferenceManager.getDefaultSharedPreferences(context) return prefs.getBoolean(context.getString(R.string.device_credential_unlock_enable_key), context.resources.getBoolean(R.bool.device_credential_unlock_enable_default)) } + fun isTempAdvancedUnlockEnable(context: Context): Boolean { + val prefs = PreferenceManager.getDefaultSharedPreferences(context) + return prefs.getBoolean(context.getString(R.string.temp_advanced_unlock_enable_key), + context.resources.getBoolean(R.bool.temp_advanced_unlock_enable_default)) + } + + fun isAdvancedUnlockPromptAutoOpenEnable(context: Context): Boolean { + val prefs = PreferenceManager.getDefaultSharedPreferences(context) + return prefs.getBoolean(context.getString(R.string.biometric_auto_open_prompt_key), + context.resources.getBoolean(R.bool.biometric_auto_open_prompt_default)) + } + fun getListSort(context: Context): SortNodeEnum { val prefs = PreferenceManager.getDefaultSharedPreferences(context) prefs.getString(context.getString(R.string.sort_node_key), diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index bfa602c58..380a88632 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -94,11 +94,15 @@ advanced_unlock_explanation_key biometric_unlock_enable_key false - biometric_auto_open_prompt_key - false - biometric_delete_all_key_key device_credential_unlock_enable_key false + biometric_auto_open_prompt_key + false + temp_advanced_unlock_enable_key + false + temp_advanced_unlock_timeout_key + 30000 + biometric_delete_all_key_key settings_form_filling_key diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7a474b00e..22b45485b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -317,6 +317,7 @@ Lock the database when the user clicks the back button on the root screen Show lock button Displays the lock button in the user interface + Content Advanced unlock Use advanced unlocking to open a database more easily Biometric unlocking @@ -325,6 +326,11 @@ Lets you use your device credential to open the database Auto-open prompt Automatically request advanced unlock if the database is set up to use it + Temp advanced unlocking + Do not store any encrypted content to use advanced unlocking + Advanced unlocking expiration + Duration of advanced unlocking usage before deleting its content + Advanced unlocking timeout Delete encryption keys Delete all encryption keys related to advanced unlock recognition Delete all encryption keys related to advanced unlock recognition? diff --git a/app/src/main/res/xml/preferences_advanced_unlock.xml b/app/src/main/res/xml/preferences_advanced_unlock.xml index 9ce2402fd..4bef7680f 100644 --- a/app/src/main/res/xml/preferences_advanced_unlock.xml +++ b/app/src/main/res/xml/preferences_advanced_unlock.xml @@ -39,6 +39,23 @@ android:title="@string/biometric_auto_open_prompt_title" android:summary="@string/biometric_auto_open_prompt_summary" android:defaultValue="@bool/biometric_auto_open_prompt_default"/> + + + + Date: Mon, 7 Dec 2020 17:03:26 +0100 Subject: [PATCH 095/113] Add temp advanced service to store encrypted elements --- app/src/main/AndroidManifest.xml | 6 +- .../app/database/CipherDatabaseAction.kt | 113 ++++++++++++++---- .../app/database/CipherDatabaseEntity.kt | 5 + .../biometric/AdvancedUnlockedManager.kt | 1 + .../AdvancedUnlockNotificationService.kt | 74 ++++++++++++ app/src/main/res/values/strings.xml | 1 + .../res/xml/preferences_advanced_unlock.xml | 2 +- 7 files changed, 177 insertions(+), 25 deletions(-) create mode 100644 app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 20c78fb62..716adef98 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -174,13 +174,17 @@ android:enabled="true" android:exported="false" /> + ?) -> Unit) { + // Check if a service is currently running else do nothing + if (mBinder != null) { + tempCipherDaoRetrieved.invoke(mBinder?.getTempCipherDao()) + } else if (mServiceConnection == null) { + mServiceConnection = object : ServiceConnection { + override fun onServiceConnected(name: ComponentName?, serviceBinder: IBinder?) { + mBinder = (serviceBinder as AdvancedUnlockNotificationService.AdvancedUnlockBinder) + tempCipherDaoRetrieved.invoke(mBinder?.getTempCipherDao()) + } + + override fun onServiceDisconnected(name: ComponentName?) { + mBinder = null + mServiceConnection = null + } + } + // bind Service + mServiceConnection?.let { + applicationContext.bindService(mIntentAdvancedUnlockService, + it, + Context.BIND_ABOVE_CLIENT) + } + } + } + fun getCipherDatabase(databaseUri: Uri, cipherDatabaseResultListener: (CipherDatabaseEntity?) -> Unit) { - IOActionTask( - { - cipherDatabaseDao.getByDatabaseUri(databaseUri.toString()) - }, - { - cipherDatabaseResultListener.invoke(it) - } - ).execute() + if (useTempDao) { + getTempCipherDao { tempCipherDao -> + cipherDatabaseResultListener.invoke(tempCipherDao?.firstOrNull { it.databaseUri == databaseUri.toString()}) + } + } else { + IOActionTask( + { + cipherDatabaseDao.getByDatabaseUri(databaseUri.toString()) + }, + { + cipherDatabaseResultListener.invoke(it) + } + ).execute() + } } fun containsCipherDatabase(databaseUri: Uri, @@ -51,25 +102,38 @@ class CipherDatabaseAction(applicationContext: Context) { fun addOrUpdateCipherDatabase(cipherDatabaseEntity: CipherDatabaseEntity, cipherDatabaseResultListener: (() -> Unit)? = null) { - IOActionTask( - { - val cipherDatabaseRetrieve = cipherDatabaseDao.getByDatabaseUri(cipherDatabaseEntity.databaseUri) - - // Update values if element not yet in the database - if (cipherDatabaseRetrieve == null) { - cipherDatabaseDao.add(cipherDatabaseEntity) - } else { - cipherDatabaseDao.update(cipherDatabaseEntity) + if (useTempDao) { + getTempCipherDao { tempCipherDao -> + val cipherDatabaseRetrieve = tempCipherDao?.firstOrNull { it.databaseUri == cipherDatabaseEntity.databaseUri } + cipherDatabaseRetrieve?.replaceContent(cipherDatabaseEntity) + ?: tempCipherDao?.add(cipherDatabaseEntity) + cipherDatabaseResultListener?.invoke() + } + } else { + IOActionTask( + { + val cipherDatabaseRetrieve = cipherDatabaseDao.getByDatabaseUri(cipherDatabaseEntity.databaseUri) + // Update values if element not yet in the database + if (cipherDatabaseRetrieve == null) { + cipherDatabaseDao.add(cipherDatabaseEntity) + } else { + cipherDatabaseDao.update(cipherDatabaseEntity) + } + }, + { + cipherDatabaseResultListener?.invoke() } - }, - { - cipherDatabaseResultListener?.invoke() - } - ).execute() + ).execute() + } } fun deleteByDatabaseUri(databaseUri: Uri, cipherDatabaseResultListener: (() -> Unit)? = null) { + getTempCipherDao { tempCipherDao -> + tempCipherDao?.firstOrNull { it.databaseUri == databaseUri.toString() }?.let { + tempCipherDao.remove(it) + } + } IOActionTask( { cipherDatabaseDao.deleteByDatabaseUri(databaseUri.toString()) @@ -81,6 +145,9 @@ class CipherDatabaseAction(applicationContext: Context) { } fun deleteAll() { + getTempCipherDao { tempCipherDao -> + tempCipherDao?.clear() + } IOActionTask( { cipherDatabaseDao.deleteAll() diff --git a/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseEntity.kt b/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseEntity.kt index 4222ff5d3..7c51f70ee 100644 --- a/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseEntity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseEntity.kt @@ -43,6 +43,11 @@ data class CipherDatabaseEntity( parcel.readString()!!, parcel.readString()!!) + fun replaceContent(copy: CipherDatabaseEntity) { + this.encryptedValue = copy.encryptedValue + this.specParameters = copy.specParameters + } + override fun writeToParcel(parcel: Parcel, flags: Int) { parcel.writeString(databaseUri) parcel.writeString(encryptedValue) diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index 6d68425e5..a2a80fefb 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -78,6 +78,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, // Add old listener to enable the button, only be call here because of onCheckedChange bug onCheckedPasswordChangeListener?.onCheckedChanged(compoundButton, checked) } + cipherDatabaseAction.initialize() } /** diff --git a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt new file mode 100644 index 000000000..d55da8f46 --- /dev/null +++ b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt @@ -0,0 +1,74 @@ +package com.kunzisoft.keepass.notifications + +import android.app.PendingIntent +import android.content.Intent +import android.os.Binder +import android.os.IBinder +import com.kunzisoft.keepass.R +import com.kunzisoft.keepass.app.database.CipherDatabaseEntity + +class AdvancedUnlockNotificationService : NotificationService() { + + private lateinit var mTempCipherDao: ArrayList + + private var mActionTaskBinder = AdvancedUnlockBinder() + + inner class AdvancedUnlockBinder: Binder() { + fun getTempCipherDao(): MutableList { + return mTempCipherDao + } + } + + override val notificationId: Int = 593 + + override fun retrieveChannelId(): String { + return CHANNEL_ADVANCED_UNLOCK_ID + } + + override fun onBind(intent: Intent): IBinder? { + super.onBind(intent) + return mActionTaskBinder + } + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + super.onStartCommand(intent, flags, startId) + + val deleteIntent = Intent(this, AdvancedUnlockNotificationService::class.java).apply { + action = ACTION_REMOVE_KEYS + } + val pendingDeleteIntent = PendingIntent.getService(this, 0, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT) + val notificationBuilder = buildNewNotification().apply { + setSmallIcon(R.drawable.bolt) + intent?.let { + setContentTitle(getString(R.string.advanced_unlock)) + } + setContentText(getString(R.string.advanced_unlock_tap_delete)) + setContentIntent(pendingDeleteIntent) + // Unfortunately swipe is disabled in lollipop+ + setDeleteIntent(pendingDeleteIntent) + } + startForeground(notificationId, notificationBuilder.build()) + + if (intent?.action == ACTION_REMOVE_KEYS) { + stopSelf() + } + + return START_STICKY + } + + override fun onCreate() { + super.onCreate() + mTempCipherDao = ArrayList() + } + + override fun onDestroy() { + mTempCipherDao.clear() + super.onDestroy() + } + + companion object { + private const val CHANNEL_ADVANCED_UNLOCK_ID = "com.kunzisoft.keepass.notification.channel.unlock" + + const val ACTION_REMOVE_KEYS = "ACTION_REMOVE_KEYS" + } +} \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 22b45485b..a3ea0a771 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -319,6 +319,7 @@ Displays the lock button in the user interface Content Advanced unlock + Tap to delete advanced unlocking keys Use advanced unlocking to open a database more easily Biometric unlocking Lets you scan your biometric to open the database diff --git a/app/src/main/res/xml/preferences_advanced_unlock.xml b/app/src/main/res/xml/preferences_advanced_unlock.xml index 4bef7680f..010428229 100644 --- a/app/src/main/res/xml/preferences_advanced_unlock.xml +++ b/app/src/main/res/xml/preferences_advanced_unlock.xml @@ -54,7 +54,7 @@ android:dependency="@string/temp_advanced_unlock_enable_key" android:entries="@array/timeout_options" android:entryValues="@array/timeout_values" - android:dialogTitle="@string/clipboard_timeout" + android:dialogTitle="@string/advanced_unlock_timeout" android:defaultValue="@string/temp_advanced_unlock_timeout_default"/> Date: Mon, 7 Dec 2020 17:40:12 +0100 Subject: [PATCH 096/113] Better service implementation --- .../app/database/CipherDatabaseAction.kt | 44 +++++++++---------- .../biometric/AdvancedUnlockedManager.kt | 7 ++- .../AdvancedUnlockNotificationService.kt | 22 ++++++++-- 3 files changed, 44 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt b/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt index 6f8683773..b0b2566ab 100644 --- a/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt +++ b/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt @@ -50,15 +50,15 @@ class CipherDatabaseAction(context: Context) { } @Synchronized - private fun getTempCipherDao(tempCipherDaoRetrieved: (MutableList?) -> Unit) { + private fun attachService(serviceAttached: () -> Unit) { // Check if a service is currently running else do nothing if (mBinder != null) { - tempCipherDaoRetrieved.invoke(mBinder?.getTempCipherDao()) + serviceAttached.invoke() } else if (mServiceConnection == null) { mServiceConnection = object : ServiceConnection { override fun onServiceConnected(name: ComponentName?, serviceBinder: IBinder?) { mBinder = (serviceBinder as AdvancedUnlockNotificationService.AdvancedUnlockBinder) - tempCipherDaoRetrieved.invoke(mBinder?.getTempCipherDao()) + serviceAttached.invoke() } override fun onServiceDisconnected(name: ComponentName?) { @@ -78,8 +78,8 @@ class CipherDatabaseAction(context: Context) { fun getCipherDatabase(databaseUri: Uri, cipherDatabaseResultListener: (CipherDatabaseEntity?) -> Unit) { if (useTempDao) { - getTempCipherDao { tempCipherDao -> - cipherDatabaseResultListener.invoke(tempCipherDao?.firstOrNull { it.databaseUri == databaseUri.toString()}) + attachService { + cipherDatabaseResultListener.invoke(mBinder?.getCipherDatabase(databaseUri)) } } else { IOActionTask( @@ -103,10 +103,8 @@ class CipherDatabaseAction(context: Context) { fun addOrUpdateCipherDatabase(cipherDatabaseEntity: CipherDatabaseEntity, cipherDatabaseResultListener: (() -> Unit)? = null) { if (useTempDao) { - getTempCipherDao { tempCipherDao -> - val cipherDatabaseRetrieve = tempCipherDao?.firstOrNull { it.databaseUri == cipherDatabaseEntity.databaseUri } - cipherDatabaseRetrieve?.replaceContent(cipherDatabaseEntity) - ?: tempCipherDao?.add(cipherDatabaseEntity) + attachService { + mBinder?.addOrUpdateCipherDatabase(cipherDatabaseEntity) cipherDatabaseResultListener?.invoke() } } else { @@ -129,24 +127,26 @@ class CipherDatabaseAction(context: Context) { fun deleteByDatabaseUri(databaseUri: Uri, cipherDatabaseResultListener: (() -> Unit)? = null) { - getTempCipherDao { tempCipherDao -> - tempCipherDao?.firstOrNull { it.databaseUri == databaseUri.toString() }?.let { - tempCipherDao.remove(it) + if (useTempDao) { + attachService { + mBinder?.deleteByDatabaseUri(databaseUri) + cipherDatabaseResultListener?.invoke() } + } else { + IOActionTask( + { + cipherDatabaseDao.deleteByDatabaseUri(databaseUri.toString()) + }, + { + cipherDatabaseResultListener?.invoke() + } + ).execute() } - IOActionTask( - { - cipherDatabaseDao.deleteByDatabaseUri(databaseUri.toString()) - }, - { - cipherDatabaseResultListener?.invoke() - } - ).execute() } fun deleteAll() { - getTempCipherDao { tempCipherDao -> - tempCipherDao?.clear() + attachService { + mBinder?.deleteAll() } IOActionTask( { diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index a2a80fefb..141a71b13 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -279,10 +279,9 @@ class AdvancedUnlockedManager(var context: FragmentActivity, setAdvancedUnlockedMessageView("") if (biometricUnlockDatabaseHelper != null) { - cipherDatabaseAction.getCipherDatabase(databaseFileUri) { - - it?.specParameters?.let { specs -> - biometricUnlockDatabaseHelper?.initDecryptData(specs) { biometricPrompt, cryptoObject, promptInfo -> + cipherDatabaseAction.getCipherDatabase(databaseFileUri) { cipherDatabase -> + cipherDatabase?.let { + biometricUnlockDatabaseHelper?.initDecryptData(it.specParameters) { biometricPrompt, cryptoObject, promptInfo -> // Set listener to open the biometric dialog and check credential advancedUnlockInfoView?.setIconViewClickListener { _ -> diff --git a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt index d55da8f46..81a3816f3 100644 --- a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt @@ -2,6 +2,7 @@ package com.kunzisoft.keepass.notifications import android.app.PendingIntent import android.content.Intent +import android.net.Uri import android.os.Binder import android.os.IBinder import com.kunzisoft.keepass.R @@ -14,8 +15,21 @@ class AdvancedUnlockNotificationService : NotificationService() { private var mActionTaskBinder = AdvancedUnlockBinder() inner class AdvancedUnlockBinder: Binder() { - fun getTempCipherDao(): MutableList { - return mTempCipherDao + fun getCipherDatabase(databaseUri: Uri): CipherDatabaseEntity? { + return mTempCipherDao.firstOrNull { it.databaseUri == databaseUri.toString()} + } + fun addOrUpdateCipherDatabase(cipherDatabaseEntity: CipherDatabaseEntity) { + val cipherDatabaseRetrieve = mTempCipherDao.firstOrNull { it.databaseUri == cipherDatabaseEntity.databaseUri } + cipherDatabaseRetrieve?.replaceContent(cipherDatabaseEntity) + ?: mTempCipherDao.add(cipherDatabaseEntity) + } + fun deleteByDatabaseUri(databaseUri: Uri) { + mTempCipherDao.firstOrNull { it.databaseUri == databaseUri.toString() }?.let { + mTempCipherDao.remove(it) + } + } + fun deleteAll() { + mTempCipherDao.clear() } } @@ -47,7 +61,9 @@ class AdvancedUnlockNotificationService : NotificationService() { // Unfortunately swipe is disabled in lollipop+ setDeleteIntent(pendingDeleteIntent) } - startForeground(notificationId, notificationBuilder.build()) + // Not necessarilly a foreground service + // startForeground(notificationId, notificationBuilder.build()) + notificationManager?.notify(notificationId, notificationBuilder.build()) if (intent?.action == ACTION_REMOVE_KEYS) { stopSelf() From c75d99030c733a3b19d6b2c80ddabd3a9f7a66fa Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 7 Dec 2020 18:22:04 +0100 Subject: [PATCH 097/113] Better service implementation --- .../app/database/CipherDatabaseAction.kt | 20 ++++++++----------- .../biometric/AdvancedUnlockedManager.kt | 9 ++++----- .../AdvancedUnlockNotificationService.kt | 6 +++--- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt b/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt index b0b2566ab..d0ea0f767 100644 --- a/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt +++ b/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt @@ -45,20 +45,16 @@ class CipherDatabaseAction(context: Context) { private var mBinder: AdvancedUnlockNotificationService.AdvancedUnlockBinder? = null private var mServiceConnection: ServiceConnection? = null - fun initialize() { - applicationContext.startService(mIntentAdvancedUnlockService) - } - @Synchronized - private fun attachService(serviceAttached: () -> Unit) { + private fun attachService(performedAction: () -> Unit) { // Check if a service is currently running else do nothing if (mBinder != null) { - serviceAttached.invoke() + performedAction.invoke() } else if (mServiceConnection == null) { mServiceConnection = object : ServiceConnection { override fun onServiceConnected(name: ComponentName?, serviceBinder: IBinder?) { mBinder = (serviceBinder as AdvancedUnlockNotificationService.AdvancedUnlockBinder) - serviceAttached.invoke() + performedAction.invoke() } override fun onServiceDisconnected(name: ComponentName?) { @@ -66,11 +62,11 @@ class CipherDatabaseAction(context: Context) { mServiceConnection = null } } - // bind Service - mServiceConnection?.let { - applicationContext.bindService(mIntentAdvancedUnlockService, - it, - Context.BIND_ABOVE_CLIENT) + applicationContext.bindService(mIntentAdvancedUnlockService, + mServiceConnection!!, + Context.BIND_ABOVE_CLIENT) + if (mBinder == null) { + applicationContext.startService(mIntentAdvancedUnlockService) } } } diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index 141a71b13..54485fde0 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -78,7 +78,6 @@ class AdvancedUnlockedManager(var context: FragmentActivity, // Add old listener to enable the button, only be call here because of onCheckedChange bug onCheckedPasswordChangeListener?.onCheckedChanged(compoundButton, checked) } - cipherDatabaseAction.initialize() } /** @@ -184,10 +183,10 @@ class AdvancedUnlockedManager(var context: FragmentActivity, } Mode.EXTRACT_CREDENTIAL -> { // retrieve the encrypted value from preferences - cipherDatabaseAction.getCipherDatabase(databaseFileUri) { - it?.encryptedValue?.let { value -> + cipherDatabaseAction.getCipherDatabase(databaseFileUri) { cipherDatabase -> + cipherDatabase?.encryptedValue?.let { value -> biometricUnlockDatabaseHelper?.decryptData(value) - } + } ?: deleteEncryptedDatabaseKey() } } } @@ -294,7 +293,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, openBiometricPrompt(biometricPrompt, cryptoObject, promptInfo) } } - } + } ?: deleteEncryptedDatabaseKey() } } } diff --git a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt index 81a3816f3..0e6367911 100644 --- a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt @@ -61,9 +61,9 @@ class AdvancedUnlockNotificationService : NotificationService() { // Unfortunately swipe is disabled in lollipop+ setDeleteIntent(pendingDeleteIntent) } - // Not necessarilly a foreground service - // startForeground(notificationId, notificationBuilder.build()) - notificationManager?.notify(notificationId, notificationBuilder.build()) + // Not necessarily a foreground service + startForeground(notificationId, notificationBuilder.build()) + //notificationManager?.notify(notificationId, notificationBuilder.build()) if (intent?.action == ACTION_REMOVE_KEYS) { stopSelf() From 2e7088310a1f0ad75c1b17138cbed26878bc036d Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 7 Dec 2020 19:07:10 +0100 Subject: [PATCH 098/113] Add listeners to refresh unlocking state --- .../app/database/CipherDatabaseAction.kt | 24 ++++++++++++++++++- .../biometric/AdvancedUnlockedManager.kt | 11 +++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt b/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt index d0ea0f767..df871ebd5 100644 --- a/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt +++ b/app/src/main/java/com/kunzisoft/keepass/app/database/CipherDatabaseAction.kt @@ -28,6 +28,7 @@ import android.os.IBinder import com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService import com.kunzisoft.keepass.settings.PreferencesUtil import com.kunzisoft.keepass.utils.SingletonHolderParameter +import java.util.* class CipherDatabaseAction(context: Context) { @@ -38,13 +39,19 @@ class CipherDatabaseAction(context: Context) { .cipherDatabaseDao() // Temp DAO to easily remove content if object no longer in memory - private val useTempDao = PreferencesUtil.isTempAdvancedUnlockEnable(applicationContext) + private var useTempDao = PreferencesUtil.isTempAdvancedUnlockEnable(applicationContext) private val mIntentAdvancedUnlockService = Intent(applicationContext, AdvancedUnlockNotificationService::class.java) private var mBinder: AdvancedUnlockNotificationService.AdvancedUnlockBinder? = null private var mServiceConnection: ServiceConnection? = null + private var mDatabaseListeners = LinkedList() + + fun reloadPreferences() { + useTempDao = PreferencesUtil.isTempAdvancedUnlockEnable(applicationContext) + } + @Synchronized private fun attachService(performedAction: () -> Unit) { // Check if a service is currently running else do nothing @@ -60,6 +67,9 @@ class CipherDatabaseAction(context: Context) { override fun onServiceDisconnected(name: ComponentName?) { mBinder = null mServiceConnection = null + mDatabaseListeners.forEach { + it.onDatabaseCleared() + } } } applicationContext.bindService(mIntentAdvancedUnlockService, @@ -71,6 +81,18 @@ class CipherDatabaseAction(context: Context) { } } + fun registerDatabaseListener(listener: DatabaseListener) { + mDatabaseListeners.add(listener) + } + + fun unregisterDatabaseListener(listener: DatabaseListener) { + mDatabaseListeners.remove(listener) + } + + interface DatabaseListener { + fun onDatabaseCleared() + } + fun getCipherDatabase(databaseUri: Uri, cipherDatabaseResultListener: (CipherDatabaseEntity?) -> Unit) { if (useTempDao) { diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index 54485fde0..50b0bffa9 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -71,6 +71,12 @@ class AdvancedUnlockedManager(var context: FragmentActivity, private var cipherDatabaseAction = CipherDatabaseAction.getInstance(context.applicationContext) + private val cipherDatabaseListener = object: CipherDatabaseAction.DatabaseListener { + override fun onDatabaseCleared() { + deleteEncryptedDatabaseKey() + } + } + init { // Add a check listener to change fingerprint mode checkboxPasswordView?.setOnCheckedChangeListener { compoundButton, checked -> @@ -78,6 +84,10 @@ class AdvancedUnlockedManager(var context: FragmentActivity, // Add old listener to enable the button, only be call here because of onCheckedChange bug onCheckedPasswordChangeListener?.onCheckedChanged(compoundButton, checked) } + cipherDatabaseAction.apply { + reloadPreferences() + registerDatabaseListener(cipherDatabaseListener) + } } /** @@ -334,6 +344,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, biometricUnlockDatabaseHelper?.closeBiometricPrompt() // Restore the checked listener checkboxPasswordView?.setOnCheckedChangeListener(onCheckedPasswordChangeListener) + cipherDatabaseAction.unregisterDatabaseListener(cipherDatabaseListener) } fun inflateOptionsMenu(menuInflater: MenuInflater, menu: Menu) { From 173f5ce9796baea299e94d38e009fa765be9ea2b Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 7 Dec 2020 20:21:39 +0100 Subject: [PATCH 099/113] Add advanced unlock timeout --- .../biometric/AdvancedUnlockedManager.kt | 2 + .../AdvancedUnlockNotificationService.kt | 57 ++++++++++++++++--- app/src/main/res/values/donottranslate.xml | 16 +++++- app/src/main/res/values/strings.xml | 14 +++++ .../res/xml/preferences_advanced_unlock.xml | 4 +- 5 files changed, 83 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt index 50b0bffa9..1396c6a79 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockedManager.kt @@ -35,6 +35,7 @@ import androidx.biometric.BiometricPrompt import androidx.fragment.app.FragmentActivity import com.kunzisoft.keepass.R import com.kunzisoft.keepass.app.database.CipherDatabaseAction +import com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService import com.kunzisoft.keepass.settings.PreferencesUtil import com.kunzisoft.keepass.view.AdvancedUnlockInfoView @@ -190,6 +191,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity, Mode.STORE_CREDENTIAL -> { // newly store the entered password in encrypted way biometricUnlockDatabaseHelper?.encryptData(passwordView?.text.toString()) + AdvancedUnlockNotificationService.startServiceForTimeout(context) } Mode.EXTRACT_CREDENTIAL -> { // retrieve the encrypted value from preferences diff --git a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt index 0e6367911..b56300fed 100644 --- a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt @@ -1,12 +1,16 @@ package com.kunzisoft.keepass.notifications import android.app.PendingIntent +import android.content.Context import android.content.Intent import android.net.Uri import android.os.Binder import android.os.IBinder import com.kunzisoft.keepass.R import com.kunzisoft.keepass.app.database.CipherDatabaseEntity +import com.kunzisoft.keepass.settings.PreferencesUtil +import com.kunzisoft.keepass.timeout.TimeoutHelper +import kotlinx.coroutines.* class AdvancedUnlockNotificationService : NotificationService() { @@ -14,6 +18,9 @@ class AdvancedUnlockNotificationService : NotificationService() { private var mActionTaskBinder = AdvancedUnlockBinder() + private var notificationTimeoutMilliSecs: Long = 0 + private var mTimerJob: Job? = null + inner class AdvancedUnlockBinder: Binder() { fun getCipherDatabase(databaseUri: Uri): CipherDatabaseEntity? { return mTempCipherDao.firstOrNull { it.databaseUri == databaseUri.toString()} @@ -51,8 +58,13 @@ class AdvancedUnlockNotificationService : NotificationService() { action = ACTION_REMOVE_KEYS } val pendingDeleteIntent = PendingIntent.getService(this, 0, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT) + val deviceCredential = PreferencesUtil.isDeviceCredentialUnlockEnable(this) val notificationBuilder = buildNewNotification().apply { - setSmallIcon(R.drawable.bolt) + setSmallIcon(if (deviceCredential) { + R.drawable.bolt + } else { + R.drawable.fingerprint + }) intent?.let { setContentTitle(getString(R.string.advanced_unlock)) } @@ -61,12 +73,35 @@ class AdvancedUnlockNotificationService : NotificationService() { // Unfortunately swipe is disabled in lollipop+ setDeleteIntent(pendingDeleteIntent) } - // Not necessarily a foreground service - startForeground(notificationId, notificationBuilder.build()) - //notificationManager?.notify(notificationId, notificationBuilder.build()) - if (intent?.action == ACTION_REMOVE_KEYS) { - stopSelf() + when (intent?.action) { + ACTION_TIMEOUT -> { + notificationTimeoutMilliSecs = PreferencesUtil.getAdvancedUnlockTimeout(this) + // Not necessarily a foreground service + if (mTimerJob == null && notificationTimeoutMilliSecs != TimeoutHelper.NEVER) { + mTimerJob = CoroutineScope(Dispatchers.Main).launch { + val maxPos = 100 + val posDurationMills = notificationTimeoutMilliSecs / maxPos + for (pos in maxPos downTo 0) { + notificationBuilder.setProgress(maxPos, pos, false) + startForeground(notificationId, notificationBuilder.build()) + delay(posDurationMills) + if (pos <= 0) { + stopSelf() + } + } + notificationManager?.cancel(notificationId) + mTimerJob = null + cancel() + } + } else { + startForeground(notificationId, notificationBuilder.build()) + } + } + ACTION_REMOVE_KEYS -> { + stopSelf() + } + else -> {} } return START_STICKY @@ -79,12 +114,20 @@ class AdvancedUnlockNotificationService : NotificationService() { override fun onDestroy() { mTempCipherDao.clear() + mTimerJob?.cancel() super.onDestroy() } companion object { private const val CHANNEL_ADVANCED_UNLOCK_ID = "com.kunzisoft.keepass.notification.channel.unlock" - const val ACTION_REMOVE_KEYS = "ACTION_REMOVE_KEYS" + private const val ACTION_TIMEOUT = "ACTION_TIMEOUT" + private const val ACTION_REMOVE_KEYS = "ACTION_REMOVE_KEYS" + + fun startServiceForTimeout(context: Context) { + context.startService(Intent(context, AdvancedUnlockNotificationService::class.java).apply { + action = ACTION_TIMEOUT + }) + } } } \ No newline at end of file diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 380a88632..757f9f374 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -101,7 +101,7 @@ temp_advanced_unlock_enable_key false temp_advanced_unlock_timeout_key - 30000 + 36000000 biometric_delete_all_key_key @@ -291,6 +291,20 @@ 1800000 -1 + + 300000 + 900000 + 1800000 + 3600000 + 7200000 + 18000000 + 36000000 + 86400000 + 172800000 + 604800000 + 2592000000 + -1 + 32dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a3ea0a771..f5d405725 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -521,6 +521,20 @@ 30 minutes Never + + 5 minutes + 15 minutes + 30 minutes + 1 hour + 2 hours + 5 hours + 10 hours + 24 hours + 48 hours + 1 week + 1 month + Never + Small Medium diff --git a/app/src/main/res/xml/preferences_advanced_unlock.xml b/app/src/main/res/xml/preferences_advanced_unlock.xml index 010428229..0b66ceefb 100644 --- a/app/src/main/res/xml/preferences_advanced_unlock.xml +++ b/app/src/main/res/xml/preferences_advanced_unlock.xml @@ -52,8 +52,8 @@ android:title="@string/temp_advanced_unlock_timeout_title" android:summary="@string/temp_advanced_unlock_timeout_summary" android:dependency="@string/temp_advanced_unlock_enable_key" - android:entries="@array/timeout_options" - android:entryValues="@array/timeout_values" + android:entries="@array/large_timeout_options" + android:entryValues="@array/large_timeout_values" android:dialogTitle="@string/advanced_unlock_timeout" android:defaultValue="@string/temp_advanced_unlock_timeout_default"/> Date: Mon, 7 Dec 2020 20:34:23 +0100 Subject: [PATCH 100/113] Fix advanced unlock notification --- .../AdvancedUnlockNotificationService.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt index b56300fed..544fb2ce7 100644 --- a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt @@ -46,6 +46,10 @@ class AdvancedUnlockNotificationService : NotificationService() { return CHANNEL_ADVANCED_UNLOCK_ID } + override fun retrieveChannelName(): String { + return getString(R.string.advanced_unlock) + } + override fun onBind(intent: Intent): IBinder? { super.onBind(intent) return mActionTaskBinder @@ -125,9 +129,11 @@ class AdvancedUnlockNotificationService : NotificationService() { private const val ACTION_REMOVE_KEYS = "ACTION_REMOVE_KEYS" fun startServiceForTimeout(context: Context) { - context.startService(Intent(context, AdvancedUnlockNotificationService::class.java).apply { - action = ACTION_TIMEOUT - }) + if (PreferencesUtil.isTempAdvancedUnlockEnable(context)) { + context.startService(Intent(context, AdvancedUnlockNotificationService::class.java).apply { + action = ACTION_TIMEOUT + }) + } } } } \ No newline at end of file From fa08dc5cfb1e1d26ffcbfe2688f8a60dde0dfaf1 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 8 Dec 2020 11:17:39 +0100 Subject: [PATCH 101/113] Change notification icon --- .../AdvancedUnlockNotificationService.kt | 4 +- .../notification_ic_device_unlock_24dp.xml | 14 +++ ...otification_ic_fingerprint_unlock_24dp.xml | 14 +++ art/ic_device_unlock_notification.svg | 100 ++++++++++++++++ art/ic_fingerprint_notification.svg | 109 ++++++++++++++++++ 5 files changed, 239 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/drawable/notification_ic_device_unlock_24dp.xml create mode 100644 app/src/main/res/drawable/notification_ic_fingerprint_unlock_24dp.xml create mode 100644 art/ic_device_unlock_notification.svg create mode 100644 art/ic_fingerprint_notification.svg diff --git a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt index 544fb2ce7..3bcbd1d56 100644 --- a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt @@ -65,9 +65,9 @@ class AdvancedUnlockNotificationService : NotificationService() { val deviceCredential = PreferencesUtil.isDeviceCredentialUnlockEnable(this) val notificationBuilder = buildNewNotification().apply { setSmallIcon(if (deviceCredential) { - R.drawable.bolt + R.drawable.notification_ic_device_unlock_24dp } else { - R.drawable.fingerprint + R.drawable.notification_ic_fingerprint_unlock_24dp }) intent?.let { setContentTitle(getString(R.string.advanced_unlock)) diff --git a/app/src/main/res/drawable/notification_ic_device_unlock_24dp.xml b/app/src/main/res/drawable/notification_ic_device_unlock_24dp.xml new file mode 100644 index 000000000..238cce5b4 --- /dev/null +++ b/app/src/main/res/drawable/notification_ic_device_unlock_24dp.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/notification_ic_fingerprint_unlock_24dp.xml b/app/src/main/res/drawable/notification_ic_fingerprint_unlock_24dp.xml new file mode 100644 index 000000000..a03cce62b --- /dev/null +++ b/app/src/main/res/drawable/notification_ic_fingerprint_unlock_24dp.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/art/ic_device_unlock_notification.svg b/art/ic_device_unlock_notification.svg new file mode 100644 index 000000000..c6acd6f93 --- /dev/null +++ b/art/ic_device_unlock_notification.svg @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/art/ic_fingerprint_notification.svg b/art/ic_fingerprint_notification.svg new file mode 100644 index 000000000..aaa185bc0 --- /dev/null +++ b/art/ic_fingerprint_notification.svg @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + From 0aac2bc55bc90526acc69610ea6bb541cfda876b Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 8 Dec 2020 12:05:35 +0100 Subject: [PATCH 102/113] Fix settings --- .../AdvancedUnlockNotificationService.kt | 4 ++++ .../settings/NestedAppSettingsFragment.kt | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt index 3bcbd1d56..60e860c0d 100644 --- a/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/notifications/AdvancedUnlockNotificationService.kt @@ -135,5 +135,9 @@ class AdvancedUnlockNotificationService : NotificationService() { }) } } + + fun stopService(context: Context) { + context.stopService(Intent(context, AdvancedUnlockNotificationService::class.java)) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt b/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt index d6d14c4f6..5fe13714e 100644 --- a/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/settings/NestedAppSettingsFragment.kt @@ -44,6 +44,7 @@ import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction import com.kunzisoft.keepass.biometric.BiometricUnlockDatabaseHelper import com.kunzisoft.keepass.education.Education import com.kunzisoft.keepass.icons.IconPackChooser +import com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService import com.kunzisoft.keepass.settings.preference.IconPackListPreference import com.kunzisoft.keepass.utils.UriUtil @@ -214,6 +215,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { val biometricUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.biometric_unlock_enable_key)) val deviceCredentialUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.device_credential_unlock_enable_key)) val autoOpenPromptPreference: SwitchPreference? = findPreference(getString(R.string.biometric_auto_open_prompt_key)) + val tempAdvancedUnlockPreference: SwitchPreference? = findPreference(getString(R.string.temp_advanced_unlock_enable_key)) val biometricUnlockSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { BiometricUnlockDatabaseHelper.biometricUnlockSupported(activity) @@ -237,6 +239,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { deleteKeysMessage(activity) { biometricUnlockEnablePreference.isChecked = false autoOpenPromptPreference?.isEnabled = deviceCredentialChecked + tempAdvancedUnlockPreference?.isEnabled = deviceCredentialChecked } } else { if (deviceCredentialChecked) { @@ -247,6 +250,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { } } else { autoOpenPromptPreference?.isEnabled = true + tempAdvancedUnlockPreference?.isEnabled = true } } true @@ -275,6 +279,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { deleteKeysMessage(activity) { deviceCredentialUnlockEnablePreference.isChecked = false autoOpenPromptPreference?.isEnabled = biometricChecked + tempAdvancedUnlockPreference?.isEnabled = biometricChecked } } else { if (biometricChecked) { @@ -285,6 +290,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { } } else { autoOpenPromptPreference?.isEnabled = true + tempAdvancedUnlockPreference?.isEnabled = true } } true @@ -294,6 +300,16 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { autoOpenPromptPreference?.isEnabled = biometricUnlockEnablePreference?.isChecked == true || deviceCredentialUnlockEnablePreference?.isChecked == true + tempAdvancedUnlockPreference?.isEnabled = biometricUnlockEnablePreference?.isChecked == true + || deviceCredentialUnlockEnablePreference?.isChecked == true + + tempAdvancedUnlockPreference?.setOnPreferenceClickListener { + tempAdvancedUnlockPreference.isChecked = !tempAdvancedUnlockPreference.isChecked + deleteKeysMessage(activity) { + tempAdvancedUnlockPreference.isChecked = !tempAdvancedUnlockPreference.isChecked + } + true + } val deleteKeysFingerprints: Preference? = findPreference(getString(R.string.biometric_delete_all_key_key)) if (biometricUnlockSupported || deviceCredentialUnlockSupported) { @@ -339,6 +355,7 @@ class NestedAppSettingsFragment : NestedSettingsFragment() { } }) } + AdvancedUnlockNotificationService.stopService(activity.applicationContext) CipherDatabaseAction.getInstance(activity.applicationContext).deleteAll() } .setNegativeButton(resources.getString(android.R.string.cancel) From 0abd7d5762bfd5f2a4e88b07259394723af0ee20 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 8 Dec 2020 12:08:28 +0100 Subject: [PATCH 103/113] Update CHANGELOG --- CHANGELOG | 1 + fastlane/metadata/android/en-US/changelogs/47.txt | 1 + fastlane/metadata/android/fr-FR/changelogs/47.txt | 1 + 3 files changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index db0f9f004..a1eb40060 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ KeePassDX(2.9.3) * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 + * Advanced unlock with timeout #102 #437 #566 * Remove default database parameter when the file is no longer accessible #803 * Move OTP button to the first view level in Magikeyboard #587 * Tooltips for Magikeyboard #586 diff --git a/fastlane/metadata/android/en-US/changelogs/47.txt b/fastlane/metadata/android/en-US/changelogs/47.txt index 8c9cc192c..87a5613f5 100644 --- a/fastlane/metadata/android/en-US/changelogs/47.txt +++ b/fastlane/metadata/android/en-US/changelogs/47.txt @@ -1,4 +1,5 @@ * Unlock database by device credentials (PIN/Password/Pattern) #779 #102 + * Advanced unlock with timeout #102 #437 #566 * Remove default database parameter when the file is no longer accessible #803 * Move OTP button to the first view level in Magikeyboard #587 * Tooltips for Magikeyboard #586 diff --git a/fastlane/metadata/android/fr-FR/changelogs/47.txt b/fastlane/metadata/android/fr-FR/changelogs/47.txt index 47c62097b..4491102fa 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/47.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/47.txt @@ -1,4 +1,5 @@ * Déverouillage de base de données avec identifiants de l'appareil (PIN/Password/Pattern) #779 #102 + * Déverouillage avancé avec expiration #102 #437 #566 * Supprimer le parmètre de base de données par défaut quand le fichier n'est plus accessible #803 * Déplacer le bouton OTP vers le premier niveau de vue dans le Magiclavier #587 * Info-bulles pour le Magiclavier #586 From 860b9055c5ba14d217fc179815dececb50112ab0 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 7 Dec 2020 17:03:35 +0000 Subject: [PATCH 104/113] Translated using Weblate (German) Currently translated at 94.9% (466 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/ --- app/src/main/res/values-de/strings.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 499a0326d..8109d0f88 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -474,7 +474,7 @@ Gemeinsame Infos durchsuchen Starten Sie die Anwendung, die das Formular enthält, neu, um die Sperrung zu aktivieren. Automatisches Ausfüllen sperren - Liste der Domains, auf denen ein automatisches Ausfüllen unterbunden wird + Liste der Domains, auf denen ein automatisches Ausfüllen unterlassen wird Liste gesperrter Web-Domains Liste der Apps, in denen ein automatisches Ausfüllen unterbunden wird Liste gesperrter Anwendungen @@ -527,4 +527,9 @@ Gemeinsam genutzte Informationen speichern Sollen alle ausgewählten Knoten wirklich aus dem Papierkorb gelöscht werden\? Der Feldname existiert bereits. + Warnung: Sie müssen sich immer noch an ihr Masterpasswort erinnern, wenn sie die erweiterte Entsperrerkennung verwenden. + Öffne den erweiterten Entsperrdialog zum Speichern von Anmeldeinformationen + Öffnen des erweiterten Entsperrdialogs zum Entsperren der Datenbank + Löschen des Schlüssels zum erweiterten Entsperren + Fortschrittliche Entsperrerkennung \ No newline at end of file From bf27fb1f89a9348e0279f4ecc7c3f38622584102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=2E=20R=C3=BCdinger?= Date: Mon, 7 Dec 2020 17:02:04 +0000 Subject: [PATCH 105/113] Translated using Weblate (German) Currently translated at 94.9% (466 of 491 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/ --- app/src/main/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 8109d0f88..60a099b7b 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -476,7 +476,7 @@ Automatisches Ausfüllen sperren Liste der Domains, auf denen ein automatisches Ausfüllen unterlassen wird Liste gesperrter Web-Domains - Liste der Apps, in denen ein automatisches Ausfüllen unterbunden wird + Liste der Apps, in denen ein automatisches Ausfüllen verhindert wird Liste gesperrter Anwendungen Suche Web-Domains mit Subdomain-Beschränkungen Subdomain-Suche From 407a1db101ff509e503e58e1ae62c528b12c3469 Mon Sep 17 00:00:00 2001 From: Retrial Date: Tue, 8 Dec 2020 21:00:50 +0000 Subject: [PATCH 106/113] Translated using Weblate (Greek) Currently translated at 100.0% (498 of 498 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/ --- app/src/main/res/values-el/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 1cb664832..4ac155526 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -534,4 +534,13 @@ Προηγμένο ξεκλείδωμα σφάλμα: %1$s Δεν είναι δυνατή η ανάγνωση του προηγμένου κλειδιού ξεκλειδώματος. Διαγράψτε το και επαναλάβετε τη διαδικασία αναγνώρισης ξεκλειδώματος. Εξαγωγή διαπιστευτηρίων βάσης δεδομένων με προηγμένο ξεκλείδωμα δεδομένων + Συνδέστε τον κωδικό πρόσβασής σας με το σαρωμένο βιομετρικό ή τα διαπιστευτήρια της συσκευής σας για να ξεκλειδώσετε γρήγορα τη βάση δεδομένων σας. + Προηγμένο ξεκλείδωμα βάσης δεδομένων + Χρονικό όριο προηγμένου ξεκλειδώματος + Προσωρινό προηγμένο ξεκλείδωμα + Μην αποθηκεύετε κανένα κρυπτογραφημένο περιεχόμενο για να χρησιμοποιήσετε προηγμένο ξεκλείδωμα + Διάρκεια της χρήσης προηγμένου ξεκλειδώματος πριν την διαγραφή του περιεχομένου + Λήξη προηγμένου ξεκλειδώματος + Πατήστε για διαγραφή προηγμένων κλειδιών ξεκλειδώματος + Περιεχόμενα \ No newline at end of file From 8ce183c4c9d52a7ed2da1ebb58751f54622144b0 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Tue, 8 Dec 2020 12:08:12 +0000 Subject: [PATCH 107/113] Translated using Weblate (French) Currently translated at 100.0% (498 of 498 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/ --- app/src/main/res/values-fr/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8c083cc5e..5b8ecf22b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -543,4 +543,13 @@ Sélection d\'une entrée Retour au clavier précédent Champs customisés + Lier votre mot de passe à vos informations d\'identification biométriques ou de périphérique scannées pour déverrouiller rapidement votre base de données. + Déverrouillage avancé de la base de données + Délai du déverrouillage avancé + Durée d\'utilisation du déverrouillage avancé avant de supprimer son contenu + Expiration du déverrouillage avancé + Ne stocker aucun contenu crypté pour utiliser le déverrouillage avancé + Déverrouillage avancé temporaire + Appuyez pour supprimer les clés de déverrouillage avancées + Contenu \ No newline at end of file From fd96f6367da370b7d60e2913d5fc6731c3ae3a05 Mon Sep 17 00:00:00 2001 From: HARADA Hiroyuki Date: Tue, 8 Dec 2020 12:21:25 +0000 Subject: [PATCH 108/113] Translated using Weblate (Japanese) Currently translated at 100.0% (498 of 498 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/ --- app/src/main/res/values-ja/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index b41871755..ee2aebe3d 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -534,4 +534,13 @@ ログイン プロンプトを開いて認証情報を保存する ログイン プロンプトを開いてロックを解除する エントリーを選択 + スキャンした生体情報またはデバイス認証情報にパスワードをリンクして、データベースのロックをすばやく解除します。 + データベースの高度なロック解除 + 高度なロック解除のタイムアウト + コンテンツを削除して高度なロック解除を終了するまでの期間 + 高度なロック解除の有効期限 + 高度なロック解除に使用する暗号化コンテンツを保存しません + 一時的な高度なロック解除 + タップして高度なロック解除用の鍵を削除する + コンテンツ \ No newline at end of file From 6ea4afe75b1e65fb493cca0d9cd1b26fe6bf7704 Mon Sep 17 00:00:00 2001 From: solokot Date: Tue, 8 Dec 2020 12:16:39 +0000 Subject: [PATCH 109/113] Translated using Weblate (Russian) Currently translated at 100.0% (498 of 498 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/ --- app/src/main/res/values-ru/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index acf1b6cdd..fb0e8806f 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -534,4 +534,13 @@ Пользовательские поля Backspace Выберите запись + Расширенная разблокировка базы + Ожидание расширенной разблокировки + Свяжите пароль с отсканированными биометрическими данными или учётными данными устройства, чтобы быстро разблокировать базу. + Продолжительность использования содержимого расширенной разблокировки до его удаления + Срок действия расширенной разблокировки + Временная расширенная разблокировка + Не сохранять зашифрованное содержимое для использования расширенной разблокировки + Нажмите, чтобы удалить ключи расширенной разблокировки + Содержимое \ No newline at end of file From 1feecd559dab3e0507cde22bc455afc57e463728 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Tue, 8 Dec 2020 14:39:25 +0000 Subject: [PATCH 110/113] Translated using Weblate (Ukrainian) Currently translated at 100.0% (498 of 498 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/ --- app/src/main/res/values-uk/strings.xml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index b8d979f87..d2466dd99 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -25,7 +25,7 @@ Додати групу Алгоритм шифрування Час очікування застосунку - Час очікування до блокування бази даних + Час бездіяльности до блокування бази даних Застосунок Параметри застосунку Дужки @@ -206,7 +206,7 @@ Поле файла ключа Налаштування головного ключа Параметри безпеки - Розширені параметри розблокування + Розширене розблокування Заповнення форм Скопійовано %1$s Створення бази даних… @@ -353,7 +353,7 @@ %1$s доступне на Magikeyboard Запис Час очікування до очищення клавіатури від запису - Час очікування + Обмеження часу Закрити базу даних під час закриття сповіщення Очищати під час закриття Показувати сповіщення, коли запис доступний @@ -534,4 +534,13 @@ Вибрати запис Повернутися до попередньої клавіатури Власні поля + Час дії розширеного розблокування + Час дії розширеного розблокування + Пов’яжіть свій пароль зі сканованими біометричними даними або даними пристрою, щоб швидко розблокувати базу даних. + Розширене розблокування бази даних + Тривалість використання розширеного розблокування перед видаленням його вмісту + Не зберігайте зашифрований вміст для використання розширеного розблокування + Тимчасове розширене розблокування + Торкнутися, щоб видалити клавіші розширеного розблокування + Вміст \ No newline at end of file From 21890894ae4a66a5480438c1f14838b9add016b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Tue, 8 Dec 2020 16:12:15 +0000 Subject: [PATCH 111/113] Translated using Weblate (Turkish) Currently translated at 100.0% (498 of 498 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/ --- app/src/main/res/values-tr/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index bae07da61..b342149c1 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -518,4 +518,13 @@ Girdi seç Önceki klavyeye geri dön Özel alanlar + Veri tabanınızın kilidini hızlı bir şekilde açmak için parolanızı taranmış biyometrik veya aygıt kimlik bilgilerinize bağlayın. + Gelişmiş veri tabanı kilidi açma + Gelişmiş kilit açma zaman aşımı + İçeriğini silmeden önce gelişmiş kilit açma kullanımının süresi + Gelişmiş kilit açma süre sonu + Gelişmiş kilit açmayı kullanmak için herhangi bir şifrelenmiş içeriği saklama + Geçici gelişmiş kilit açma + Gelişmiş kilit açma anahtarlarını silmek için dokunun + İçerik \ No newline at end of file From 6e61e8172a077d1ed329891601ed827da06caa15 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Tue, 8 Dec 2020 23:30:00 +0000 Subject: [PATCH 112/113] Translated using Weblate (Croatian) Currently translated at 99.7% (497 of 498 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/ --- app/src/main/res/values-hr/strings.xml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 47a04e2d4..6292d5920 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -195,7 +195,7 @@ Biometrijsko otključavanje Otvaranje baze podataka skeniranjem biometrike Izbriši ključeve šifriranja - Izbriši sve ključeve šifriranja povezane s prepoznavanjem naprednog otključavanja + Izbriši sve ključeve šifriranja povezane s naprednim prepoznavanjem otključavanja Nije moguće pronaći odgovarajući hardver. Ime datoteke Putanja @@ -498,19 +498,19 @@ Modus spremanja Modus pretrage Ime polja već postoji. - Izbrisati sve ključeve šifriranja povezane s prepoznavanjem naprednog otključavanja\? + Izbrisati sve ključeve šifriranja povezane s naprednim prepoznavanjem otključavanja\? Upiši lozinku i zatim pritisni gumb „Napredno otključavanje”. - Otvori bazu podataka pomoću prepoznavanja naprednog otključavanja + Otvori bazu podataka pomoću naprednog prepoznavanja otključavanja Upozorenje: Ako koristiš prepoznavanje naprednog otključavanja morat ćeš i dalje znati glavnu lozinku. Izbriši ključ naprednog otključavanja - Prepoznavanje naprednog otključavanja + Napredno prepoznavanje otključavanja Nije moguće pokrenuti prozor naprednog otključavanja. Greška naprednog otključavanja: %1$s Izdvoji podatake za prijavu na bazu podataka pomoću podataka naprednog otključavanja Otvori prozor naprednog otključavanja za spremanje podataka za prijavu Otvori prozor naprednog otključavanja za otključavanje baze podataka Nije moguće prepoznati digitanlni otisak za napredno otključavanje - Nije moguće pročitati napredni ključ za otključavanje. Izbriši ga i ponovi postupak prepoznavanja. + Nije moguće pročitati ključ naprednog otključavanja. Izbriši ga i ponovi postupak prepoznavanja. Tipka Enter Tipka Backspace Odaberi unos @@ -519,4 +519,11 @@ Omogućuje otvaranje baze podataka pomoću podataka za prijavu Otključavanje s podacima za prijavu uređaja Podaci za prijavu uređaja + Dodirni za brisanje ključeva naprednog otključavanja + Napredno otključavanje baze podataka + Vremensko ograničenje neprednog otključavanja + Trajanje korištenja naprednog otključavanja prije brisanja sadržaja + Istek naprednog otključavanja + Nemoj spremati šifrirani sadržaj za napredno otključavanje + Sadržaj \ No newline at end of file From f27979e72979c84c1185cf8cfe59b61e62574609 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Wed, 9 Dec 2020 14:21:43 +0000 Subject: [PATCH 113/113] Translated using Weblate (Croatian) Currently translated at 100.0% (498 of 498 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/ --- app/src/main/res/values-hr/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 6292d5920..5efeb03a6 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -526,4 +526,5 @@ Istek naprednog otključavanja Nemoj spremati šifrirani sadržaj za napredno otključavanje Sadržaj + Privremeno napredno otključavanje \ No newline at end of file