diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt index c4236b795..aa7051457 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.kt @@ -84,6 +84,7 @@ import com.kunzisoft.keepass.database.element.node.Node import com.kunzisoft.keepass.database.element.node.NodeId import com.kunzisoft.keepass.database.element.node.NodeIdUUID import com.kunzisoft.keepass.database.element.node.Type +import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException import com.kunzisoft.keepass.database.helper.SearchHelper import com.kunzisoft.keepass.database.search.SearchParameters import com.kunzisoft.keepass.education.GroupActivityEducation @@ -116,6 +117,7 @@ import com.kunzisoft.keepass.view.applyWindowInsets import com.kunzisoft.keepass.view.hideByFading import com.kunzisoft.keepass.view.setTransparentNavigationBar import com.kunzisoft.keepass.view.showActionErrorIfNeeded +import com.kunzisoft.keepass.view.toastError import com.kunzisoft.keepass.view.updateLockPaddingStart import com.kunzisoft.keepass.viewmodels.GroupEditViewModel import com.kunzisoft.keepass.viewmodels.GroupViewModel @@ -1767,12 +1769,7 @@ class GroupActivity : DatabaseLockActivity(), ) onLaunchActivitySpecialMode() } else { - Toast.makeText( - activity.applicationContext, - R.string.autofill_read_only_save, - Toast.LENGTH_LONG - ) - .show() + activity.toastError(RegisterInReadOnlyDatabaseException()) onCancelSpecialMode() } } @@ -1884,10 +1881,7 @@ class GroupActivity : DatabaseLockActivity(), } ) } else { - Toast.makeText(activity.applicationContext, - R.string.autofill_read_only_save, - Toast.LENGTH_LONG) - .show() + activity.toastError(RegisterInReadOnlyDatabaseException()) onCancelSpecialMode() } }, @@ -1949,10 +1943,7 @@ class GroupActivity : DatabaseLockActivity(), ) onLaunchActivitySpecialMode() } else { - Toast.makeText(activity.applicationContext, - R.string.autofill_read_only_save, - Toast.LENGTH_LONG) - .show() + activity.toastError(RegisterInReadOnlyDatabaseException()) onCancelSpecialMode() } } diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt index 9caf132f0..14f6f1612 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt @@ -576,9 +576,9 @@ class MainCredentialActivity : DatabaseModeActivity() { mSpecialMode == SpecialMode.SAVE || mSpecialMode == SpecialMode.REGISTRATION) ) { - Log.e(TAG, getString(R.string.autofill_read_only_save)) + Log.e(TAG, getString(R.string.error_save_read_only)) Snackbar.make(coordinatorLayout, - R.string.autofill_read_only_save, + R.string.error_save_read_only, Snackbar.LENGTH_LONG).asError().show() } else { databaseFileUri?.let { databaseUri -> diff --git a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/AutofillLauncherActivity.kt b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/AutofillLauncherActivity.kt index 5fcbb4990..a52b9a492 100644 --- a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/AutofillLauncherActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/AutofillLauncherActivity.kt @@ -41,12 +41,14 @@ import com.kunzisoft.keepass.credentialprovider.autofill.AutofillHelper import com.kunzisoft.keepass.credentialprovider.autofill.CompatInlineSuggestionsRequest import com.kunzisoft.keepass.credentialprovider.autofill.KeeAutofillService import com.kunzisoft.keepass.database.ContextualDatabase +import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException import com.kunzisoft.keepass.database.helper.SearchHelper import com.kunzisoft.keepass.model.RegisterInfo import com.kunzisoft.keepass.model.SearchInfo import com.kunzisoft.keepass.utils.AppUtil import com.kunzisoft.keepass.utils.getParcelableCompat import com.kunzisoft.keepass.utils.getParcelableExtraCompat +import com.kunzisoft.keepass.view.toastError @RequiresApi(api = Build.VERSION_CODES.O) class AutofillLauncherActivity : DatabaseModeActivity() { @@ -236,7 +238,7 @@ class AutofillLauncherActivity : DatabaseModeActivity() { } private fun showReadOnlySaveMessage() { - Toast.makeText(this.applicationContext, R.string.autofill_read_only_save, Toast.LENGTH_LONG).show() + toastError(RegisterInReadOnlyDatabaseException()) } companion object { diff --git a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/EntrySelectionLauncherActivity.kt b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/EntrySelectionLauncherActivity.kt index e3b2f4dad..b924f2368 100644 --- a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/EntrySelectionLauncherActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/activity/EntrySelectionLauncherActivity.kt @@ -30,12 +30,14 @@ import com.kunzisoft.keepass.activities.GroupActivity import com.kunzisoft.keepass.activities.legacy.DatabaseModeActivity import com.kunzisoft.keepass.credentialprovider.magikeyboard.MagikeyboardService import com.kunzisoft.keepass.database.ContextualDatabase +import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException import com.kunzisoft.keepass.database.helper.SearchHelper import com.kunzisoft.keepass.model.SearchInfo import com.kunzisoft.keepass.otp.OtpEntryFields import com.kunzisoft.keepass.utils.AppUtil import com.kunzisoft.keepass.utils.KeyboardUtil.isKeyboardActivatedInSettings import com.kunzisoft.keepass.utils.getParcelableCompat +import com.kunzisoft.keepass.view.toastError /** * Activity to search or select entry in database, @@ -138,10 +140,7 @@ class EntrySelectionLauncherActivity : DatabaseModeActivity() { false ) } else { - Toast.makeText(applicationContext, - R.string.autofill_read_only_save, - Toast.LENGTH_LONG) - .show() + toastError(RegisterInReadOnlyDatabaseException()) } } else if (searchShareForMagikeyboard) { MagikeyboardService.performSelection( @@ -182,10 +181,7 @@ class EntrySelectionLauncherActivity : DatabaseModeActivity() { false ) } else { - Toast.makeText(applicationContext, - R.string.autofill_read_only_save, - Toast.LENGTH_LONG) - .show() + toastError(RegisterInReadOnlyDatabaseException()) } } else if (searchShareForMagikeyboard) { GroupActivity.launchForKeyboardSelectionResult( diff --git a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/PasskeyProviderService.kt b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/PasskeyProviderService.kt index 9403f8eca..ab1ac8273 100644 --- a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/PasskeyProviderService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/PasskeyProviderService.kt @@ -50,8 +50,11 @@ import com.kunzisoft.keepass.credentialprovider.passkey.data.PublicKeyCredential import com.kunzisoft.keepass.credentialprovider.passkey.data.PublicKeyCredentialRequestOptions import com.kunzisoft.keepass.database.ContextualDatabase import com.kunzisoft.keepass.database.DatabaseTaskProvider +import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException import com.kunzisoft.keepass.database.helper.SearchHelper import com.kunzisoft.keepass.model.SearchInfo +import com.kunzisoft.keepass.view.toastError +import java.io.IOException import java.time.Instant @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) @@ -218,18 +221,15 @@ class PasskeyProviderService : CredentialProviderService() { ) { Log.d(javaClass.simpleName, "onBeginCreateCredentialRequest called") try { - processCreateCredentialRequest(request)?.let { response -> - callback.onResult(response) - } ?: let { - callback.onError(CreateCredentialUnknownException()) - } + callback.onResult(processCreateCredentialRequest(request)) } catch (e: Exception) { Log.e(javaClass.simpleName, "onBeginCreateCredentialRequest error", e) - callback.onError(CreateCredentialUnknownException()) + toastError(e) + callback.onError(CreateCredentialUnknownException(e.localizedMessage)) } } - private fun processCreateCredentialRequest(request: BeginCreateCredentialRequest): BeginCreateCredentialResponse? { + private fun processCreateCredentialRequest(request: BeginCreateCredentialRequest): BeginCreateCredentialResponse { when (request) { is BeginCreatePublicKeyCredentialRequest -> { // Request is passkey type @@ -237,8 +237,7 @@ class PasskeyProviderService : CredentialProviderService() { } } // request type not supported - Log.w(javaClass.simpleName, "unknown type of BeginCreateCredentialRequest") - return null + throw IOException("unknown type of BeginCreateCredentialRequest") } private fun MutableList.addPendingIntentCreationNewEntry( @@ -279,9 +278,7 @@ class PasskeyProviderService : CredentialProviderService() { searchInfo = searchInfo, onItemsFound = { database, items -> if (database.isReadOnly) { - throw CreateCredentialUnknownException( - "Unable to register or overwrite a passkey in a database that is read only" - ) + throw RegisterInReadOnlyDatabaseException() } else { // To create a new entry createEntries.addPendingIntentCreationNewEntry(accountName, searchInfo) @@ -312,9 +309,7 @@ class PasskeyProviderService : CredentialProviderService() { onItemNotFound = { database -> // To create a new entry if (database.isReadOnly) { - throw CreateCredentialUnknownException( - "Unable to register a new passkey in a database that is read only" - ) + throw RegisterInReadOnlyDatabaseException() } else { createEntries.addPendingIntentCreationNewEntry(accountName, searchInfo) } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/helper/LocalizedHelper.kt b/app/src/main/java/com/kunzisoft/keepass/database/helper/LocalizedHelper.kt index 05bfa3c85..0cf0ea5d1 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/helper/LocalizedHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/helper/LocalizedHelper.kt @@ -27,7 +27,6 @@ import com.kunzisoft.keepass.database.element.template.TemplateField import com.kunzisoft.keepass.database.exception.CopyEntryDatabaseException import com.kunzisoft.keepass.database.exception.CopyGroupDatabaseException import com.kunzisoft.keepass.database.exception.CorruptedDatabaseException -import com.kunzisoft.keepass.database.exception.DatabaseException import com.kunzisoft.keepass.database.exception.DatabaseInputException import com.kunzisoft.keepass.database.exception.DatabaseOutputException import com.kunzisoft.keepass.database.exception.DuplicateUuidDatabaseException @@ -37,10 +36,12 @@ import com.kunzisoft.keepass.database.exception.HardwareKeyDatabaseException import com.kunzisoft.keepass.database.exception.InvalidAlgorithmDatabaseException import com.kunzisoft.keepass.database.exception.InvalidCredentialsDatabaseException import com.kunzisoft.keepass.database.exception.KDFMemoryDatabaseException +import com.kunzisoft.keepass.database.exception.LocalizedException import com.kunzisoft.keepass.database.exception.MergeDatabaseKDBException import com.kunzisoft.keepass.database.exception.MoveEntryDatabaseException import com.kunzisoft.keepass.database.exception.MoveGroupDatabaseException import com.kunzisoft.keepass.database.exception.NoMemoryDatabaseException +import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException import com.kunzisoft.keepass.database.exception.SignatureDatabaseException import com.kunzisoft.keepass.database.exception.UnknownDatabaseLocationException import com.kunzisoft.keepass.database.exception.VersionDatabaseException @@ -52,12 +53,13 @@ import com.kunzisoft.keepass.model.PasskeyEntryFields.FIELD_USERNAME import com.kunzisoft.keepass.model.PasskeyEntryFields.FIELD_USER_HANDLE import com.kunzisoft.keepass.model.PasskeyEntryFields.PASSKEY_FIELD -fun DatabaseException.getLocalizedMessage(resources: Resources): String? = +fun LocalizedException.getLocalizedMessage(resources: Resources): String? = when (this) { is FileNotFoundDatabaseException -> resources.getString(R.string.file_not_found_content) is CorruptedDatabaseException -> resources.getString(R.string.corrupted_file) is InvalidAlgorithmDatabaseException -> resources.getString(R.string.invalid_algorithm) is UnknownDatabaseLocationException -> resources.getString(R.string.error_location_unknown) + is RegisterInReadOnlyDatabaseException -> resources.getString(R.string.error_save_read_only) is HardwareKeyDatabaseException -> resources.getString(R.string.error_hardware_key_unsupported) is EmptyKeyDatabaseException -> resources.getString(R.string.error_empty_key) is SignatureDatabaseException -> resources.getString(R.string.invalid_db_sig) diff --git a/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt b/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt index 0ce415a2d..732896464 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/ViewUtil.kt @@ -62,6 +62,7 @@ import androidx.core.view.updatePaddingRelative import com.google.android.material.appbar.CollapsingToolbarLayout import com.google.android.material.snackbar.Snackbar import com.kunzisoft.keepass.R +import com.kunzisoft.keepass.database.exception.LocalizedException import com.kunzisoft.keepass.database.helper.getLocalizedMessage import com.kunzisoft.keepass.settings.PreferencesUtil import com.kunzisoft.keepass.tasks.ActionRunnable @@ -237,6 +238,17 @@ fun View.updateLockPaddingStart() { } } +fun Context.toastError(e: Throwable) { + Toast.makeText( + applicationContext, + if (e is LocalizedException) + e.getLocalizedMessage(resources) + else + e.localizedMessage, + Toast.LENGTH_LONG + ).show() +} + fun Context.showActionErrorIfNeeded(result: ActionRunnable.Result) { if (!result.isSuccess) { result.exception?.getLocalizedMessage(resources)?.let { errorMessage -> diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 7c33a3b1f..f0409bf6b 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -493,7 +493,7 @@ تعابير نمطية أبقِ الشاشة شغّالة أبرز العناصر لتعلم طريقة عمل التطبيق - غير مسموح حفظ البيانات في قاعدة بيانات مفتوحة للقراءة فقط. + غير مسموح حفظ البيانات في قاعدة بيانات مفتوحة للقراءة فقط. أُضيف اقتراح ملء تلقائي. الرجوع للوحة المفاتيح السابقة تلقائيًا في شاشة بيانات اعتماد قاعدة البيانات اعرض خيارًا يسمح للمستخدم باختيار مدخلة من قاعدة البيانات diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index f5fdd262a..d0d9d4f54 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -566,7 +566,7 @@ Veb domenlərin avtomatik olaraq doldurulmasını əngəlləyən bloklama siyahısı Avtomatik doldurmanı blokla Bloklamanı aktiv etmək üçün anketin daxil olduğu tətbiqi yenidən başladın. - Yazma-qorumalı (dəyişməz) olaraq açılan məlumat bazasında yeni məlumatları yadda saxlamağa icazə verilmir. + Yazma-qorumalı (dəyişməz) olaraq açılan məlumat bazasında yeni məlumatları yadda saxlamağa icazə verilmir. Əgər şəxsiyyəti təsdiq edən məlumatlar seçilməyibsə, \"Aç\" düyməsinin sıxılmasına icazə ver Şifrəni sil Məlumat bazasına bağlantı cəhdindən sonra daxil edilmiş şifrəni sil diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index d0ab35339..7fcd530c9 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -549,7 +549,7 @@ Чорны спіс, які перашкаджае аўтазапаўненню вэб-даменаў Заблакаваць аўтазапаўненне Перазапусціце праграму, якая змяшчае форму, каб актываваць блакаванне. - Захаванне дадзеных недапушчальна для базы дадзеных, адкрытай толькі для чытання. + Захаванне дадзеных недапушчальна для базы дадзеных, адкрытай толькі для чытання. Прапановы аўтазапаўнення дададзены. Дазволіць без галоўнага ключа Дазваляе націснуць кнопку Адкрыць, калі не выбраны ўліковыя дадзеныя diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index cf6f3a3a3..1586dbea0 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -571,7 +571,7 @@ Възникна грешка при извършване на действие с хранилището. Време за изчакване Черен списък на приложения - В хранилище, отворено само за четене не могат да бъдат запазвани промени. + В хранилище, отворено само за четене не могат да бъдат запазвани промени. Група не може да бъде преместена тук. Изчистване при затваряне При ръчен избор на запис прави опит за запазване на информация от търсене за по-лесно бъдещо използване diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 230d3c5b2..d0ad92242 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -643,7 +643,7 @@ Torna automàticament al teclat anterior després de bloquejar la base de dades Selecciona una entrada Demana desar les dades quan es completi l\'emplenament d\'un formulari - No es permet desar dades en una base de dades oberta en mode només de lectura. + No es permet desar dades en una base de dades oberta en mode només de lectura. Torna a mostrar tota la informació educativa Reinicialitza els consells educatius Obre una base de dades existent diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 4d4d00b19..2322b6fd0 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -465,7 +465,7 @@ Nahrát přílohu k záznamu pro uložení důležitých externích dat. Ukáže UUID propojené se záznamem nebo skupinou Ukázat UUID - Uložení dat není povoleno, je-li databáze v režimu pouze pro čtení. + Uložení dat není povoleno, je-li databáze v režimu pouze pro čtení. Po dokončení vyplnění formuláře se tázat na uložení dat Tázat se před uložením Pokusit se uložit údaje hledání pro příští použití, vybíráte-li záznam manuálně diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index c829ec61a..e0e172198 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -451,7 +451,7 @@ Vis UUID Overfør %1$s Vedhæft fil - Det er ikke tilladt at gemme data i en database, der er åbnet som skrivebeskyttet. + Det er ikke tilladt at gemme data i en database, der er åbnet som skrivebeskyttet. Spørg om du vil gemme data, når en formular er udfyldt Spørg om du vil gemme data Gem søgeoplysninger diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index aeb52a8a6..86798700f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -479,7 +479,7 @@ Datei trotzdem hinzufügen\? Zeigt die mit einem Eintrag oder einer Gruppe verknüpfte UUID an UUID anzeigen - Das Speichern von Daten ist bei einer schreibgeschützt geöffneten Datenbank nicht möglich. + Das Speichern von Daten ist bei einer schreibgeschützt geöffneten Datenbank nicht möglich. Datenbank schließen Nach dem Sperren der Datenbank automatisch zur vorherigen Tastatur wechseln Datenbank sperren diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 477cb5ef0..7e9153e24 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -464,7 +464,7 @@ Προσθήκη είδους Εμφανίζει το UUID που είναι συνδεδεμένο σε μια καταχώρηση ή σε μια ομάδα Εμφάνιση UUID - Δεν επιτρέπεται η αποθήκευση δεδομένων για μια βάση δεδομένων που ανοίγει ως μόνο για ανάγνωση. + Δεν επιτρέπεται η αποθήκευση δεδομένων για μια βάση δεδομένων που ανοίγει ως μόνο για ανάγνωση. Ζητήστε αποθήκευση δεδομένων όταν ολοκληρωθεί η συμπλήρωση μιας φόρμας Ζητήστε να αποθηκεύσετε δεδομένα Προσπαθήστε να αποθηκεύσετε πληροφορίες αναζήτησης όταν κάνετε μια χειροκίνητη επιλογή καταχώρησης για ευκολότερες μελλοντικές χρήσεις diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index d19a9c8a4..b0de87409 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -473,7 +473,7 @@ Establecer contraseña de un solo uso Vincule su contraseña con su credencial biométrica o del dispositivo escaneada para desbloquear rápidamente su base de datos. Desbloqueo de la base de datos de los dispositivos - No se permite guardar datos en una base de datos abierta como de solo lectura. + No se permite guardar datos en una base de datos abierta como de solo lectura. Reinicia la aplicación que contiene el formulario para activar el bloqueo. Lista de dominios web en los que se impide el autocompletado Lista de bloqueo de dominios web diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 5d52d5179..70afed233 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -528,7 +528,7 @@ Keelatud rakenduste loend Keelamise jõustamiseks käivita antud sisendvormiga rakendus uuesti. Automaattäite soovitused on lisatud. - Kui andmebaas on avatud ainult lugemiseks, siis andmete salvestamine pole võimalik. + Kui andmebaas on avatud ainult lugemiseks, siis andmete salvestamine pole võimalik. Kustutab salasõna, mis oli kasutusel andmebaasiga ühenduse loomise ajal Luba teistel rakendusel teha sellest rakendusest ekraanitõmmist või salvestada tema ekraanivaadet Sulge andmebaas diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 75d1d7528..5554b44bd 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -273,7 +273,7 @@ Lerroko iradokizuna Eskuzko hautatzea Betetze automatikorako gomendioak erakusten saiatzen da teklatu bateragarri baten bidez - Ezin dira datuak gorde irakurketarako soilik irekitako datu-base batean. + Ezin dira datuak gorde irakurketarako soilik irekitako datu-base batean. Berrabiarazi formularioa duen aplikazioa blokeoa aktibatzeko. Ezabatu pasahitza Baimendu \"Ireki\" botoia sakatzea kredentzialak hautatu gabe diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index c05b359c4..4d08029d8 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -481,7 +481,7 @@ Données Affiche l’UUID lié à une entrée ou un groupe Afficher l’UUID - L’enregistrement des données n’est pas autorisé pour une base de données ouverte en lecture seule. + L’enregistrement des données n’est pas autorisé pour une base de données ouverte en lecture seule. Demande de sauvegarde des données à la fin du remplissage d\'un formulaire Demander à enregistrer des données Essaye d’enregistrer les informations de recherche lors de la sélection manuelle d’une entrée pour faciliter les utilisations futures diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 9dc087956..f1c833c0b 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -546,7 +546,7 @@ Ao ver unha entrada en KeePassDX, completar con esta o Magikeyboard Mudar automaticamente ao teclado previo despois de bloquear a base de datos Pedir para gardar datos - Non é posíbel gardar nunha base datos aberta en modo só lectura. + Non é posíbel gardar nunha base datos aberta en modo só lectura. Pedir para gardar datos cando terminar de autocompletar un formulario Borrar o contrasinal introducido após un intento de conexión a unha base de datos Restabelecer suxestións educativas diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 7dad7cd5f..427151525 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -461,7 +461,7 @@ Pokušaj spremiti podatke prilikom odabira ručnog unosa za jednostavniju buduću upotrebu Obavijest Nije dopušteno spremati novi element u zaštićenoj bazi podataka. - Spremanje podataka nije dopušteno za bazu podataka koja je otvorena u zaštićenom stanju. + Spremanje podataka nije dopušteno za bazu podataka koja je otvorena u zaštićenom stanju. Prikazuje UUID povezan s unosom ili grupom Prikaži UUID Zatraži spremanje podataka kad se obrazac ispuni diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 1c20d6f96..ee97ac1b7 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -564,7 +564,7 @@ Tiltólista, amely megakadályozza a webes domainek automatikus kitöltését Automatikus kitöltés letiltása Indítsa újra az űrlapot tartalmazó alkalmazást a tiltás aktiválásához. - Az adatmentés nem engedélyezett, mert az adatbázis írásvédettként van megnyitva. + Az adatmentés nem engedélyezett, mert az adatbázis írásvédettként van megnyitva. Automatikus kitöltési javaslatok hozzáadva. Töltsön fel egy mellékletet a bejegyzéséhez, hogy mentse a fontos külső adatokat. Megszakítva! diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index ebc10170b..f654f50cc 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -549,7 +549,7 @@ Secara otomatis beralih kembali ke keyboard sebelumnya setelah menjalankan \"Tindakan tombol otomatis\" Secara otomatis beralih kembali ke keyboard sebelumnya di layar kredensial basis data Tampilkan opsi untuk memungkinkan pengguna memilih entri basis data - Penyimpanan data tidak diperbolehkan untuk basis data yang dibuka sebagai baca-saja. + Penyimpanan data tidak diperbolehkan untuk basis data yang dibuka sebagai baca-saja. Izinkan tidak ada kunci utama Memungkinkan mengetuk tombol \"Buka\" jika tidak ada kredensial yang dipilih Menghapus kata sandi yang dimasukkan setelah upaya koneksi ke basis data diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index c4318b26d..39a663690 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -467,7 +467,7 @@ Info credenziali Visualizza l\'UUID collegato a una voce o a un gruppo Mostra UUID - Il salvataggio dei dati non è consentito per un database aperto in sola lettura. + Il salvataggio dei dati non è consentito per un database aperto in sola lettura. Chiedi di salvare i dati quando l\'immissione dei dati in un form viene completata Chiedi di salvare i dati Provare a salvare le informazioni di ricerca quando viene selezionato manualmente un elemento per facilitarne gli utilizzi futuri diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 999226784..2986d8207 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -505,7 +505,7 @@ העלה %1$s בוטל! B - שמירת נתונים אינה מורשת עבור מסד נתונים שנפתח לקריאה בלבד. + שמירת נתונים אינה מורשת עבור מסד נתונים שנפתח לקריאה בלבד. Enter חסום מילוי אוטומטי העלאת קובץ זה תחליף את הקובץ הקיים. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 3884edb29..081afdce8 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -472,7 +472,7 @@ 有効期限切れのエントリーは非表示になります UUID を表示 エントリーやグループにリンクされた UUID を表示します - データの保存は読み取り専用として開かれたデータベースでは許可されていません。 + データの保存は読み取り専用として開かれたデータベースでは許可されていません。 保存モード 検索モード フィールド名はすでに存在します。 diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index ae25b5488..9a76a838c 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -427,7 +427,7 @@ Prøv å lagre søkeinformasjon når du velger manuell inntasting for enklere fremtidig bruk Blokker autofyll Start appen på nytt som inneholder skjemaet for å aktivere blokkeringen. - Datalagring er ikke tillatt for en database som er skrivebeskyttet. + Datalagring er ikke tillatt for en database som er skrivebeskyttet. Forslag til autofyll er lagt til. Koble passordet ditt til den skannede biometriske eller enhetslegitimasjonen for å raskt låse opp databasen din. Sett opp OTP diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 0e4e41e9b..34e564dfb 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -466,7 +466,7 @@ Verwijdert bijlagen die in de database staan, maar niet aan een item zijn gekoppeld Toont de UUID die is gekoppeld aan een item of een groep UUID tonen - Het opslaan van gegevens is niet toegestaan voor een database die is geopend als alleen-lezen. + Het opslaan van gegevens is niet toegestaan voor een database die is geopend als alleen-lezen. Vraag om gegevens op te slaan wanneer het invullen van een formulier is voltooid Vragen om gegevens op te slaan Probeer zoekinformatie op te slaan bij het maken van een handmatige invoerselectie voor eenvoudiger toekomstig gebruik diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index f72d8889e..47c75362e 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -463,7 +463,7 @@ Informacje o poświadczeniach Wyświetla identyfikator UUID powiązany z wpisem lub grupą Pokaż UUID - Zapisywanie danych nie jest dozwolone dla bazy danych otwartej tylko do odczytu. + Zapisywanie danych nie jest dozwolone dla bazy danych otwartej tylko do odczytu. Pytaj o zapisanie danych po zakończeniu wypełniania formularza Pytaj o zapisanie danych Staraj się zapisywać informacje wyszukiwania podczas dokonywania ręcznego wyboru wpisu, aby ułatwić sobie przyszłe użycie diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 70b8dcc2e..585c3e2d7 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -550,7 +550,7 @@ Vincule sua senha à credencial biométrica ou do dispositivo digitalizada para desbloquear rapidamente seu banco de dados. Desbloqueio do banco de dados do dispositivo Sugestões de preenchimento automático adicionadas. - A salvação de dados não é permitida para um banco de dados aberto apenas como leitura. + A salvação de dados não é permitida para um banco de dados aberto apenas como leitura. Pedir para salvar dados ao terminar de preencher um formulário Perguntar para salvar dados Tente salvar informações de pesquisa ao fazer uma seleção manual de entrada para facilitar usos posteriores diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 858b750e0..56b8e4dc0 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -503,7 +503,7 @@ Ligue a sua palavra-passe às suas credenciais biométricas ou do dispositivo para desbloquear rapidamente a sua base de dados. Desbloqueio da base de dados do dispositivo Adicionadas sugestões de preenchimento automático. - Não é possível guardar dados numa base de dados aberta apenas com permissão de leitura. + Não é possível guardar dados numa base de dados aberta apenas com permissão de leitura. Pedir para guardar dados quando terminar de preencher um formulário Pedir para guardar dados Tentar guardar as informações de pesquisas ao fazer uma seleção de entrada manual para facilitar utilizações posteriores diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 3a04f2bd8..7cdc75db7 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -484,7 +484,7 @@ Cancelado! Desbloqueio da base de dados do dispositivo Adicionadas sugestões de preenchimento automático. - Não é possível guardar dados numa base de dados aberta apenas com permissão de leitura. + Não é possível guardar dados numa base de dados aberta apenas com permissão de leitura. Pedir para guardar dados quando terminar de preencher um formulário Pedir para guardar dados Tentar guardar as informações de pesquisas ao fazer uma seleção de entrada manual para facilitar utilizações posteriores diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 426dc2e44..896fa90e9 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -661,7 +661,7 @@ Sugestii în linie Solicitați salvarea datelor atunci când se finalizează completarea unui formular Reporniți aplicația care conține formularul pentru a activa blocarea. - Salvarea datelor nu este permisă pentru o bază de date deschisă ca fiind doar pentru citire. + Salvarea datelor nu este permisă pentru o bază de date deschisă ca fiind doar pentru citire. Nu uitați să validați datele introduse și să salvați baza de date. \n \nDacă este activată o blocare automată și uitați că ați făcut o modificare, riscați să vă pierdeți datele. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 707bfefcf..782dd03c2 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -471,7 +471,7 @@ Автоматически переключаться на предыдущую клавиатуру после блокировки базы Показывать UUID, связанный с записью или группой Показывать UUID - Сохранение данных невозможно для базы, открытой только для чтения. + Сохранение данных невозможно для базы, открытой только для чтения. Запрашивать сохранение данных после завершения заполнения формы Запрос сохранения данных Закрывать базу после выбора автозаполнения diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 51cbc25d2..0faba8175 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -303,7 +303,7 @@ Pokúste sa uložiť informácie o vyhľadávaní pri ručnom výbere pre jednoduchšie budúce použitie Požiadajte o uloženie údajov Po vyplnení formulára požiadajte o uloženie údajov - Ukladanie údajov nie je povolené pre databázu otvorenú len na čítanie. + Ukladanie údajov nie je povolené pre databázu otvorenú len na čítanie. Boli pridané návrhy automatického dopĺňania. Pridajte položky do databázy Odomykanie databázy zariadenia diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index 71661d520..d14fa433f 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -607,7 +607,7 @@ Kthehu automatikisht te tastiera e mëparshme, te skena e kredencialeve për bazën e të dhënave Shfaq mundësi për ta lënë përdoruesin të përzgjedhë zë baze të dhënash Provo të ruash informacion, kur bëhet një përzgjedhje dorazi e zërit, për përdorim më të kollajtë në të ardhmen - S’lejohet ruajtje të dhënash për një bazë të dhënash të hapur vetëm-për-lexim. + S’lejohet ruajtje të dhënash për një bazë të dhënash të hapur vetëm-për-lexim. Ruaje bazën e të dhënave pas çdo veprimi të rëndësishëm (nën mënyrën “E ndryshueshme”) Mbaje hapur ekranin, kur shihet ose përpunohet një zë Lejo aplikacione palësh të treta të regjistrojnë, ose bëjnë foto ekrani të aplikacionit diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index eb5811922..22b0b58be 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -644,7 +644,7 @@ பயன்பாட்டு பிளாக்லிச்ட் பயன்பாடுகளை தானாக நிரப்புவதைத் தடுக்கும் பிளாக்லிச்ட் வலை களங்களை தானாக நிரப்புவதைத் தடுக்கும் பிளாக்லிச்ட் - படிக்க மட்டும் திறக்கப்பட்ட தரவுத்தளத்திற்கு தரவு சேமிப்பு அனுமதிக்கப்படவில்லை. + படிக்க மட்டும் திறக்கப்பட்ட தரவுத்தளத்திற்கு தரவு சேமிப்பு அனுமதிக்கப்படவில்லை. ஆட்டோஃபில் பரிந்துரைகள் சேர்க்கப்பட்டன. உங்கள் டிசிட்டல் அடையாளங்களை நிர்வகிக்க உள்ளீடுகள் உதவுகின்றன.\n\n குழுக்கள் (~ கோப்புறைகள்) உங்கள் தரவுத்தளத்தில் உள்ளீடுகளை ஒழுங்கமைக்கின்றன. உள்ளீடுகள் மூலம் தேடுங்கள் diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index e42cfc32e..1d6255f38 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -612,7 +612,7 @@ รายการที่บล็อกเพื่อกันไม่ให้กรอกข้อมูลในแอปอัตโนมัติ รายการที่บล็อกเพื่อกันไม่ให้กรอกข้อมูลในเว็บอัตโนมัติ ลบกุญแจเข้ารหัสทั้งหมดที่เกี่ยวข้องกับการปลดล็อกด้วยอุปกรณ์ - การบันทึกฐานข้อมูลไม่อนุญาตสำหรับฐานข้อมูลที่อ่านอย่างเดียว + การบันทึกฐานข้อมูลไม่อนุญาตสำหรับฐานข้อมูลที่อ่านอย่างเดียว เปิดแอปที่แบบฟอร์มนั้นขั้นมาใหม่เพื่อใช้งานการบล็อก เพื่มการแนะนำการกรอกอัตโนมัติ อนุญาตให้ไม่มีรหัสผ่านหลัก diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index d8dd69e66..5cedb5680 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -458,7 +458,7 @@ Veri tabanında bulunan ancak bir girdiye bağlı olmayan ekleri kaldırır Bir girdiye veya gruba bağlı UUID\'yi görüntüler UUID\'yi göster - Salt okunur olarak açılan bir veri tabanı için veri kaydına izin verilmiyor. + Salt okunur olarak açılan bir veri tabanı için veri kaydına izin verilmiyor. Form doldurma işlemi tamamlandığında verileri kaydetmek için sor Verileri kaydetmek için sor Gelecekteki daha kolay kullanımlar için el ile giriş seçimi yaparken arama bilgilerini kaydetmeyi deneyin diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index efdbf5ceb..c8aabd4dc 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -464,7 +464,7 @@ Вилучає вкладення, що містяться в базі даних, але не пов’язані з записом Показ пов\'язаного з записом чи групою UUID Показувати UUID - Збереження даних заборонено для бази даних, відкритої лише для читання. + Збереження даних заборонено для бази даних, відкритої лише для читання. Запитувати зберігати дані після заповнення форми Запит збереження даних Намагатися зберегти подробиці пошуку під час вибору запису вручну для простішого користування в подальшому diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 9e5663421..8ec436ac6 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -561,7 +561,7 @@ Danh sách chặn ngăn việc tự động điền tên miền web Chặn tính năng tự động điền Khởi động lại ứng dụng chứa biểu mẫu để kích hoạt tính năng chặn. - Không cho phép lưu dữ liệu đối với cơ sở dữ liệu được mở ở dạng chỉ đọc. + Không cho phép lưu dữ liệu đối với cơ sở dữ liệu được mở ở dạng chỉ đọc. Đã thêm đề xuất tự động điền. Không cho phép khóa chính Cho phép nhấn vào nút \"Mở\" nếu không có thông tin xác thực nào được chọn diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 01a935d4c..23a9e8c15 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -463,7 +463,7 @@ 删除包含于数据库中但未连接到一个条目的附件 显示与一个条目或分组相链接的 UUID 显示 UUID - 以只读方式打开的数据库不允许保存数据。 + 以只读方式打开的数据库不允许保存数据。 填写完表单后,询问是否保存数据 询问是否保存数据 手动选择条目时尝试保存搜索信息,以便将来使用 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a0bea4a84..5fa3afff0 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -60,7 +60,7 @@ 顯示選項讓用戶選擇資料庫條目 手動選擇 自動填入設定 - 以唯讀方式開啟的資料庫不允許保存資料。 + 以唯讀方式開啟的資料庫不允許保存資料。 進行手動輸入選擇時嘗試儲存搜尋信息,以便將來使用 保存搜尋資訊 選擇項目… diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5cec67273..ab9eb6cc8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -582,7 +582,7 @@ Blocklist that prevents auto filling of web domains Block autofill Restart the app containing the form to activate the blocking. - Data save is not allowed for a database opened as read-only. + Data save is not allowed for a database opened as read-only. Autofill suggestions added. Allow no master key Allows tapping the \"Open\" button if no credentials are selected diff --git a/database/src/main/java/com/kunzisoft/keepass/database/exception/DatabaseException.kt b/database/src/main/java/com/kunzisoft/keepass/database/exception/DatabaseException.kt index d25359ca1..83556c03c 100644 --- a/database/src/main/java/com/kunzisoft/keepass/database/exception/DatabaseException.kt +++ b/database/src/main/java/com/kunzisoft/keepass/database/exception/DatabaseException.kt @@ -19,12 +19,20 @@ */ package com.kunzisoft.keepass.database.exception +import android.content.res.Resources import com.kunzisoft.keepass.database.element.node.NodeId import com.kunzisoft.keepass.database.element.node.Type import java.io.PrintStream import java.io.PrintWriter -abstract class DatabaseException : Exception { +abstract class LocalizedException : Exception { + constructor() : super() + constructor(message: String) : super(message) + // TODO + // open fun getLocalizedMessage(resources: Resources): String? = localizedMessage +} + +abstract class DatabaseException : LocalizedException { var innerMessage: String? = null var parameters = mutableListOf() @@ -75,6 +83,8 @@ class InvalidAlgorithmDatabaseException : DatabaseInputException { class UnknownDatabaseLocationException : DatabaseException() +class RegisterInReadOnlyDatabaseException() : DatabaseException() + class HardwareKeyDatabaseException : DatabaseException() class EmptyKeyDatabaseException : DatabaseException()