From 35f8b45bf40517032a6d0bc1915a75d960ce0b90 Mon Sep 17 00:00:00 2001 From: Fjuro Date: Fri, 8 Sep 2023 18:13:46 +0000 Subject: [PATCH 01/47] Translated using Weblate (Czech) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/ --- app/src/main/res/values-cs/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 157c5d20d..36cd45c69 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -539,15 +539,15 @@ Soubor, který se pokoušíte nahrát, je příliš velký. Info o jednorázovém heslu Vlastnosti - Během exportu vlastností aplikace došlo k chybě - Vlastnosti aplikace byly exportovány - Během importu vlastností aplikace došlo k chybě - Vlastnosti aplikace byly importovány + Během exportu nastavení aplikace došlo k chybě + Nastavení aplikace byla exportována + Během importu nastavení aplikace došlo k chybě + Nastavení aplikace byla importována Vlastnosti KeePassDX pro správu aplikačních nastavení - Pro export vlastností aplikace založte soubor - Exportovat vlastnosti aplikace - Pro import vlastostí aplikace zvolte soubor - Importovat vlastnosti aplikace + Vytvořte soubor pro export nastavení aplikace + Exportovat nastavení aplikace + Vyberte soubor pro import nastavení aplikace + Importovat nastavení aplikace Během akce v databázi došlo k chybě. Při odstraňování dat soboru došlo k chybě. Datový soubor již existuje. From 4ef2cbcaeb0db8451890355275f69bf16965ce24 Mon Sep 17 00:00:00 2001 From: Retrial Date: Fri, 8 Sep 2023 17:41:49 +0000 Subject: [PATCH 02/47] Translated using Weblate (Greek) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/ --- app/src/main/res/values-el/strings.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 0824f1a5b..63efc6129 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -200,9 +200,9 @@ Άλλα Πληκτρολόγιο Magikeyboard - Επαναφορά εκπαιδευτικών συμβουλών + Επαναφορά εκπαιδευτικών υποδείξεων Εμφάνιση όλων των εκπαιδευτικών πληροφοριών ξανά - Επαναφορά εκπαιδευτικών συμβουλών + Επαναφορά εκπαιδευτικών υποδείξεων Δημιουργήστε το αρχείο της βάσης δεδομένων σας Δημιουργήστε το πρώτο αρχείο διαχείρισης κωδικού πρόσβασης. Ανοίξτε μια υπάρχουσα βάση δεδομένων @@ -326,7 +326,7 @@ Κλείσιμο πεδίων Δεν είναι δυνατή η δημιουργία βάσης δεδομένων με αυτόν τον κωδικό πρόσβασης και το αρχείο κλειδί. Ξεκλείδωμα συσκευής - Αυτή η βάση δεδομένων δεν έχει αποθηκευμένα διαπιστευτήρια ακόμα. + Μη διαθέσιμο Εμφάνιση Βιομετρία Ξεκλείδωμα συσκευής @@ -540,15 +540,15 @@ Παρουσιάστηκε σφάλμα κατά την κατάργηση των δεδομένων αρχείου. Τα δεδομένα αρχείου υπάρχουν ήδη. Ιδιότητες - Σφάλμα κατά την εξαγωγή ιδιοτήτων εφαρμογής - Έγινε εξαγωγή ιδιοτήτων εφαρμογής - Σφάλμα κατά την εισαγωγή ιδιοτήτων εφαρμογής - Έγινε εισαγωγή ιδιοτήτων εφαρμογής + Σφάλμα κατά την εξαγωγή ρυθμίσεων εφαρμογής + Έγινε εξαγωγή ρυθμίσεων εφαρμογής + Σφάλμα κατά την εισαγωγή ρυθμίσεων εφαρμογής + Έγινε εισαγωγή ρυθμίσεων εφαρμογής Ιδιότητες KeePassDX για διαχείριση ρυθμίσεων εφαρμογής - Δημιουργήστε ένα αρχείο για εξαγωγή ιδιοτήτων εφαρμογής - Εξαγωγή ιδιοτήτων εφαρμογής - Επιλέξτε ένα αρχείο για εισαγωγή ιδιοτήτων εφαρμογής - Εισαγωγή ιδιοτήτων εφαρμογής + Δημιουργήστε ένα αρχείο για εξαγωγή ρυθμίσεων εφαρμογής + Εξαγωγή ρυθμίσεων εφαρμογής + Επιλέξτε ένα αρχείο για εισαγωγή ρυθμίσεων εφαρμογής + Εισαγωγή ρυθμίσεων εφαρμογής Παρουσιάστηκε σφάλμα κατά την εκτέλεση μιας ενέργειας στη βάση δεδομένων. Δεν μπορείτε να μετακινήσετε μια ομάδα εδώ. Αυτή η λέξη είναι δεσμευμένη και δεν μπορεί να χρησιμοποιηθεί. From 84bd98ebf4b6a2a160526c3626664d15b8232971 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Sat, 9 Sep 2023 10:13:43 +0000 Subject: [PATCH 03/47] Translated using Weblate (Spanish) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/ --- app/src/main/res/values-es/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f617e6919..3268deb1a 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -541,14 +541,14 @@ Seleccionar temas oscuros o claros Brillo del tema Propiedades - Error al importar las propiedades de la aplicación - Error al exportar las propiedades de la aplicación - Propiedades de la aplicación exportadas - Propiedades de la aplicación importadas - Cree un archivo para exportar las propiedades de la aplicación - Exportar propiedades de la aplicación - Seleccione un archivo para importar las propiedades de la aplicación - Importar propiedades de la aplicación + Error al importar la configuración de la aplicación + Error al exportar la configuración de la aplicación + Exportada la configuración de la aplicación + Importada la configuración de la aplicación + Crear un archivo para exportar la configuración de la aplicación + Exportar la configuración de la aplicación + Selecciona un archivo para importar la configuración de la aplicación + Importar la configuración de la aplicación Se ha producido un error al realizar una acción en la base de datos. Se ha producido un error al eliminar los datos del archivo. El archivo que está intentando cargar es demasiado grande. From 9184bc40e51d398c1dfce7e0e2cb3b1ff3c5db16 Mon Sep 17 00:00:00 2001 From: Kunzisoft Date: Fri, 8 Sep 2023 17:41:12 +0000 Subject: [PATCH 04/47] Translated using Weblate (French) Currently translated at 100.0% (647 of 647 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, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0954a6a38..11307e740 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -556,15 +556,15 @@ Le fichier que vous essayez de téléverser est trop volumineux. Information sur le mot de passe à usage unique Propriétés - Erreur lors de l\'exportation des propriétés de l\'application - Propriétés de l\'application exportées - Erreur lors de l\'importation des propriétés de l\'application - Propriétés de l\'application importées + Erreur lors de l\'exportation des paramètres de l\'application + Paramètres exportés de l\'application + Erreur lors de l\'importation des paramètres de l\'application + Paramètres importés de l\'application Propriétés KeePassDX pour gérer les paramètres de l\'application - Créer un fichier pour exporter les propriétés de l\'application - Exporter les propriétés de l\'application - Sélectionner un fichier pour importer les propriétés de l\'application - Importer les propriétés de l\'application + Créer un fichier pour exporter les paramètres de l\'application + Exporter les paramètres de l\'application + Sélectionner un fichier pour importer les paramètres de l\'application + Importer les paramètres de l\'application Une erreur s\'est produite lors de l\'exécution d\'une action sur la base de données. Vous ne pouvez pas déplacer un groupe ici. Ce mot est réservé et ne peut pas être utilisé. From d3c4a3a17eb8d20cdda789d8b3ab1ebe18182107 Mon Sep 17 00:00:00 2001 From: Random Date: Sun, 10 Sep 2023 08:50:06 +0000 Subject: [PATCH 05/47] Translated using Weblate (Italian) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/ --- app/src/main/res/values-it/strings.xml | 32 +++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index e5fafc06e..d73429961 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -180,7 +180,7 @@ Autocompletamento Autocompletamento di KeePassDX Accedi con KeePassDX - Imposta servizio predefinito di autocompletamento + Servizio predefinito di autocompletamento Attiva l\'autocompletamento per riempire velocemente i campi in altre app Dimensione password generata Imposta la dimensione predefinita delle password generate @@ -220,7 +220,7 @@ Tastiera Magitastiera Attiva una tastiera personale che inserisce le tue password e i campi di identità - Non consentire nessuna chiave principale + Non consentire chiavi principali Permetti di toccare il pulsante \"Apri\" se non sono selezionate credenziali Protetto da scrittura Apri il database in sola lettura in modo predefinito @@ -277,8 +277,8 @@ Contribuisci Tema dell\'app Tema usato nell\'app - Pacchetto icone - Pacchetto icone usato nell\'app + Pacchetto di icone + Pacchetto di icone usato nell\'app Modifica elemento Caricamento del database fallito. Caricamento della chiave fallito. Prova a diminuire l\'«Utilizzo memoria» del KDF. @@ -378,7 +378,7 @@ Contributi Concedi il permesso di scrittura per salvare i cambiamenti del database Nascondi collegamenti corrotti nella lista dei database recenti - Nascondi i collegamenti dei database corrotti + Nascondi link a database corrotti Mostra le posizioni dei database recenti Mostra file recenti Ricorda posizione file chiave @@ -430,8 +430,8 @@ Richiedi il cambio della chiave principale la prossima volta (una volta) Forza il rinnovo la prossima volta Richiedi la modifica della chiave principale (giorni) - Mostra il bottone di blocco nell\'interfaccia utente - Mostra il bottone di blocco + Mostra il pulsante di blocco nell\'interfaccia utente + Mostra il pulsante di blocco Impostazioni dell\'autocompletamento Accesso al file revocato dal file manager Ricorda la posizione dei file chiave @@ -504,7 +504,7 @@ Scadenza dello sblocco con dispositivo Sblocco con dispositivo temporaneo Permette di usare le credenziali del dispositivo per sbloccare il database - Sblocco con le credenziali del dispositivo + Sblocco con credenziali del dispositivo Tocca per eliminare le chiavi di sblocco con dispositivo Contenuto Impossibile inizializzare la richiesta di sblocco con dispositivo. @@ -544,15 +544,15 @@ Il file che stai cercando di caricare è troppo grande. Si è verificato un errore durante l\'esecuzione di una azione sul database. Proprietà - Errore durante l\'esportazione delle proprietà dell\'app - Proprietà dell\'app esportate - Errore durante l\'importazione delle proprietà dell\'app - Proprietà dell\'app importate + Errore durante l\'esportazione delle impostazioni dell\'app + Impostazioni dell\'app esportate + Errore durante l\'importazione delle impostazioni dell\'app + Impostazioni dell\'app importate Proprietà di KeePassDX per gestire le impostazioni dell\'app - Crea un file in cui esportare le proprietà dell\'app - Esporta le proprietà dell\'app - Seleziona un file da cui importare le proprietà dell\'app - Importa le proprietà dell\'app + Crea un file in cui esportare le impostazioni dell\'app + Esporta le impostazioni dell\'app + Seleziona un file da cui importare le impostazioni dell\'app + Importa le impostazioni dell\'app Questa parola è riservata e non può essere usata. Non puoi spostare un gruppo qui. Modelli From 283657e1b7586e18f1a6563a393d044571e0067e Mon Sep 17 00:00:00 2001 From: Stephan Paternotte Date: Sun, 10 Sep 2023 05:19:22 +0000 Subject: [PATCH 06/47] Translated using Weblate (Dutch) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/ --- app/src/main/res/values-nl/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 79d0871bf..620fdcebd 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -542,14 +542,14 @@ Het te uploaden bestand is te groot. Eenmalig wachtwoord-informatie Eigenschappen - Fout bij het exporteren van App-instellingen + Fout bij het exporteren van app-instellingen App-instellingen geëxporteerd - Fout bij het importeren van App-instellingen + Fout bij het importeren van app-instellingen App-instellingen geïmporteerd KeePassDX-eigenschappen om app-instellingen te beheren - Bestand voor export van App-instellingen aanmaken + Bestand voor export van app-instellingen aanmaken App-instellingen exporteren - Selecteer een bestand om app-eigenschappen te importeren + Selecteer een bestand om app-instellingen te importeren App-instellingen importeren Er is een fout opgetreden bij het uitvoeren van een actie op de database. Je kunt hier geen groep verplaatsen. From d73e02948e00fb049eacbef2c70a8968f9cc80d3 Mon Sep 17 00:00:00 2001 From: Matthaiks Date: Fri, 8 Sep 2023 18:54:00 +0000 Subject: [PATCH 07/47] Translated using Weblate (Polish) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/ --- app/src/main/res/values-pl/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a0af5c0d5..f7cf83aa0 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -540,15 +540,15 @@ Wystąpił błąd podczas usuwania danych z pliku. Dane pliku już istnieją. Właściwości - Błąd podczas eksportowania właściwości aplikacji - Eksportowano właściwości aplikacji - Błąd podczas importowania właściwości aplikacji - Importowano właściwości aplikacji + Błąd podczas eksportowania ustawień aplikacji + Eksportowano ustawienia aplikacji + Błąd podczas importowania ustawień aplikacji + Importowano ustawienia aplikacji Właściwości KeePassDX do zarządzania ustawieniami aplikacji - Utwórz plik, aby eksportować właściwości aplikacji - Eksportuj właściwości aplikacji - Wybierz plik, aby importować właściwości aplikacji - Importuj właściwości aplikacji + Utwórz plik, aby eksportować ustawienia aplikacji + Eksportuj ustawienia aplikacji + Wybierz plik, aby importować ustawienia aplikacji + Importuj ustawienia aplikacji Wystąpił błąd podczas wykonywania akcji w bazie danych. Nie możesz tutaj przenieść grupy. To słowo jest zastrzeżone i nie może być używane. From a80fa03db44c15aad310d238c4b5d5ffcd1d8882 Mon Sep 17 00:00:00 2001 From: Wellington Terumi Uemura Date: Sun, 10 Sep 2023 12:26:18 +0000 Subject: [PATCH 08/47] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_BR/ --- app/src/main/res/values-pt-rBR/strings.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 93f1d7625..f4f2a3a55 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -525,15 +525,15 @@ Mescle os dados, substitua as modificações externas salvando o banco de dados ou recarregue-o com as alterações mais recentes. As informações contidas em seu arquivo de banco de dados foram modificadas fora do aplicativo. Deletar permanentemente todos os nós da lixeira\? - Erro durante a exportação de propriedades do aplicativo - Propriedades do aplicativo exportadas - Erro durante a importação de propriedades do aplicativo - Propriedades de aplicativos importadas + Houve um erro durante a exportação das configurações do aplicativo + As configurações do aplicativo foram exportadas + Houve um erro durante a importação das configurações do aplicativo + As configurações do aplicativo foram importadas Propriedades KeePassDX para gerenciar configurações de aplicativos - Crie um arquivo para exportar as propriedades do aplicativo - Exportar propriedades do aplicativo - Selecione um arquivo para importar as propriedades do aplicativo - Importar propriedades do aplicativo + Crie um arquivo para exportar as configurações do aplicativo + Exportar as configurações do aplicativo + Selecione um arquivo para importar as configurações do aplicativo + Importar as configurações do aplicativo Modo registro Modo salvar Modo busca @@ -664,7 +664,7 @@ Permitir que aplicativos de terceiros gravem ou façam capturas de tela do aplicativo Modo de captura de tela Arquivo corrompido. - Preenchimento automático + Digitação automática Caixa de verificação da chave física Merge concluído com sucesso Info From 5172c07c183de310ff22072fed941685021e367b Mon Sep 17 00:00:00 2001 From: Alexthegib Date: Sun, 10 Sep 2023 17:23:23 +0000 Subject: [PATCH 09/47] Translated using Weblate (Portuguese (Portugal)) Currently translated at 100.0% (647 of 647 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 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 4f56171ff..52637184d 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -531,15 +531,15 @@ Notificação Selecionar entrada… Propriedades - Erro ao exportar as propriedades da aplicação - Propriedades da aplicação exportadas - Erro ao importar as propriedades da aplicação - Propriedades da aplicação importadas + Erro durante a exportação das definições da aplicação + Definições da aplicação exportadas + Erro durante a importação das definições da aplicação + Definições da aplicação importadas Propriedades do KeePassDX para gerir as configurações da aplicação - Criar um ficheiro para exportar as propriedades da aplicação - Exportar as propriedades da aplicação - Selecione um ficheiro para importar as propriedades da aplicação - Importar propriedades da aplicação + Criar um ficheiro para exportar as definições da aplicação + Exportar definições da aplicação + Selecionar um ficheiro para importar as definições da aplicação + Importar definições da aplicação Ícone externo Ocorreu um erro ao tentar executar uma ação na base de dados. Ocorreu um erro ao tentar remover o ficheiro de dados. From faa70c57b3e1a2df27e7a4744dd345adca0caee8 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Fri, 8 Sep 2023 22:37:53 +0000 Subject: [PATCH 10/47] Translated using Weblate (Ukrainian) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/ --- app/src/main/res/values-uk/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 47aa68649..a6fefca42 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -540,15 +540,15 @@ Сталася помилка під час вилучення даних файлу. Дані файлу вже існують. Властивості - Помилка під час експортування властивостей застосунку - Властивості застосунку експортовано - Помилка під час імпортування властивостей застосунку - Властивості застосунку імпортовано + Помилка під час експорту налаштувань застосунку + Налаштування застосунку експортовано + Помилка під час імпорту налаштувань застосунку + Налаштування застосунку імпортовано Властивості KeePassDX для керування налаштування застосунку - Створити файл для експорту властивостей застосунку - Експорт властивостей застосунку - Виберіть файл для імпорту властивостей застосунку - Імпорт властивостей застосунку + Створити файл для експорту налаштувань застосунку + Експорт налаштувань застосунку + Виберіть файл для імпорту налаштувань застосунку + Імпорт налаштувань застосунку Під час виконання дії з базою даних сталася помилка. Ви не можете перемістити групу сюди. Це слово зарезервоване, його не можна використовувати. From 87e9a3854843875dc5c5aca3264cca2e221e6950 Mon Sep 17 00:00:00 2001 From: Eric Date: Sat, 9 Sep 2023 00:33:11 +0000 Subject: [PATCH 11/47] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (647 of 647 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 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 0a71e0365..348f2d82a 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -540,15 +540,15 @@ 删除文件数据时发生了一个错误。 文件数据已存在。 属性 - 导出应用配置时出错 - 已导出应用配置 - 导入应用配置时出错 - 已导入应用配置 + 导出应用设置期间出错 + 已导出应用设置 + 导入应用设置期间出错 + 已导入应用设置 管理应用设置的 KeePassDX 配置 - 创建一个文件以导出应用配置 - 导出配置 - 选择一个文件以导入应用配置 - 导入配置 + 创建文件来导出应用设置 + 导出应用设置 + 选择一个文件来导入应用设置 + 导入应用设置 对数据库执行操作时发生了一个错误。 你不能把一个组移动到此处。 这个单词是保留的,不能使用。 From f52d139accbf5b9dee27f8ac12f3170712791487 Mon Sep 17 00:00:00 2001 From: jonnysemon Date: Sat, 9 Sep 2023 20:05:13 +0000 Subject: [PATCH 12/47] Translated using Weblate (Arabic) Currently translated at 97.5% (631 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ar/ --- app/src/main/res/values-ar/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 0d531cb36..b0a2817eb 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -446,8 +446,8 @@ عُد للوحة المفاتيح السابقة اختر مدخلًا أغلق قاعدة البيانات - أّستوردت خصائص التطبيق - صُدرت خصائص التطبيق + أّستوردت إعدادات التطبيق + صُدرت إعدادات التطبيق أُجهض الوصول إلى الملف بواسطة مدير الملفات ، أغلق قاعدة البيانات ثم أعد فتحها. الخصائص الرمز @@ -460,11 +460,11 @@ أيقونة خارجية وضع التسجيل استورد خصائص التطبيق - اختر ملفًا لاستيراد خصائص التطبيق - صدّر خصائص التطبيق - أنشئ ملفًا لتصدير خصائص التطبيق - خطأ أثناء استيراد خصائص التطبيق - خطأ أثناء تصدير خصائص التطبيق + اختر ملفًا لاستيراد إعدادات التطبيق + صدّر إعدادات التطبيق + أنشئ ملفًا لتصدير إعدادات التطبيق + خطأ أثناء استيراد إعدادات التطبيق + خطأ أثناء تصدير إعدادات التطبيق غُيِّرت معلومات قاعدة البيانات من خارج هذا التطبيق. ادمج البيانات أو استبدل التعديلات الخارجية بحفظ قاعدة البيانات أو أعد تحميلها لجلب آخر التغييرات. اكتب كلمة السر، وأنقر هذا الزر. From d3182b8d2a3a5df7bf7a1270c09c5993738b8531 Mon Sep 17 00:00:00 2001 From: Linerly Date: Sun, 10 Sep 2023 14:10:36 +0000 Subject: [PATCH 13/47] Translated using Weblate (Indonesian) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/id/ --- app/src/main/res/values-id/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index d3f0fef27..60f2ccde4 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -400,15 +400,15 @@ Akses ke berkas dicabut oleh pengelola berkas Berikan akses tulis berkas untuk menyimpan perubahan basis data Setelan - Galat ketika mengekspor setelan aplikasi - Setelan aplikasi diekspor - Galat ketika mengimpor setelan aplikasi - Setelan aplikasi diimpor + Galat ketika mengekspor pengaturan aplikasi + Pengaturan aplikasi diekspor + Galat ketika mengimpor pengaturan aplikasi + Pengaturan aplikasi diimpor Setelan KeePassDX untuk mengelola pengaturan aplikasi - Buat sebuah berkas untuk mengekspor setelan aplikasi - Ekspor setelan aplikasi - Pilih sebuah berkas untuk mengimpor setelan aplikasi - Impor setelan aplikasi + Buat sebuah berkas untuk mengekspor pengaturan aplikasi + Ekspor pengaturan aplikasi + Pilih sebuah berkas untuk mengimpor pengaturan aplikasi + Impor pengaturan aplikasi Timbul galat ketika melaksanakan sebuah aksi di basis data. Anda tidak dapat memindahkan sebuah grup ke sini. Membuka kredensial perangkat From 2d26079c49336caef3b5de22777e2e39d9eee782 Mon Sep 17 00:00:00 2001 From: MkQtS <81752398+MkQtS@users.noreply.github.com> Date: Wed, 13 Sep 2023 19:16:43 +0800 Subject: [PATCH 14/47] readme: don't specify language in F-droid links then F-droid will follow the browser locale --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b1d70da7b..809f036bc 100644 --- a/README.md +++ b/README.md @@ -48,11 +48,11 @@ Optional visual styles are accessible after a contribution (and a congratulatory ## Download -*[F-Droid](https://f-droid.org/en/packages/com.kunzisoft.keepass.libre/) is the recommended way of installing, a libre software project that verifies that all the libraries and app code is libre software.* +*[F-Droid](https://f-droid.org/packages/com.kunzisoft.keepass.libre/) is the recommended way of installing, a libre software project that verifies that all the libraries and app code is libre software.* [Get it on F-Droid](https://f-droid.org/en/packages/com.kunzisoft.keepass.libre/) + height="80">](https://f-droid.org/packages/com.kunzisoft.keepass.libre/) [Get it on Google Play](https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.free) From 91ba2dff2dfb73a0d07693232e9f29bd6726026b Mon Sep 17 00:00:00 2001 From: alejandracios Date: Tue, 12 Sep 2023 13:36:02 +0000 Subject: [PATCH 15/47] Translated using Weblate (Spanish) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/ --- app/src/main/res/values-es/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 3268deb1a..5fb21ff2f 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -43,7 +43,7 @@ Dígitos KeePassDX © %1$d Kunzisoft es de <strong>código abierto</strong> y <strong>sin publicidad</strong>. \nSe proporciona tal cual, bajo licencia <strong>GPLv3</strong>, sin ninguna garantía. - Abrir la cámara acorazada existente + Abrir la caja fuerte existente Accedido Cancelar Notas @@ -197,7 +197,7 @@ Nombre del archivo Ruta Asignar una clave maestra - Crear una nueva cámara acorazada + Crear una nueva caja fuerte Uso de la papelera de reciclaje Mueve los grupos y las entradas al grupo \"Papelera de reciclaje\" antes de eliminarlos Tipografía del campo @@ -461,7 +461,7 @@ No se puede leer la clave de desbloqueo del dispositivo. Por favor, bórrala y repite el procedimiento de reconocimiento del desbloqueo. Extraer la credencial de la base de datos con los datos de desbloqueo del dispositivo Reconocimiento de desbloqueo de los dispositivos - Aún debes recordar la credencial principal de tu cámara acorazada si usas el reconocimiento para el desbloqueo del dispositivo. + Aún debes recordar la credencial principal de tu caja fuerte si usas el reconocimiento para el desbloqueo del dispositivo. Enlace para el desbloqueo del dispositivo El almacén de claves no está debidamente inicializado. Se requiere una actualización de la seguridad biométrica. From afdc5c8460a4c22d67a34f6c91267091bb121a89 Mon Sep 17 00:00:00 2001 From: Mesut Akcan Date: Tue, 12 Sep 2023 12:53:46 +0000 Subject: [PATCH 16/47] Translated using Weblate (Turkish) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/ --- app/src/main/res/values-tr/strings.xml | 99 ++++++++++++++++---------- 1 file changed, 60 insertions(+), 39 deletions(-) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 465da5e4a..e34043790 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -128,8 +128,8 @@ Asla Arama sonucu bulunamadı Bu URL\'u açmak için bir web tarayıcısı yükleyin. - Mevcut veri tabanını aç - Yeni veri tabanı oluştur + Mevcut kasayı aç + Yeni kasa oluştur Yeni veri tabanı oluşturuluyor… Çalışıyor… Koruma @@ -189,11 +189,11 @@ Kilit Ekran kilidi Ekran kapandığında birkaç saniye sonra veri tabanını kilitle - Gelişmiş kilit açma + Cihaz kilidini aç Biyometrik kilit açma Veri tabanını açmak için biyometriklerinizi taramanızı sağlar Şifreleme anahtarlarını silin - Gelişmiş kilit açma tanıma ile ilgili tüm şifreleme anahtarlarını silin + Cihaz kilit açma tanımayla 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ı. @@ -240,9 +240,9 @@ Veri tabanını öntanımlı olarak salt okunur aç Eğitim ipuçları Uygulamanın nasıl çalıştığını öğrenmek için ögeleri vurgulayın - Eğitim ipuçlarını sıfırla + Eğitici ipuçlarını sıfırla Tüm eğitim bilgilerini tekrar göster - Eğitim ipuçlarını sıfırla + Eğitici ipuçlarını sıfırla Veri tabanı dosyanızı oluşturun İlk parola yönetim dosyanızı oluşturun. Mevcut bir veri tabanını açın @@ -329,10 +329,10 @@ Güncelle Alanları kapat Bu parola ve anahtar dosyası ile veri tabanı oluşturulamıyor. - Gelişmiş kilit açma + Cihaz kilidini aç Biyometrik Otomatik açma istemi - Vari tabanı onu kullanacak biçimde ayarlandıysa otomatik olarak gelişmiş kilit açma isteğinde bulun + Veritabanı onu kullanacak şekilde ayarlanmışsa cihazın kilidini otomatik olarak talep et Etkinleştir Devre dışı Ana anahtar @@ -361,7 +361,7 @@ Tekrarlananlar için yeni UUID\'ler oluşturarak sorunu çöz ve devam et\? Veri tabanı açıldı 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 + Bir veritabanını daha kolay açmak için cihazın kilidini açmayı kullanın Veri sıkıştırma Veri sıkıştırma veri tabanı boyutunu azaltır Azami sayı @@ -439,7 +439,7 @@ Bu metin istenen ögeyle eşleşmiyor. Öge ekle \"Otomatik tuş eylemini\" gerçekleştirdikten sonra otomatik olarak önceki klavyeye dön - Otomatik tuş eylemi + Geri dön Veri tabanı kimlik bilgileri ekranında otomatik olarak önceki klavyeye dön Veri tabanı kimlik bilgileri ekranı Klavye değiştir @@ -464,13 +464,13 @@ 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 - İleride daha kolay kullanım için elle girdi seçimi yaparken arama bilgilerini kaydetmeyi dene + Gelecekteki daha kolay kullanımlar için el ile giriş seçimi yaparken arama bilgilerini kaydetmeyi deneyin Arama bilgilerini kaydet Otomatik doldurma seçiminden sonra veri tabanını kapat Veri tabanını kapat Veri tabanını kilitledikten sonra otomatik olarak önceki klavyeye dön Veri tabanını kilitle - İleride daha kolay kullanım için elle girdi seçimi yaparken arama bilgilerini kaydetmeyi dene + Gelecekteki daha kolay kullanımlar için el ile giriş seçimi yaparken paylaşılan bilgileri kaydetmeyi deneyin Paylaşılan bilgileri kaydet Bildirim Biyometrik güvenlik güncellemesi gerekli. @@ -481,34 +481,34 @@ 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\? + Cihaz kilit açma tanımayla 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 bu düğmeye 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ç - Gelişmiş kilit açma tanıma kullanırsanız, yine de ana kimlik bilgilerinizi hatırlamanız gerekmektedir. - Gelişmiş kilit açma tanıma - Gelişmiş kilit açma anahtarını sil + Cihaz kilit açma istemi başlatılamıyor. + Kullanım dışı + Cihaz kilit açma hatası: %1$s + Cihaz kilit açma parmak izi tanınamadı + Cihazın kilit açma anahtarı okunamıyor. Lütfen silin ve kilit açma tanıma prosedürünü tekrarlayın. + Cihaz kilit açma verileriyle veritabanı kimlik bilgilerini çıkarın + Cihaz kilidini tanıma + Cihaz kilit açma tanımayı kullanıyorsanız kasa ana kimlik bilgilerinizi yine de hatırlamanız gerekir. + Cihaz kilidini açma bağlantısı + Cihaz kilit açma anahtarını sil Enter Backspace 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 + Cihaz veritabanı kilidini açma + Cihaz kilidini açma zaman aşımı + İçeriğini silmeden önce cihazın kilit açma kullanım süresi + Cihaz kilidini açma süresi doldu + Cihaz kilidini açmak için şifrelenmiş içerik saklamayın + Geçici kilit açma + Cihaz kilit açma anahtarlarını silmek için dokunun İçerik Liste düzgün şekilde yeniden oluşturulamıyor. Veri tabanı URI\'si alınamıyor. @@ -535,15 +535,15 @@ Dosya verilerini kaldırırken bir hata oluştu. Dosya verileri zaten var. Özellikler - Uygulama özelliklerini dışa aktarma sırasında hata oluştu - Uygulama özelliklerini içe aktarma sırasında hata oluştu - Uygulama özellikleri dışa aktarıldı - Uygulama özellikleri içe aktarıldı + Uygulama ayarlarının dışa aktarımı sırasında hata + Uygulama ayarlarını içe aktarırken hata oluştu + Uygulama ayarları dışa aktarıldı + Uygulama ayarları içe aktarıldı Uygulama ayarlarını yönetmek için KeePassDX özellikleri - Uygulama özelliklerini dışa aktarmak için bir dosya oluşturun - Uygulama özelliklerini dışa aktar - Uygulama özelliklerini içe aktarmak için bir dosya seçin - Uygulama özelliklerini içe aktar + Uygulama ayarlarını dışa aktarmak için bir dosya oluşturun + Uygulama ayarlarını dışa aktar + Uygulama ayarlarını içe aktarmak için bir dosya seçin + Uygulama ayarlarını içe aktar Veri tabanında bir eylem gerçekleştirilirken bir hata oluştu. Bir grubu buraya taşıyamazsınız. Bu sözcük ayrılmıştır ve kullanılamaz. @@ -600,7 +600,7 @@ Ekranı açık tut Girdi renkleri Bir girdi için ön plan ve arka plan renklerini görüntüler - Girdiyi izlerken ekranı açık tutun + Bir girişi izlerken veya düzenlerken ekranı açık tutun Gezinme başlığı Gezinme çekmecesi açık Gezinme çekmecesi kapalı @@ -662,4 +662,25 @@ Üçüncü taraf uygulamaların uygulamanın ekran görüntülerini kaydetmesine veya almasına izin verin Ekran görüntüsü modu Birleştirme başarıyla tamamlandı + Kilidi aç + Değişim, yenilenme + Bilgi + Girişi doğrula + Sor + Klavye, otomatik doldur, pano + Yapılandır + Temalar, renkler, öznitellikler + Şifreleme, anahtar türetme işlevi + Biyometri, cihaz kimlik bilgisi + Girişinizi doğrulamayı ve veritabanınızı kaydetmeyi unutmayın. +\n +\nOtomatik kilitleme etkinleştirilirse ve değişiklik yaptığınızı unutursanız verilerinizi kaybetme riskiyle karşı karşıya kalırsınız. + Bildirim izni, veritabanının durumunu görüntülemenize ve kolayca erişilebilen bir düğmeyle kilitlemenize olanak tanır. +\n +\nBu izni aktifleştirmezseniz arka planda açık olan veritabanı, ön planda başka bir uygulama varken görünmeyecektir. + Cihaz kilit açma bağlantısı + Pano bildirim özelliğini kullanmak için bildirim izni gereklidir. + Meta veriler, geri dönüşüm kutusu, şablonlar, geçmiş + Ara, kilit, geçmiş, özellikler + Daha Sonra \ No newline at end of file From 2b8935a5d7789e621b366670d8a4ff9d83bbcbf2 Mon Sep 17 00:00:00 2001 From: Alexthegib Date: Thu, 14 Sep 2023 23:56:40 +0000 Subject: [PATCH 17/47] Translated using Weblate (Portuguese) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt/ --- app/src/main/res/values-pt/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index b2f91e1db..4cf449dea 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -468,8 +468,8 @@ Não foi possível recuperar o URI da base de dados. O nome do campo já existe. Não é permitido guardar um novo item numa base de dados só de leitura - Exportar as propriedades da aplicação - Selecione um ficheiro para importar as propriedades da aplicação + Exportar definições da aplicação + Selecionar um ficheiro para importar as definições da aplicação GiB MiB KiB @@ -526,13 +526,13 @@ Selecionar entrada… Propriedades Digite a palavra-passe e depois clique neste botão. - Erro ao exportar as propriedades da aplicação - Propriedades da aplicação exportadas + Erro durante a exportação das definições da aplicação + Definições da aplicação exportadas Erro ao importar as propriedades da aplicação - Propriedades da aplicação importadas + Definições da aplicação importadas Propriedades do KeePassDX para gerir as configurações da aplicação - Criar um ficheiro para exportar as propriedades da aplicação - Importar propriedades da aplicação + Criar um ficheiro para exportar as definições da aplicação + Importar definições da aplicação Ícone externo Ocorreu um erro ao tentar executar uma ação na base de dados. Ocorreu um erro ao tentar remover o ficheiro de dados. From 0ff77eb1579333aa040fa94cf373bc6346733f98 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Sun, 17 Sep 2023 16:34:00 +0000 Subject: [PATCH 18/47] Translated using Weblate (Croatian) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/ --- app/src/main/res/values-hr/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 14504a71a..7c98bb08e 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -535,15 +535,15 @@ Tijekom uklanjanja podataka datoteke došlo je do greške. Podaci datoteke već postoje. Svojstva - Greška tijekom izvoza svojstava aplikacije - Svojstva aplikacije su izvezena - Greška tijekom uvoza svojstava aplikacije - Svojstva aplikacije su uvezena + Greška tijekom izvoza postavki aplikacije + Postavke aplikacije su izvezene + Greška tijekom uvoza postavki aplikacije + Postavke aplikacije su uvezene KeePassDX svojstva za upravljanje postavkama aplikacije - Stvori datoteku za izvoz svojstva aplikacije - Izvezi svojstva aplikacije - Odaberi datoteku za uvoz svojstva aplikacije - Uvezi svojstva aplikacije + Stvori datoteku za izvoz postavki aplikacije + Izvezi postavke aplikacije + Odaberi datoteku za uvoz postavki aplikacije + Uvezi postavke aplikacije Došlo je do greške tijekom izvođenja radnje u bazi podataka. Grupa se ne može ovdje premjestiti. Ova je riječ rezervirana i ne može se koristiti. From 612e6425231c1ff2bd2c58e0b4a9fd7d2f2a7cf7 Mon Sep 17 00:00:00 2001 From: elgratea Date: Mon, 18 Sep 2023 20:16:32 +0000 Subject: [PATCH 19/47] Translated using Weblate (Bulgarian) Currently translated at 9.8% (64 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/ --- app/src/main/res/values-bg/strings.xml | 45 ++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index bac913e4e..56d83c3c8 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -19,4 +19,49 @@ Информация Клипбордът е изчистен Нова група + Продължителност на съхранение в клипборда (ако се поддържа от вашето устройство) + Някои устройства не позволяват на приложенията да използват клипборда. + Заглавие + Android версия на мениджъра на пароли KeePass + Запази + Потвърди парола + Функция за генериране на ключа + Отвори файл + Отказ + Персонализирани данни + Тагове + Копирайте полетата за въвеждане, като използвате клипборда на вашето устройство + Тип OTP + Линк + Участие + UUID + История + Копие на %1$s + Грешка в клипборда + За създаване, отваряне и запазване на файлове на базата данни е необходим файлов мениджър, който приема действието ACTION_CREATE_DOCUMENT и ACTION_OPEN_DOCUMENT. + Добави запис + Време за изчакване на клипборда + Изтекъл + Парола + Ключът на базата данни се извлича… + Достъп + Създаден + Потребителско име + Фон + Не може да се изчисти клипборда + Изтича + Прикачени файлове + Период (секунди) + Период на бездействие, след който базата се заключва + Цифри + Разширен ASCII + OTP + Бележки + Брояч + Позволи + Внимание: Клипбордът се споделя от всички приложения. Ако се копират чувствителни данни, друг софтуер може да ги възстанови. + Променен + Изберете, за да копирате %1$s в клипборда + Таен ключ + Уебсайт \ No newline at end of file From 0cf9d98f14bd54912dfcf6b8cbf662de6598734c Mon Sep 17 00:00:00 2001 From: "P.O" Date: Thu, 28 Sep 2023 21:31:30 +0000 Subject: [PATCH 20/47] Translated using Weblate (Swedish) Currently translated at 59.3% (384 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sv/ --- app/src/main/res/values-sv/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index ce4e53666..3585186f8 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -470,4 +470,5 @@ Välj hårdvarunyckel. Lägg till ny Inloggningsuppgifter + Information \ No newline at end of file From 15ad4d11ef4daabfccd70ec45576c5b31f430690 Mon Sep 17 00:00:00 2001 From: John Veness Date: Sun, 1 Oct 2023 21:07:54 +0100 Subject: [PATCH 21/47] Fix paragraph break in Biometric warning text Added an extra new line between the last two paragraphs, for consistency with the paragraphs above. --- 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 2968f932c..312c91819 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -454,7 +454,7 @@ Delete encryption keys Delete all encryption keys related to device unlock recognition Delete all encryption keys related to device unlock recognition? - This feature will store encrypted credential data in the secure KeyStore of your device.\n\nDepending on the native API implementation of the operating system, it may not be fully functional.\nCheck the compatibility and security of the KeyStore with the manufacturer of your device and the creator of the ROM you are using. + This feature will store encrypted credential data in the secure KeyStore of your device.\n\nDepending on the native API implementation of the operating system, it may not be fully functional.\n\nCheck the compatibility and security of the KeyStore with the manufacturer of your device and the creator of the ROM you are using. Could not start this feature. The device is running Android %1$s, but needs %2$s or later. Could not find the corresponding hardware. @@ -730,4 +730,4 @@ Displays foreground and background colors for an entry Hide expired entries Expired entries are not shown - \ No newline at end of file + From f41ecec09ce3468adf4dca8afcf4d4f37b92650f Mon Sep 17 00:00:00 2001 From: bowornsin Date: Sat, 30 Sep 2023 23:59:38 +0000 Subject: [PATCH 22/47] Translated using Weblate (Thai) Currently translated at 91.4% (592 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/th/ --- app/src/main/res/values-th/strings.xml | 103 ++++++++++++++----------- 1 file changed, 57 insertions(+), 46 deletions(-) diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index cb4d98d97..c556c0bf0 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -35,7 +35,7 @@ ซ่อนรหัสผ่าน ยืนยันรหัสผ่าน ติดต่อ - เปิดไฟล์ฐานข้อมูลที่มีอยู่แล้ว + เปิดคลังรหัสผ่านที่มีอยู่แล้ว การเข้าถึงไฟล์ถูกเพิกถอนโดยตัวจัดการไฟล์ การเข้าถึงไฟล์ถูกเพิกถอนโดยตัวจัดการไฟล์ ปิดฐานข้อมูลและเปิดใหม่จากตำแหน่งดังกล่าวอีกครั้ง เปิดฐานข้อมูลที่มีอยู่แล้ว @@ -67,7 +67,7 @@ ข้อมูลไฟล์ ข้อมูลประจำตัว ข้อมูลรหัสแบบใช้ครั้งเดียว - ช่องทำเครื่องหมายรหัสผ่าน + “ช่องทำเครื่องหมายรหัสผ่าน ช่องทำเครื่องหมายกุญแจฮาร์ดแวร์ ไอคอนรายการ สีของฐานข้อมูล @@ -82,18 +82,18 @@ เพื่มข่อง เพิ่มไฟล์แนบ ลบช่อง - อัพเดท + อัพเดต ลบ ปิดช่อง กําลังเรียกกุญแจของฐานข้อมูล… เลือกกุญเจฮาร์ดแวร์ ไม่รองรับกุญแจฮาร์ดแวร์ - สร้างฐานข้อมูลใหม่ + สร้างคลังรหัสผ่านใหม่ ไม่ได้กำหนดข้อมูลการยืนยันตัวตนหรือไบโอเมตริก คุณยังต้องจำข้อมูลรหัสผ่านหลักไว้อยู่ถ้าใช้การปลดล็อกขั้นสูง กุญแจฮาร์ดแวร์ กำลังโหลดฐานข้อมูล… - เปิดฐานข้อมูลด้วยการปลดล็อกขั้นสูง + เปิดฐานข้อมูลด้วยการปลดล็อกด้วยอุปกรณ์ กำลังรอการตอบกลับจากกุญแจฮาร์ดแวร์ แอป KeePassDX © %1$d Kunzisoft เป็นแอป <strong>โอเพนซอร์ซ</strong> และ <strong>ไม่มีโฆษณา</strong>. \nIt is provided as is, under <strong>GPLv3</strong> license, without any warranty. @@ -166,7 +166,7 @@ กด \"กลับ\" เพื่อล็อก แสดงปุ่มล็อกในส่วนติดต่อของผู้ใช้ เนื้อหา - การปลดล็อกขั้นสูง + การปลดล็อกด้วยอุปกรณ์ ให้คุณใช้ข้อมูลประจำตัวของอุปกรณ์เพื่อปลดล็อกฐานข้อมูล แบบอักษรในช่องเขตข้อมูล ถึงขยะ @@ -200,7 +200,7 @@ เขตข้อมูลที่คัดลอกแล้วสามารถวางได้ที่ใหนก็ได้ \n \nใช้การวิธีการกรอกข้อมูลตามต้องการ - Lock the database + ล็อกฐานข้อมูล ล็อกฐานข้อมูลอย่างรวดเร็ว คุณสามารถตั้งค่าการล็อกมันหลังจากผ่านไปสักพัก และเมื่อปิดหน้าจอ จัดเรียงรายการ เลือกรายการและกลุ่มที่จะถูกจัดเรียง @@ -222,19 +222,19 @@ กิบิไบต์ เมบิไบต์ กิบิไบต์ - Entropy: %1$s บิต - Entropy: สูง - Entropy: คำนวน… + เอ็นโทรปี: %1$s บิต + เอ็นโทรปี: สูง + เอ็นโทรปี: คำนวน… อย่างน้อยหนึ่งอักขระจากแต่ละตัว ยกเว้นอักขระที่คลุมเครือ - พิจารณาตัวอักษร + เลือกใช้ตัวอักษร ตัวคั่น ละเว้นอักขระ ตัวพิมพ์เล็ก จำนวนตัวอักษร: %1$d - Screenshot mode + โหมดถ่ายภาพหน้าจอ ความสว่างของธีม - Standard + มาตรฐาน กำหนดเอง ซ่อนรายการที่หมดอายุแล้ว รายการที่หมดอายุแล้วจะไม่แสดง @@ -270,10 +270,10 @@ ขนาดของรายการ กําลังสร้างฐานข้อมูล… ซ่อนรหัสผ่าน - ลบกุญแจปลดล็อกขั้นสูง + ลบกุญแจปลดล็อกของอุปกรณ์ เกี่ยวกับ ย้าย - การปลดล็อกขั้นสูง + การปลดล็อกของอุปกรณ์ ล็อกฐานข้อมูล ค้นหา ลบ @@ -341,7 +341,7 @@ ไม่พบไฟล์ ลองเปิดอีกครั้งจากตัวจัดการไฟล์ของคุณ ซ่อนลิงก์ฐานข้อมูลที่เสียหาย จำนวนหน่วยความจำที่จะใช้โดยฟังก์ชันการสืบทอดคีย์ - เกิดข้อผิดพลาดระหว่างการนำเข้าคุณสมบัติของแอป + เกิดข้อผิดพลาดระหว่างการนำเข้าการตั้งค่าของแอป ไฟล์ชำรุด โหมดบันทึก โหมดการเลือก @@ -364,18 +364,18 @@ กรอกรหัสผ่าน จากนั้นกดที่ปุ่มนี้ ล็อก เพิ่มไฟล์ต่อไปหรือไม่\? - นําเข้าคุณสมบัติของแอป + นําเข้าการตั้งค่าของแอป เลือกรายการ - เรื่มต้นการปลดล็อกขั้นสูงไม่ได้ - ส่งออกคุณสมบัติของแอป - สร้างไฟล์เพื่อส่งออกคุณสมบัติของแอป + เรื่มต้นการปลดล็อกด้วยอุปกรณ์ไม่ได้ + ส่งออกการตั้งค่าของแอป + สร้างไฟล์เพื่อส่งออกการตั้งค่าของแอป แสดงปุ่มล็อก ส่งออกคุณสมบัติของแอปแล้ว การตั้งค่าการกรอกข้อมูลอัตโนมัติ ขนาดรหัสผ่านที่สร้าง อักขระรหัสผ่าน การแจ้งเตือนคลิปบอร์ด - การปลดล็อกขั้นสูงชั่วคราว + การปลดล็อกด้วยอุปกรณ์ชั่วคราว เมจิคีย์บอร์ด (KeePassDX) การตั้งค่า เมจิคีย์บอร์ด รายการ @@ -410,7 +410,7 @@ การสั่นที่ปุ่มกด การได้ยินเสียงที่ปุ่มกด หน้าจอค้นหา - การกระทำปุ่มอัตโนมัติ + ปุ่มกลับ สลับไปยังแป้นพิมพ์ก่อนหน้านี้โดยอัตโนมัติหลังจากล็อกฐานข้อมูล ล็อกฐานข้อมูล การแนะนำแบบอินไลน์ @@ -469,7 +469,7 @@ PIN รุ่นของฐานข้อมูล Keepass ไม่รองรับ You have not allowed the app to use an exact alarm. As a result, the features requiring a timer will not be done with an exact time. - UPPER CASE + ตัวพิมพ์ใหญ่ Title Case แสดงสีพื้นหน้าและสีพื้นหลังสําหรับรายการ ต้องการตัวจัดการไฟล์ที่ยอมรับ Intent Action ACTION_CREATE_DOCUMENT ACTION_OPEN_DOCUMENT เพื่อจะสร้าง, เปิด, และบันทึกไฟล์ฐานข้อมูล @@ -488,7 +488,7 @@ กุญแจลับของ OTP ตัวนับ IBAN - การเป็นสมาชิก + ความเป็นสมาชิก มาตรฐาน รุ่น คำนี้เป็นคำที่ถูกสงวนไว้และไม่สามารถใช้ได้ @@ -504,7 +504,7 @@ ระยะเวลาต้องอยู่ระหว่าง %1$d และ %2$d วินาที หัวข้อ ไม่แนะนำให้เพิ่มไฟล์ keyfile เปล่าๆ - เพื่อที่จะ <strong>คงความเป็นอิสระ</strong>, <strong>แก้ไขบั้ก</strong>, <strong>เพื่มฟีเจอร์</strong> และ <strong>ทำให้พัฒนาอยู่เสมอ</strong>, เรารอคุณมา<strong>ร่วมแก้ไข</strong>อยู่ + เพื่อที่จะ คงความเป็นอิสระ, แก้ไขบั้ก, เพื่มฟีเจอร์ และ ทำให้ยังพัฒนาอยู่เสมอ, เรารอคุณมาร่วมแก้ไขอยู่ ค่าเขตข้อมูล ข้อมูลที่อยู่ในไฟล์ฐานข้อมูลของคุณถูกแก้ไขจากภายนอกแอป คุณสมบัติของ KeePassDX เพื่อจัดการการตั้งค่าแอป @@ -518,21 +518,21 @@ สิทธิอนุญาต รวมข้อมูลหรือเขียนทับการแก้ไขจากภายนอก โดยบันทึกฐานข้อมูล หรือโหลดซ้ำเพื่อใช้การเปลี่ยนแปลงล่าสุด ค่าแฮชของไฟล์จะไม่แน่นอนเนี่องจาก Android สามารถเปลี่ยนแปลงข้อมูลในขณะที่ใช้อยู่ได้ เปลี่ยนส่วนขยายไฟล์เป็น .bin เพื่อคงความสมบูรณ์ไว้ - จำเป็นต้องอัปเดทการรักษาความปลอดภัยของไบโอเมตริก + จำเป็นต้องอัปเดตการรักษาความปลอดภัยของไบโอเมตริก Keystore เรื่มทำงานได้ไม่ถูกต้อง เชื่อมโยงการปลดล็อกขั้นสูง เก็บค่ารหัสผ่านที่เข้ารหัสไว้ - อ่านกุญแจการปลดล็อกขั้นสูงไม่ได้ โปรดลบข้อมูลออกและเพื่มข้อมูลการปลดล็อกขั้นสูงอีกครั้ง + อ่านกุญแจการปลดล็อกของอุปกรณ์ไม่ได้ โปรดลบข้อมูลออกและเพื่มข้อมูลการปลดล็อกด้วยอุปกรณ์อีกครั้ง ไม่รู้จักลายนิ้วมือ - แยกข้อมูลประจำตัวออกด้วยข้อมูลการปลดล็อกขั้นสูง - การปลดล็อกขั้นสูงผิดพลาด: %1$s + แยกข้อมูลประจำตัวออกด้วยข้อมูลการปลดล็อกด้วยอุปกรณ์ + การปลดล็อกด้วยอุปกรณ์ผิดพลาด: %1$s คุณสมบัติ ฐานข้อมูลนี้ยังไม่มีข้อมูลการเข้าสูระบบเลย ประวัติ - เลือกไฟล์ที่จะนําเข้าคุณสมบัติของแอป - นำเข้าคุณสมบัติแอปแล้ว + เลือกไฟล์ที่จะนําเข้าการตั้งค่าของแอป + นำเข้าการตั้งค่าแอปแล้ว ตั่งค่าเป็นบริการกรอกข้อมูลอัตโนมัติเรื่มต้น - เกิดข้อผิดพลาดระหว่างการส่งออกคุณสมบัติของแอป + เกิดข้อผิดพลาดระหว่างการส่งออกการตั้งค่าของแอป ลักษณะ ไบโอเมตริก ข้อมูลยืนยันตัวตนของอุปกรณ์ @@ -545,19 +545,19 @@ อุปกรณ์นี้เป็น Android %1$s, แต่ต้องการ %2$s ขึ้นไป ล็อกฐานข้อมูลหลังจากปิดหน้าจอในไม่กี่วินาที ล็อกฐานข้อมูลเมื่อผู้ใช้กดปุ่มกลับบนหน้ารายการราก - แตะเพื่อลบกุญแจการปลดล็อกขั้นสูง - ใช้การปลดล็อกขั้นสูงเพื่อปลดล็อกฐานข้อมูลได้ง่ายขึ้น + แตะเพื่อลบกุญแจการปลดล็อกด้วนอุปกรณ์ + ใช้การปลดล็อกด้วยอุปกรณ์เพื่อปลดล็อกฐานข้อมูลได้ง่ายขึ้น การปลดล็อกด้วยไบโอเมตริก เปิดหน้ายืนยันอัตโนมัติ - เปิดการร้องขอการปลดล็อกขั้นสูงหากได้ตั้งค่าฐานข้อมูลไว้แล้ว - ไม่เก็บเนื้อหาเข้ารหัสใดๆเพื่อใช้กับการปลดล็อกขั้นสูง - ระยะหมดอายุของการปลดล็อกขั้นสูง - ระยะหมดเวลาของการปลดล็อกขั้นสูง - ลบกุญแจเข้ารหัสทั้งหมดที่เกี่ยวข้องกับการปลดล็อกขั้นสูง\? + เปิดการร้องขอการปลดล็อกด้วยอุปกรณ์หากได้ตั้งค่าฐานข้อมูลไว้แล้ว + ไม่เก็บเนื้อหาเข้ารหัสใดๆเพื่อใช้กับการปลดล็อกด้วยอุปกรณ์ + ระยะหมดอายุของการปลดล็อกด้วยอุปกรณ์ + ระยะหมดเวลาของการปลดล็อกด้วยอุปกรณ์ + ลบกุญแจเข้ารหัสทั้งหมดที่เกี่ยวข้องกับการปลดล็อกด้วยอุปกรณ์\? ไม่พบอุปกรณ์ที่เกี่ยวข้อง ให้คุณใช้ไบโอเมตริกเพื่อปลดล็อกฐานข้อมูล การปลดล็อกด้วยข้อมูลประจำตัว - ระยะเวลาของการใช้การปลดล็อกขั้นสูงก่อนที่จะลบข้อมูลดังกล่าวออก + ระยะเวลาของการใช้การปลดล็อกด้วยอุปกรณ์ก่อนที่จะลบข้อมูลดังกล่าวออก ลบกุญแจเข้ารหัส การบีบอัดข้อมูล ฟีเจอร์นี่จะเก็บข้อมูลประจำตัวที่เข้ารหัสไว้ที่ KeyStore ที่ปลอดภัยในอุปกรณ์ของคุณ @@ -584,7 +584,7 @@ เปลี่ยนแบบอักษรที่ใช้ในช่องเขตข้อมูลเพื่อให้มองเห็นตัวอักษรง่ายขึ้น ไว้ใจคลิปบอร์ด ล็อกฐานข้อมูลเมื่อระยะเวลาในคลิปบอร์ดสิ้นสุดหรือปิดหลังจากคุณเรื่มใช้มันแล้ว - ชื่อฐานข้อมุ, + ชื่อฐานข้อมูล เปิดใช้งานแป้นพิมพ์แบบพิเศษที่จะสำรวจช่องกรอกรหัสผ่านและข้อมูลอื่นๆ อนุญาตให้คัดลอกรหัสผ่านและเขตข้อมูลที่ป้องกันไว้เก็บในคลิปบอร์ด คำเตือน:คลิปบอร์ดถูกใช้ร่วมกันในทุกแอป หากข้อมูลละเอียดอ่อนถูกคัดลอกไป ซอฟท์แวร์อื่นอาจกู้มันกลับมาได้ @@ -592,7 +592,7 @@ สีของฐานข้อมูลที่กำหนดเอง เวอร์ชั่นของฐานข้อมูล อินเตอร์เฟซ - เมื่อดูรายการใน KeePassDX, Magikeyboard จะใช้รายการนั้นด้วย + เมื่อดูรายการใน KeePassDX, เมจิคีย์บอร์ด จะใช้รายการนั้นด้วย พยายามบันทึกข้อมูลที่ใช้ร่วมกันเมื่อเลือกกรอกรายการนั้นด้วยตนเองเพื่อใช้งานในอนาคตง่ายขึ้น ปิดฐานข้อมูลเมื่อปิดการแจ้งเตือน ลักษณะตัวหนังสือ @@ -614,7 +614,7 @@ รายการโดเมนเว็บที่บล็อก รายการที่บล็อกเพื่อกันไม่ให้กรอกข้อมูลในแอปอัตโนมัติ รายการที่บล็อกเพื่อกันไม่ให้กรอกข้อมูลในเว็บอัตโนมัติ - ลบกุญแจเข้ารหัสทั้งหมดที่เกี่ยวข้องกับการปลดลิอกขั้นสูง + ลบกุญแจเข้ารหัสทั้งหมดที่เกี่ยวข้องกับการปลดล็อกด้วยอุปกรณ์ การบันทึกฐานข้อมูลไม่อนุญาตสำหรับฐานข้อมูลที่อ่านอย่างเดียว เปิดแอปที่แบบฟอร์มนั้นขั้นมาใหม่เพื่อใช้งานการบล็อก เพื่มการแนะนำการกรอกอัตโนมัติ @@ -625,16 +625,16 @@ คำแนะนำการใช้งานถูกรีเซ็ทแล้ว ชุดไอคอน บันทึกฐานข้อมูลหลังจากการกระทำที่สำคัญ(ในโหมด\"แก้ไขได้\") - เปิดหน้าจอไว้ขณะดูรายการ + เปิดหน้าจอไว้ขณะดูหรือแก้ไขรายการ อนุญาตแอปอื่นๆบันทึกหรือถ่ายภาพหน้าจอแอปนี้ ไฮไลท์องค์ประกอบเพื่อเรียนรู้ว่าแอปใช้ยังไง คำแนะนำการใช้งาน - การปลดล็อกฐานข้อมูลขั้นสูง + การปลดล็อกฐานข้อมูลด้วยอุปกรณ์ เชื่อมโยงรหัสผ่านกับข้อมูลไบโอเมตริกหรือข้อมูลการเข้าสู่ระบบเพื่อปลดล็อกฐานข้อมูลได้เร็วขึ้น แก้ไขรายการ แก้ไขรายการด้วยเขตข้อมูลที่กำหนดเอง ข้อมูลสามารถอ้างอิงได้ระหว่างรายการเขตข้อมูลต่างๆ กำหนดช่องเขตข้อมูลเพื่มเติม, เพื่มค่าหรือจะเพื่มการป้องกันให้มันด้วยก็ได้ - สร้างรหัสผ่านที่แข็งแรงเพื่อใช้กับรายการของคุณ ความง่ายในการระบุขึ้นอยู่กับลักษณะแบบฟอรู์มนั้น และไม่ลืมรหัสผ่านที่ปลอดภัย + สร้างรหัสผ่านที่แข็งแรงเพื่อใช้กับรายการของคุณ ความง่ายในการระบุขึ้นอยู่กับลักษณะแบบฟอร์มนั้น และจงอย่าลืมรหัสผ่านที่ปลอดภัย อัปโหลดเอกสารแนบไปยังรายการของคุณเพื่อบันทึกข้อมูลภายนอกเพิ่มเติม ตั่้งค่ารหัสผ่านแบบใช้ครั้งเดียว (HOTP/TOTP) เพิ่อสร้างโทเค็นสำหรับการยืนยันสองขั้นตอน (2FA) คัดลอกเขตข้อมูล @@ -652,4 +652,15 @@ ถาม ต้องการสิทธิ์การแจ้งเตือนสำหรับคุณสมบัติการแจ้งเตือนของคลิปบอร์ด ภายหลัง + ปลดล็อก + เปลี่ยน, รอบการเปลี่ยน + ข้อมูล + ตรวจสอบรายการ + คีย์บอร์ด, การกรอกข้อมูลอัตโนมัติ, คลิปบอร์ด + การกำหนดค่า + ธีม, สี, คุณสมบัติ + การเข้ารหัส, ฟังก์ชั่นการแลกเปลี่ยนกุญแจ + ไบโอเมตริก, ข้อมูลประจำตัวของอุปกรณ์ + เมตาดาต้า, ถังขยะ, แม่แบบ, ประวัติ + การค้นหา, การล็อก, ประวัติ, ค่ากำหนด \ No newline at end of file From e2eae43fc9fabea4b863338add5ffb9e044fa631 Mon Sep 17 00:00:00 2001 From: Fjuro Date: Sun, 8 Oct 2023 06:11:54 +0000 Subject: [PATCH 23/47] Translated using Weblate (Czech) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/ --- app/src/main/res/values-cs/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 36cd45c69..f290f21bc 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -60,7 +60,7 @@ Arcfour proudová šifra není podporována. KeePassDX nemůže zpracovat toto URI. Soubor se nepodařilo vytvořit - Databázi se nepodařilo načíst. + Databázi se nepodařilo přečíst. Ujistěte se, že je popis umístění správný. Zadejte název. Vyberte soubor s klíčem. From b7b76d6da73149dc5ca929dedc61a0194bcbbdbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85zze?= Date: Sat, 7 Oct 2023 11:23:12 +0000 Subject: [PATCH 24/47] Translated using Weblate (Finnish) Currently translated at 39.7% (257 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fi/ --- app/src/main/res/values-fi/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index d10d9e22b..581f11d33 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -306,4 +306,5 @@ Et voi siirtää tietuetta tänne. Automaattista täyttöä ei voitu ottaa käyttöön. Solmun lapset + Tietoja \ No newline at end of file From fe68b7e29431deef3ed48ed13445711a2a17273a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Mesk=C3=B3?= Date: Sat, 7 Oct 2023 12:00:05 +0000 Subject: [PATCH 25/47] Translated using Weblate (Hungarian) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hu/ --- app/src/main/res/values-hu/strings.xml | 178 +++++++++++++++++++------ 1 file changed, 134 insertions(+), 44 deletions(-) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index cddf8b64b..28856641f 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -44,7 +44,7 @@ Számok KeePassDX © %1$d Kunzisoft. A program <strong>nyílt forráskódú</strong> és <strong>reklámmentes</strong>. \nA program jelen állapotában kerül közreadásra, <strong>GPLv3</strong> licenc alatt, bármilyen garancia nélkül. - Létező adatbázis megnyitása + Létező széf megnyitása Utolsó hozzáférés Mégse Megjegyzések @@ -55,7 +55,7 @@ Módosítva Jelszó Mentés - Név + Titulus URL Felhasználónév Az Arcfour adatfolyam-titkosítás nem támogatott. @@ -132,7 +132,7 @@ 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 Titkosított jelszó tárolva - Az adatbázisnak még nincs jelszava. + Nem érhető el Adja meg a jelszót és/vagy a kulcsfájlt, hogy kinyithassa az adatbázist. \n \nKészítsen biztonsági mentést az adatbázisról minden egyes módosítás után. @@ -147,7 +147,7 @@ Bővített ASCII Engedélyezés A bejegyzésadatok nem találhatóak. - Az adatbázis betöltése meghiúsult. + Nem sikerült az adatbázis betöltése. A kulcs nem tölthető be. Próbálja meg csökkenteni a KDF „Memóriahasználatot”. Az automatikus kitöltési szolgáltatás nem engedélyezhető. Felhasználónevek megjelenítése @@ -160,8 +160,8 @@ Mégse Írásvédett Módosítható - Új adatbázis létrehozása - Az összes adathoz használt adatbázis-titkosítási algoritmus. + Új széf létrehozása + Az összes adathoz használt adatbázis-titkosítási algoritmus A kulcs előállításához a titkosítási algoritmushoz, a mesterkulcs átalakításra került egy véletlenszerűen sózott kulcselőállítási függvénnyel. Memóriahasználat A kulcselőállítási függvényhez használt memóriamennyiség. @@ -198,11 +198,11 @@ Zárolás Képernyőzár Az adatbázis zárolása néhány másodperc után, ha a képernyő kikapcsol - Speciális feloldás + Eszközfeloldás Ujjlenyomat-alapú feloldás Lehetővé teszi, hogy leolvassa az ujjlenyomatát az adatbázis megnyitásához Titkosítási kulcsok törlése - Az összes, a speciális feloldásfelisméreshez tartozó titkosítási kulcs törlése + Az összes, az eszközfeloldás-felismeréshez tartozó titkosítási kulcs törlése 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. @@ -296,7 +296,7 @@ Keményen dolgozunk, hogy gyorsan kiadjuk ezt a funkciót. Ne felejtse naprakészen tartani az alkalmazást az új verziók telepítésével. Letöltés - Támogatás + Közreműködés Alkalmazástéma Az alkalmazásban használt téma Ikoncsomag @@ -382,7 +382,7 @@ Maximális szám Az adattömörítés csökkenti az adatbázis méretét Adattömörítés - Speciális feloldás használat az adatbázis könnyebb megnyitásához + Eszközfeloldás használata az adatbázis könnyebb megnyitásához A bejegyzésmezők másolása az eszköz vágólapjának használatával Adatbázis megnyitva Megoldja a problémát azzal, hogy új UUID-t állít elő az ismétlődések számára\? @@ -409,16 +409,16 @@ Előzmények Letiltás Engedélyezés - Automatikusan kéri a speciális feloldást, ha az adatbázis úgy van beállítva, hogy használja + Az eszközfeloldás automatikus kérése, ha az adatbázis úgy van beállítva, hogy használja Automatikus megnyitási képernyő Ujjlenyomat - Speciális feloldás + Eszközfeloldás Mezők bezárása Frissítés A csoportban szereplő bejegyzések számának megjelenítése Bejegyzések számának megjelenítése - Bejegyzés nem másolható ide. - Bejegyzés nem helyezhető át ide. + Nem másolhat ide bejegyzést. + Nem helyezhet át ide bejegyzéseket. UUID Mező eltávolítása Jelszó hossza @@ -462,12 +462,12 @@ A szöveg nem egyezik a kért elemmel. Hitelesítő adatok információi Elem hozzáadása - Fájl létrehozása az alkalmazástulajdonságok exportálásához - Alkalmazástulajdonságok exportálása - Válasszon fájlt az alkalmazástulajdonságok importálásához - Alkalmazástulajdonságok importálása + Fájl létrehozása az alkalmazásbeállítások exportálásához + Alkalmazásbeállítások exportálása + Válasszon fájlt az alkalmazásbeállítások importálásához + Alkalmazásbeállítások importálása Külső ikon - Speciális feloldási kulcs törlése + Eszközfeloldási kulcs törlése Adatok újratöltése Hiba történt az adatbázison végzett művelet során. Hiba történt a fájladatok eltávolítása során. @@ -511,46 +511,46 @@ Egyszer használatos jelszó információ Bejegyzés háttérszíne Bejegyzés előtérszíne - Alkalmazástulajdonságok importálva - Hiba történt az alkalmazástulajdonságok exportálása során + Alkalmazásbeállítások importálva + Hiba történt az alkalmazásbeállítások exportálása során Az adatbázisfájlban lévő információkat az alkalmazáson kívülről megváltoztatták. KeePassDX tulajdonságok az alkalmazásbeállítások kezeléséhez - Alkalmazástulajdonságok exportálva + Alkalmazásbeállítások exportálva Adatbázis színe - Hiba történt az alkalmazástulajdonságok importálása során + Hiba történt az alkalmazásbeállítások importálása során Ikon neve Válasszon bejegyzést… - Adatok egyesítése, majd a külső módosítások felülírása az adatbázis mentésével, vagy az adatbázis újratöltése a legfrissebb változtatásokkal. - Speciális feloldásfelismerés - Figyelmeztetés: Továbbra is meg kell jegyeznie a mesterjelszót, ha a speciális feloldásfelismerést használja. - Adatbázis hitelesítő adatainak kinyerése a speciális adatfeloldással - A speciális feloldási kulcs nem olvasható. Törölje, és ismételje meg a feloldásfelismerési folyamatot. - A speciális feloldási ujjlenyomat nem ismerhető fel - A speciális feloldási képernyő előkészítése sikertelen. + Adatok egyesítése, majd a külső módosítások felülírása az adatbázis mentésével, vagy újratöltés a legfrissebb változtatásokkal. + Hivatkozás az eszköz feloldásához + Továbbra is meg kell jegyeznie a széf fő jelszavát, ha az eszköz feloldásfelismerését használja. + Adatbázis hitelesítő adatainak kinyerése az eszköz adatfeloldásával + Az eszközfeloldási kulcs nem olvasható. Törölje, és ismételje meg a feloldásfelismerési folyamatot. + Az eszközfeloldási ujjlenyomat nem ismerhető fel + Az eszközfeloldási képernyő előkészítése sikertelen. Tulajdonságok Eszköz hitelesítő adatai - Ne tároljon semmilyen titkosított tartalmat a speciális feloldás használatához - Speciális feloldás lejárati ideje + Ne tároljon semmilyen titkosított tartalmat az eszközfeloldás használatához + Eszközfeloldás lejárati ideje A fájl elérését visszavonta a fájlkezelő, zárja be az adatbázist és nyissa meg újra a helyéről. Nem engedélyezte az alkalmazásnak, hogy pontos riasztást használjon. Ezért az időzítőt használó funkciók nem a pontos időt fogják használni. - Adatbázis megnyitása a speciális feloldásfelismeréssel + Eszköz feloldásfelismerése Írja be a jelszót, majd kattintson erre a gombra. - Ideiglenes speciális feloldás + Ideiglenes eszközfeloldás Engedély - Speciális feloldási hiba: %1$s + Eszközfeloldási hiba: %1$s Tartalom - Koppintson a speciális feloldási kulcsok törléséhez + Koppintson az eszközfeloldási kulcsok törléséhez Eszköz hitelesítő adataival történő feloldás Lehetővé teszi, hogy az eszköz hitelesítő adataival nyissa meg az adatbázist Letiltott alkalmazások Adatok egyesítése Adatbázis bezárása - A speciális feloldás használata ideje, mielőtt a tartalma törölve lesz - Speciális feloldás időtúllépése + Az eszközfeloldás használata ideje, mielőtt a tartalma törölve lesz + Eszközfeloldás időtúllépése Sablonok használata Dinamikus sablonok használata a bejegyzés mezőinek kitöltéséhez Sabloncsoport - Automatikus kulcsművelet + Visszaváltás Automatikus visszaváltás az előző billentyűzetre az „Automatikus kulcsművelet” végrehajtása után Adatbázis zárolása Automatikus visszaváltás az előző billentyűzetre az adatbázis zárolása után @@ -563,8 +563,8 @@ Kézi kiválasztás Lehetőség megjelenítése, hogy a felhasználó válasszon adatbázis-bejegyzést Keresési információk mentése - A keresési információk mentésének kísérlete kézi bejegyzéskiválasztásnál - Az adatok mentésének kérése az űrlapok ellenőrzésekor + A könnyebb jövőbeli használat érdekében próbálja menteni a keresési információkat a kézi bejegyzéskiválasztásnál + Az adatok mentésének kérése az űrlapok kitöltésének befejezésekor 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. @@ -580,8 +580,8 @@ Téma fényereje Megjeleníti a bejegyzéshez vagy csoporthoz tartozó UUID-t OTP token megjelenítése - Törli az összes, a speciális feloldásfelisméreshez tartozó titkosítási kulcsot\? - Egy URL KeePassDX-be történő megosztásakor, ha kiválaszt egy bejegyzést, akkor megpróbálja megjegyezni a bejegyzés a további használathoz + Törli az összes, az eszközfeloldás-felismeréshez tartozó titkosítási kulcsot\? + A könnyebb jövőbeli használat érdekében próbálja menteni a megosztott információkat a kézi bejegyzéskiválasztásnál Egyéni mezők Vissza az előző billentyűzethez %1$s feltöltése @@ -591,11 +591,101 @@ Tiltólista, amely megakadályozza az alkalmazások automatikus kitöltését Letiltott webes domainek Adatok mentésének kérése - Speciális adatbázis-feloldás + Eszközadatbázis feloldása A jelszó összekötése a leolvasott biometrikus adatokkal vagy eszköz-hitelesítőadatokkal, hogy gyorsan feloldhassa az adatbázist. Megjeleníti az OTP tokeneket a bejegyzések között Melléklet hozzáadása Automatikus visszaváltás az előző billentyűzetre az adatbázis-hitelesítőadatok képernyőn Az adatbázis újratöltése törli a helyileg módosított adatokat. Sablonok + Nem kérhető le a válasz a kihívásból. + Nem lehet egyesíteni az adatbázis V1-es változatából. + Entrópia: %1$s bit + Keresési képernyő + Nem helyezhet át ide csoportot. + Automatikus bevitel + A fájl ujjlenyomata nem garantált, mert az Android menet közben is módosíthatja az adatokat. A helyes integritás-ellenőrzéshez módosítsa a fájlt .bin kiterjesztésűre. + A kihívás már kérve volt + Öröklés + Hardverkulcs megjegyzése + Karakterek figyelembe vétele + Entrópia: magas + A felhasználó által megszakítva. + Összekeverhető karakterek kihagyása + Feloldás + Módosítás, megújítás + Információ + A kulcs nem lehet üres. + Egyéni adatok + Címkék + Hardverkulcs + Automatikus visszaváltás az előző billentyűzetre a keresési képernyőn + Bejegyzés ellenőrzése + Karakterek mellőzése + Kérdés + Kereshető + Billentyűzet, automatikus kitöltés, vágólap + Beállítás + Navigációs fejléc + A navigációs tálca bezárása + Nincsenek felhasználói adatok lekérve, az alkalmazás nem kapcsolódik semmilyen külső kiszolgálóhoz, csak helyben működik, és teljes mértékben tiszteletben tartja a felhasználók adatvédelmét. + Képernyő bekapcsolva tartása egy bejegyzés megtekintésekor vagy szerkesztésekor + Nagy Kezdőbetűs + A navigációs tálca kinyitása + Hardverkulcs jelölőnégyzete + Legalább egy karakter mindegyikből + kisbetűk + Képernyőképmodul + Kis- és nagybetű eltérő + Az adatbázis helye ismeretlen, az adatbázis-művelet nem hajtható végre. + A jelmondat szószáma + Reguláris kifejezés + Bejegyzésszínek + Jelmondat + Témák, színek, attribútumok + Lejárt + A válasz már megérkezett. + A jelszó karaktereinek színezése típus szerint + Várakozás a kihívási kérésre… + Keresési szűrők + Jelenlegi csoport + Automatikus bevitelsorozat + Elválasztó + Engedélyezés a harmadik féltől származó alkalmazásoknak, hogy képernyőképet vagy felvételt készítsenek az alkalmazásról + Titkosítás, kulcselőállító függvény + Várakozás a kihívás válaszára… + Wi-Fi + A hardverkulcs nem támogatott. + Jelszavak színezése + Biometrikus adatok, eszköz-hitelesítőadatok + Hibásan formázott XML. + Követi a használt hardverkulcsokat + Egy adatbázis már nyitva van, előbb zárja be, hogy újat nyisson meg + Ne felejtse el ellenőrizni a bejegyzést és menteni az adatbázist. +\n +\nHa az automatikus zárolás aktiválva van, és elfelejti, hogy módosítást végzett, akkor az adatvesztést kockáztatja. + Az értesítési engedély lehetővé teszi az adatbázis állapotának megjelenítését, és az egyszerű ikonnal történő zárolást. +\n +\nHa nem aktiválja az engedélyt, akkor a háttérben nyitott adatbázis nem lesz látható, ha egy másik alkalmazás van előtérben. + A funkció eltárolja a titkosított hitelesítőadatokat az eszköz biztonságos kulcstárában. +\n +\nAz operációs rendszer natív API megvalósításától függően lehet, hogy nem lesz teljes értékű. +\nEllenőrizze a kulcstár kompatibilitását és biztonságát az eszköz gyártójánál és a használt ROM készítőjénél. + Megjeleníti egy bejegyzés előtér- és háttérszínét + Eszközfeloldási hivatkozás + Az értesítési engedély szükséges a vágólap-értesítési funkció használatához. + Másolat mentése ide… + Képernyőkép mód + A(z) %1$s illesztőprogramja szükséges. + Egyesítés innen… + Entrópia: kiszámítás… + Karakterszám: %1$d + Metaadatok, kuka, sablonok, előzmények + Az egyesítés sikeresen elkészült + NAGYBETŰK + Képernyő bekapcsolva tartása + Sérült fájl. + Keresés, zárolás, előzmények, tulajdonságok + Később + Válasszon hardverkulcsot. \ No newline at end of file From 88e53fcba807d57088f5d313f418ef8633bf5b25 Mon Sep 17 00:00:00 2001 From: elgratea Date: Thu, 12 Oct 2023 18:36:06 +0000 Subject: [PATCH 26/47] Translated using Weblate (Bulgarian) Currently translated at 13.1% (85 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/ --- app/src/main/res/values-bg/strings.xml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 56d83c3c8..c485f4845 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -64,4 +64,25 @@ Изберете, за да копирате %1$s в клипборда Таен ключ Уебсайт + Базата данни се зарежда… + Парола + Запомни хардуерните ключове + Съдържанието на базата данни се декриптира… + Отключи + Не може да се намери съответният хардуер. + Хардуерен ключ + Маскира паролите (***) по подразбиране + Отвори съществуваща база данни + Хардуерен ключ отметка + Скриване на пароли + Парола + Отвори съществуваща база данни + Файл с ключ отметка + Хардуерният ключ не се поддържа. + Пази запис на използваните хардуерни ключове + Избери файл с ключ. + Файл с ключ + Избери хардуерен ключ. + Ще трябва да запомните основните си идентификационни данни на базата данни, дори като използвате разпознаване на отключването на устройството. + Създай нова база данни \ No newline at end of file From 809db61c35543353fea4d9e888a20fda8318490b Mon Sep 17 00:00:00 2001 From: Stasky745 Date: Sat, 14 Oct 2023 15:26:28 +0000 Subject: [PATCH 27/47] Translated using Weblate (Catalan) Currently translated at 62.4% (404 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ca/ --- app/src/main/res/values-ca/strings.xml | 143 ++++++++++++++++++++++--- 1 file changed, 131 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 1fc86dbbb..91a795d99 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -30,17 +30,18 @@ Aplicació Configuració de l\'aplicació Parèntesis - Un gestor de fitxers que accepta les intencions ACTION_CREATE_DOCUMENT i ACTION_OPEN_DOCUMENT, que us calen per a crear, obrir i desar fitxers de base de dades. - Porta-retalls netejat. + Es requereix un gestor d\'arxius que accepti les intencions ACTION_CREATE_DOCUMENT i ACTION_OPEN_DOCUMENT per a crear, obrir i desar fitxers de base de dades. + Porta-retalls netejat Temps d\'espera del porta-retalls Temps abans de netejar el porta-retalls (si el teu dispositiu ho suporta) Selecciona per copiar %1$s al porta-retalls Es recupera la clau de base de dades… Base de dades - Es desxifra el contingut de la base de dades… + Desxifrant la base de dades… Utilitza com a base de dades per defecte Dígits - KeePassDX © %1$d Kunzisoft ve sense cap mena de garantia. Això és programari lliure, i pots redistribuir-lo sota els termes de la llicència GPL versió 3 o posterior. + KeePassDX © %1$d Kunzisoft és programari lliure i sense anuncis. +\nEs proporciona tal com està, sota una llicència GPLv3, sense cap garantia. Obri una base de dades existent Accedida Cancel·la @@ -139,10 +140,10 @@ Nom d\'usuari per defecte Descripció de la base de dades Nom de la base de dades - Neteja en tancar + Neteja al tancar Desactiva Activa - Obliga a canviar la contrasenya mestra (dies) + Força a canviar la clau mestra (dies) Força la renovació Mida màxima Nombre màxim @@ -197,9 +198,9 @@ Amaga els enllaços trencats en la llista de bases de dades recents Mostra la ubicació de les bases de dades recents Mostra els fitxers recents - Desa la ubicació dels fitxers de claus + Recorda la ubicació dels fitxers de claus Recorda la ubicació de les bases de dades - Desa la ubicació de les bases de dades + Recorda l\'ubicació de les bases de dades Mode de selecció Voleu resoldre el problema creant nous UUIDs per als duplicats per a continuar\? La base de dades conté UUIDs duplicats. @@ -221,7 +222,7 @@ Copiar Paràmetres de la contrasenya mestra Paràmetres de seguretat - Desblocatge avançat + Desblocatge de dispositiu Emplenat de formularis Còpia de %1$s Es crea la base de dades… @@ -244,7 +245,7 @@ No és possible copiar cap entrada aquí. No és possible moure cap entrada aquí. Aquesta etiqueta ja existeix. - No s’ha pogut carregar la vostra base de dades. + No s’ha pogut carregar la base de dades. OTP Algorisme Dígits @@ -304,8 +305,8 @@ En <strong>col·laborar-hi</strong>, Casella del fitxer de la clau Casella de la contrasenya - Informació de la contrasenya d’un sol ús - Informació de les dades d’accés + Informació de contrasenya d\'únic ús + Informació de credencials Afegeix un element Bloca la base de dades Aquest <strong>estil visual</strong> és disponible gràcies a la vostra generositat. @@ -326,4 +327,122 @@ El paquet d’icones que s’utilitza a l’aplicació Paquet d’icones Personalitzat + Plantilles + No es pot fusionar d\'una base de dades V1. + Auto-Escriptura + Importar configuració de l\'aplicació + CVV + Heretar + Recorda les claus físiques + Considera caràcters + Exclou caràcters ambigus + Desbloqueja + Banc + Cap + Info + Color de fons d\'entrada + La clau no pot ser buida. + Dades personalitzades + Etiquetes + Lloc d\'expedició + Escull tema clar o fosc + Clau física + Mode de registre + Ignora caràcters + Pregunta + Cercable + Moltes gràcies per la teva contribució. + Teclat, autoemplena, porta-retalls + Exporta la configuració de l\'aplicació + Email + Títol de navegació + Tancar calaix de navegació + Propietats + Bloca la base de dades quan la duració del porta-retalls caduca o la notificació es tanca un cop s\'ha començat a utilitzar + No s\'agafa cap dada d\'usuari, aquesta aplicació no connecta a cap servidor, només treballa localment i respecta la privacitat dels usuaris en la seva totalitat. + Notificació + Color de primer pla d\'entrada + Desbloqueja dispositiu + Plantilla + Primera Majúscula + Obrir calaix de navegació + Limita la mida de l\'historial per entrada + Configuració de l\'aplicació exportada + Error a l\'exportar la configuració de l\'aplicació + Tipus + Casella de clau física + Recomanar renovació + Nom + minúscula + Selecciona un fitxer per importar la configuració de l\'aplicació + Canvia la font usada en els camps per una millor visibilitat dels caràcters + Estem treballant de valent per implementar aquesta característica ràpidament. + Tanca la base de dades després d\'auto-completar + Mode captura de pantalla + Interfície + Error a l\'importar la configuració de l\'aplicació + Sensible a majúscules i minúscules + Localització de la base de dades desconeguda, l\'acció no es pot fer. + Pertinença + Nombre de paraules de la contrasenya + Dada + Versió + Expressió regular + Número + Altre + Compte + Confia en el porta-retalls + Titular + Expirat + Data d\'expedició + Cartera de cryptomoneda + Força renovació el pròxim cop + Esperant la sol·licitud de desafiament… + Filtres de cerca + Grup actual + No permetis clau mestra + Clau pública + Repetir canvi de visibilitat de contrasenya + Seqüència d\'Auto-Escriptura + PIN + Separador + Gzip + Esperant la resposta de desafiament… + Nom del banc + Wi-Fi + Estableix el servei d\'emplenament automàtic predeterminat + Compressió + Targeta d\'identificació + Clau física no suportada. + Biometria, credencial de dispositiu + Estàndard + XML mal format. + Recorda les claus físiques que s\'han usat + Token + Targeta de Dèbit / Crèdit + Propietats de KeePassDX per administrar la configuració de l\'aplicació + Desar còpia a … + SSID + Alerta: El porta-retalls és compartit per totes les aplicacions. Si es copien dades sensibles, altres programes poden veure-ho. + Clau privada + Crea un fitxer per exportar la configuració de l\'aplicació + Permís + Recarregar dada + IBAN + Fusionar desde … + Color de la base de dades + Comptador de caràcters: %1$d + Adreça electrònica + Fusió completada satisfactòriament + Llavor + Recomanar canviar la clau mestra (dies) + Tanca la base de dades + SWIFT / BIC + MAJÚSCULA + Tipografia de camp + Fitxer corrupte. + Selecciona clau física. + Requereix canviar la clau mestra el pròxim cop (un cop) + Permet copiar la clau i els camps protegits d\'una entrada al porta-retalls + Configuració de l\'aplicació importada \ No newline at end of file From bb3436615e282aae3f0ef5835706b5e3bbe51ea6 Mon Sep 17 00:00:00 2001 From: "P.O" Date: Sat, 14 Oct 2023 12:39:18 +0000 Subject: [PATCH 28/47] Translated using Weblate (Swedish) Currently translated at 60.1% (389 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sv/ --- app/src/main/res/values-sv/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 3585186f8..2dfd03c0b 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -25,7 +25,7 @@ Ny post Ny grupp Krypterings algoritm - Tidsgräns för app + Tidsgräns Inaktivitet innan databasen låses App App-inställningar @@ -471,4 +471,8 @@ Lägg till ny Inloggningsuppgifter Information + Typ + Antal ord i Lösenordsfras + Offentlig nyckel + Privat nyckel \ No newline at end of file From 1b54b79e88c2d1504f6d4d8cb7062e75c342cb46 Mon Sep 17 00:00:00 2001 From: Jean Mareilles Date: Wed, 25 Oct 2023 18:19:16 +0000 Subject: [PATCH 29/47] Translated using Weblate (French) Currently translated at 100.0% (647 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/ --- app/src/main/res/values-fr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 11307e740..3f29dd53b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -688,7 +688,7 @@ Changement, renouvellement Biométrie, identifiant de l\'appareil Liaison avec déverouillage de l\'appareil - Déverouiller + Déverrouiller Configurer Métadonnées, corbeille, gabarits, historique Chiffrement, fonction de dérivation de clé From e173159d13fa927636c2e9db1387827ce2944ef9 Mon Sep 17 00:00:00 2001 From: ngocanhtve Date: Sat, 28 Oct 2023 02:06:21 +0000 Subject: [PATCH 30/47] Translated using Weblate (Vietnamese) Currently translated at 33.3% (216 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/vi/ --- app/src/main/res/values-vi/strings.xml | 73 ++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 50a388a9b..a5360cc7c 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1,7 +1,7 @@ Cần có một trình duyệt tập tin chấp nhận hành động chủ đích ACTION_CREATE_DOCUMENT và ACTION_OPEN_DOCUMENT để tạo, mở, và lưu tệp tin chứa cơ sở dữ liệu. - Không thể tải cơ sở dữ liệu của bạn. + Không thể tải cơ sở dữ liệu. Không đủ bộ nhớ để tải toàn bộ cơ sở dữ liệu của bạn. Chọn một tệp chứa khoá. Nhập tên. @@ -51,17 +51,17 @@ Thêm trường Độ dài mật khẩu Trình tạo mật khẩu - Xoá + Loại bỏ Huỷ thay đổi\? Xác nhận - Biểu tượng của mục - Ô đánh dấu tệp tin chứa khoá + Biểu tượng của mục nhập + Hộp kiểm tệp khóa Ô đánh dấu mật khẩu Thông tin về mật khẩu dùng một lần Thông tin định danh Thông tin tệp tin Thêm nhóm - Thêm mục + Thêm mục nhập Thêm nút Nút con Mở tệp tin @@ -76,14 +76,14 @@ Dấu ngoặc Ứng dụng Thời gian không hoạt động trước khi khoá cơ sở dữ liệu - Hàm tạo khoá + Hàm khóa phái sinh Thuật toánmã hoá Mã hoá Bảo mật - Khoá chính + Chìa khoá chính Thêm nhóm - Sửa mục - Thêm mục + Sửa mục nhập + Thêm mục nhập Đồng ý Phiên bản Android của phần mềm quản lý mật khẩu KeePass Trang chủ @@ -158,7 +158,7 @@ Sai thuật toán. Không đọc được định dạng cơ sở dữ liệu. Hãy cài đặt trình duyệt web để mở đường dẫn này. - Mở cơ sở dữ liệu có sẵn + Mở két sắt có sẵn Chữ thường Ẩn mật khẩu Có lỗi xảy ra khi tải dữ liệu từ tệp lên. @@ -172,4 +172,57 @@ Mở Có thể sửa Mặc định che mật khẩu (***) + Tự động gõ + Kế tục + Các mục đã hết hạn không được hiển thị + Xem xét các ký tự + Loại trừ các ký tự không rõ ràng + Chủ đề ứng dụng + GiB + Thông tin + Màu nền mục nhập + KiB + Dữ liệu tùy chỉnh + Thẻ + Chọn chủ đề sáng hoặc tối + Khóa phần cứng + Bỏ qua các ký tự + Có thể tìm kiếm + Hoàn thành! + Cảm ơn rất nhiều vì sự đóng góp của bạn. + Chủ đề được sử dụng trong ứng dụng + Độ sáng chủ đề + Không có dữ liệu người dùng nào được truy xuất, ứng dụng này không kết nối với bất kỳ máy chủ nào, chỉ hoạt động cục bộ và hoàn toàn tôn trọng quyền riêng tư của người dùng. + Màu nền trước mục nhập + Hộp kiểm khóa phần cứng + Ít nhất một ký tự từ mỗi ký tự + chữ thường + Chế độ chụp màn hình + Phân biệt chữ hoa chữ thường + Tùy chỉnh + Số từ cụm mật khẩu + Biểu thức chính quy + Màu mục nhập + Đã hủy! + Tiêu chuẩn + Chỉnh sửa mục nhập + Hết hạn + Đang chờ yêu cầu thử thách… + Bộ lọc tìm kiếm + Đang mở khóa cơ sở dữ liệu thiết bị + Nhóm hiện tại + Trình tự nhập tự động + Dấu phân cách + Chờ phản hồi thử thách… + Wi-Fi + Ẩn các mục đã hết hạn + Hiển thị màu nền trước và nền sau cho một mục nhập + Gói biểu tượng được sử dụng trong ứng dụng + Màu cơ sở dữ liệu + Số ký tự: %1$d + B + MiB + CHỮ HOA + Chọn một khóa phần cứng. + Bộ biểu tượng \ No newline at end of file From 7198ffff4349e128d235b74b5485e97d2f3e8245 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sun, 29 Oct 2023 20:45:35 +0100 Subject: [PATCH 31/47] fix: Save as --- .../kunzisoft/keepass/database/action/SaveDatabaseRunnable.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/action/SaveDatabaseRunnable.kt b/app/src/main/java/com/kunzisoft/keepass/database/action/SaveDatabaseRunnable.kt index 74ab4e755..79f165a63 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/action/SaveDatabaseRunnable.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/action/SaveDatabaseRunnable.kt @@ -44,7 +44,8 @@ open class SaveDatabaseRunnable( override fun onActionRun() { database.checkVersion() - if (saveDatabase && result.isSuccess) { + // Save database in all cases if it's a copy + if ((databaseCopyUri != null || saveDatabase) && result.isSuccess) { try { val contentResolver = context.contentResolver // Build temp database file to avoid file corruption if error From a97bad1f864ab128eca8439e3a74e5a17eb0cd6a Mon Sep 17 00:00:00 2001 From: ngocanhtve Date: Sun, 29 Oct 2023 07:06:57 +0000 Subject: [PATCH 32/47] Translated using Weblate (Vietnamese) Currently translated at 34.4% (223 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/vi/ --- app/src/main/res/values-vi/strings.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index a5360cc7c..9d37a2e88 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -225,4 +225,11 @@ CHỮ HOA Chọn một khóa phần cứng. Bộ biểu tượng + Thông tin thông báo + Cài đặt Magikeyboard + Khi xem một mục trong KeePassDX, hãy điền Magikeyboard với mục đó + Đang hoàn thiện… + Hiển thị thông báo khi mục nhập có sẵn + Mục + Lưu thông tin được chia sẻ \ No newline at end of file From d16b4cfadb9b6271a4ba7b065bc228e0ea545200 Mon Sep 17 00:00:00 2001 From: Urystem Date: Tue, 31 Oct 2023 12:48:01 +0100 Subject: [PATCH 33/47] Added translation using Weblate (Kazakh) --- app/src/main/res/values-kk/strings.xml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/src/main/res/values-kk/strings.xml diff --git a/app/src/main/res/values-kk/strings.xml b/app/src/main/res/values-kk/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-kk/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file From cbc6df2e627a874ddf69ec503ae20792b1197035 Mon Sep 17 00:00:00 2001 From: /dev/urandom Date: Wed, 1 Nov 2023 15:24:49 +0000 Subject: [PATCH 34/47] Translated using Weblate (Esperanto) Currently translated at 21.9% (142 of 647 strings) Translation: KeePassDX/Strings Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/eo/ --- app/src/main/res/values-eo/strings.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index d08b35e18..1cfb7b878 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -145,4 +145,12 @@ Hejmpaĝo Kontribuo Kontakto + Iu aparatoj ne permesas al apoj uzi tondujon. + Varianto de pasvort-manipulilo KeePass por Android + Funkcio por derivado de ŝlosilo + Informo + Erar-raportoj kaj sugestoj + Por krei, malfermi kaj konservi datumbazaj dosieroj necesiĝas dosier-manipulilo, kiu akceptas intenco-agojn ACTION_CREATE_DOCUMENT kaj ACTION_OPEN_DOCUMENT. + Periodo de malaktiveco antaŭ ŝlosado de datumbazo + Etendita ASCII \ No newline at end of file From 479bc7be71406af38e1eea36e607303c3538a18d Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 4 Nov 2023 11:36:44 +0100 Subject: [PATCH 35/47] Upgrade to 4.0.3 --- CHANGELOG | 3 +++ app/build.gradle | 4 ++-- fastlane/metadata/android/en-US/changelogs/126.txt | 1 + fastlane/metadata/android/fr-FR/changelogs/126.txt | 1 + 4 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/126.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/126.txt diff --git a/CHANGELOG b/CHANGELOG index ad1483790..47986b578 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +KeePassDX(4.0.3) + * Fix "Save as" in Read Only + KeePassDX(4.0.2) * Fix Autofill with API 33 diff --git a/app/build.gradle b/app/build.gradle index 9477f777b..8a91a1d67 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.kunzisoft.keepass" minSdkVersion 15 targetSdkVersion 33 - versionCode = 125 - versionName = "4.0.2" + versionCode = 126 + versionName = "4.0.3" multiDexEnabled true testApplicationId = "com.kunzisoft.keepass.tests" diff --git a/fastlane/metadata/android/en-US/changelogs/126.txt b/fastlane/metadata/android/en-US/changelogs/126.txt new file mode 100644 index 000000000..9dd81dbe6 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/126.txt @@ -0,0 +1 @@ + * Fix "Save as" in Read Only \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/126.txt b/fastlane/metadata/android/fr-FR/changelogs/126.txt new file mode 100644 index 000000000..e801a4bf0 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/126.txt @@ -0,0 +1 @@ + * Correction "Sauvegarder comme" en mode lecture seule \ No newline at end of file From 2d8f8aeef33e6994312cbc81844ba7b9670ce8fb Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 4 Nov 2023 13:02:57 +0100 Subject: [PATCH 36/47] fix: Compatibility mode to retrieve username #1508 --- .../keepass/autofill/StructureParser.kt | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/autofill/StructureParser.kt b/app/src/main/java/com/kunzisoft/keepass/autofill/StructureParser.kt index d3378f90d..1185fabd5 100644 --- a/app/src/main/java/com/kunzisoft/keepass/autofill/StructureParser.kt +++ b/app/src/main/java/com/kunzisoft/keepass/autofill/StructureParser.kt @@ -105,7 +105,7 @@ class StructureParser(private val structure: AssistStructure) { if (node.autofillId != null) { // Parse methods val hints = node.autofillHints - if (hints != null && hints.isNotEmpty()) { + if (!hints.isNullOrEmpty()) { if (parseNodeByAutofillHint(node)) returnValue = true } else if (parseNodeByHtmlAttributes(node)) @@ -135,9 +135,12 @@ class StructureParser(private val structure: AssistStructure) { || it.contains(View.AUTOFILL_HINT_EMAIL_ADDRESS, true) || it.contains("email", true) || it.contains(View.AUTOFILL_HINT_PHONE, true) -> { - result?.usernameId = autofillId - result?.usernameValue = node.autofillValue - Log.d(TAG, "Autofill username hint") + // Priority to username or add if null + if (result?.usernameId == null || it.contains(View.AUTOFILL_HINT_USERNAME, true)) { + result?.usernameId = autofillId + result?.usernameValue = node.autofillValue + Log.d(TAG, "Autofill username hint") + } } it.contains(View.AUTOFILL_HINT_PASSWORD, true) -> { result?.passwordId = autofillId @@ -284,9 +287,12 @@ class StructureParser(private val structure: AssistStructure) { Log.d(TAG, "Autofill username web type: ${node.htmlInfo?.tag} ${node.htmlInfo?.attributes}") } "text" -> { - usernameIdCandidate = autofillId - usernameValueCandidate = node.autofillValue - Log.d(TAG, "Autofill username candidate web type: ${node.htmlInfo?.tag} ${node.htmlInfo?.attributes}") + // Assume username is before password + if (result?.passwordId == null) { + usernameIdCandidate = autofillId + usernameValueCandidate = node.autofillValue + Log.d(TAG, "Autofill username candidate web type: ${node.htmlInfo?.tag} ${node.htmlInfo?.attributes}") + } } "password" -> { result?.passwordId = autofillId @@ -332,14 +338,18 @@ class StructureParser(private val structure: AssistStructure) { InputType.TYPE_TEXT_VARIATION_NORMAL, InputType.TYPE_TEXT_VARIATION_PERSON_NAME, InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT) -> { - usernameIdCandidate = autofillId - usernameValueCandidate = node.autofillValue + // Assume the username field is before the password field + if (result?.passwordId == null) { + usernameIdCandidate = autofillId + usernameValueCandidate = node.autofillValue + } Log.d(TAG, "Autofill username candidate android text type: ${showHexInputType(inputType)}") } inputIsVariationType(inputType, InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) -> { // Some forms used visible password as username - if (usernameIdCandidate == null && usernameValueCandidate == null) { + if (result?.passwordId == null && + usernameIdCandidate == null && usernameValueCandidate == null) { usernameIdCandidate = autofillId usernameValueCandidate = node.autofillValue Log.d(TAG, "Autofill visible password android text type (as username): ${showHexInputType(inputType)}") From 68cbdae8e0f2f57f2fd2957fe8a11099801dc793 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 4 Nov 2023 15:07:15 +0100 Subject: [PATCH 37/47] fix: update CHANGELOG --- CHANGELOG | 3 ++- fastlane/metadata/android/en-US/changelogs/126.txt | 3 ++- fastlane/metadata/android/fr-FR/changelogs/126.txt | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 47986b578..29f5494db 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ KeePassDX(4.0.3) - * Fix "Save as" in Read Only + * Fix "Save as" in Read Only mode #1666 + * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 KeePassDX(4.0.2) * Fix Autofill with API 33 diff --git a/fastlane/metadata/android/en-US/changelogs/126.txt b/fastlane/metadata/android/en-US/changelogs/126.txt index 9dd81dbe6..fedf61d7a 100644 --- a/fastlane/metadata/android/en-US/changelogs/126.txt +++ b/fastlane/metadata/android/en-US/changelogs/126.txt @@ -1 +1,2 @@ - * Fix "Save as" in Read Only \ No newline at end of file + * Fix "Save as" in Read Only mode #1666 + * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/126.txt b/fastlane/metadata/android/fr-FR/changelogs/126.txt index e801a4bf0..378e979cb 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/126.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/126.txt @@ -1 +1,2 @@ - * Correction "Sauvegarder comme" en mode lecture seule \ No newline at end of file + * Correction "Sauvegarder comme" en mode lecture seule #1666 + * Correction du nom d'utilisateur dans la reconnaissance automatique #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 From 815fb911d6af922b15f10a5515b5d15615cd03b4 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 4 Nov 2023 16:03:20 +0100 Subject: [PATCH 38/47] fix: regex OTP recognition #1596 --- CHANGELOG | 1 + .../kunzisoft/keepass/otp/OtpEntryFields.kt | 32 +++++++++---------- .../metadata/android/en-US/changelogs/126.txt | 3 +- .../metadata/android/fr-FR/changelogs/126.txt | 1 + 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 29f5494db..07e9e9dd0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ KeePassDX(4.0.3) * Fix "Save as" in Read Only mode #1666 * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 + * Fix regex OTP recognition #1596 KeePassDX(4.0.2) * Fix Autofill with API 33 diff --git a/database/src/main/java/com/kunzisoft/keepass/otp/OtpEntryFields.kt b/database/src/main/java/com/kunzisoft/keepass/otp/OtpEntryFields.kt index ba8090cbd..e32611cf3 100644 --- a/database/src/main/java/com/kunzisoft/keepass/otp/OtpEntryFields.kt +++ b/database/src/main/java/com/kunzisoft/keepass/otp/OtpEntryFields.kt @@ -50,7 +50,7 @@ object OtpEntryFields { private const val COUNTER_URL_PARAM = "counter" // OTPauth URI - private const val REGEX_OTP_AUTH = "^(?:otpauth://([ht]otp)/)(?:(?:([^:?#]*): *)?([^:?#]*))(?:\\?([^#]+))$" + private const val REGEX_OTP_AUTH = "^otpauth://([ht]otp)/?(?:([^:?#]*): *)?([^:?#]*)\\?([^#]+)$" // Key-values (maybe from plugin or old KeePassXC) private const val SEED_KEY = "key" @@ -140,7 +140,7 @@ object OtpEntryFields { */ private fun parseOTPUri(getField: (id: String) -> String?, otpElement: OtpElement): Boolean { val otpPlainText = getField(OTP_FIELD) - if (otpPlainText != null && otpPlainText.isNotEmpty() && isOTPUri(otpPlainText)) { + if (!otpPlainText.isNullOrEmpty() && isOTPUri(otpPlainText)) { val uri = Uri.parse(otpPlainText.removeSpaceChars()) if (uri.scheme == null || OTP_SCHEME != uri.scheme!!.lowercase(Locale.ENGLISH)) { @@ -171,7 +171,7 @@ object OtpEntryFields { } val nameParam = validateAndGetNameInPath(uri.path) - if (nameParam != null && nameParam.isNotEmpty()) { + if (!nameParam.isNullOrEmpty()) { val userIdArray = nameParam.split(":", "%3A") if (userIdArray.size > 1) { otpElement.issuer = userIdArray[0].removeLineChars() @@ -182,11 +182,11 @@ object OtpEntryFields { } val issuerParam = uri.getQueryParameter(ISSUER_URL_PARAM) - if (issuerParam != null && issuerParam.isNotEmpty()) + if (!issuerParam.isNullOrEmpty()) otpElement.issuer = issuerParam.removeLineChars() val secretParam = uri.getQueryParameter(SECRET_URL_PARAM) - if (secretParam != null && secretParam.isNotEmpty()) { + if (!secretParam.isNullOrEmpty()) { try { otpElement.setBase32Secret(secretParam) } catch (exception: Exception) { @@ -195,11 +195,11 @@ object OtpEntryFields { } val encoderParam = uri.getQueryParameter(ENCODER_URL_PARAM) - if (encoderParam != null && encoderParam.isNotEmpty()) + if (!encoderParam.isNullOrEmpty()) otpElement.tokenType = OtpTokenType.getFromString(encoderParam) val digitsParam = uri.getQueryParameter(DIGITS_URL_PARAM) - if (digitsParam != null && digitsParam.isNotEmpty()) + if (!digitsParam.isNullOrEmpty()) try { otpElement.digits = digitsParam.toIntOrNull() ?: OTP_DEFAULT_DIGITS } catch (exception: Exception) { @@ -208,7 +208,7 @@ object OtpEntryFields { } val counterParam = uri.getQueryParameter(COUNTER_URL_PARAM) - if (counterParam != null && counterParam.isNotEmpty()) + if (!counterParam.isNullOrEmpty()) try { otpElement.counter = counterParam.toLongOrNull() ?: HOTP_INITIAL_COUNTER } catch (exception: Exception) { @@ -217,7 +217,7 @@ object OtpEntryFields { } val stepParam = uri.getQueryParameter(PERIOD_URL_PARAM) - if (stepParam != null && stepParam.isNotEmpty()) + if (!stepParam.isNullOrEmpty()) try { otpElement.period = stepParam.toIntOrNull() ?: TOTP_DEFAULT_PERIOD } catch (exception: Exception) { @@ -226,7 +226,7 @@ object OtpEntryFields { } val algorithmParam = uri.getQueryParameter(ALGORITHM_URL_PARAM) - if (algorithmParam != null && algorithmParam.isNotEmpty()) { + if (!algorithmParam.isNullOrEmpty()) { otpElement.algorithm = HashAlgorithm.fromString(algorithmParam) } @@ -253,12 +253,12 @@ object OtpEntryFields { } } val issuer = - if (title != null && title.isNotEmpty()) + if (!title.isNullOrEmpty()) encodeParameter(title) else encodeParameter(otpElement.issuer) val accountName = - if (username != null && username.isNotEmpty()) + if (!username.isNullOrEmpty()) encodeParameter(username) else encodeParameter(otpElement.name) @@ -324,7 +324,7 @@ object OtpEntryFields { private fun parseTOTPKeyValues(getField: (id: String) -> String?, otpElement: OtpElement): Boolean { val plainText = getField(OTP_FIELD) - if (plainText != null && plainText.isNotEmpty()) { + if (!plainText.isNullOrEmpty()) { if (Pattern.matches(validKeyValueRegex, plainText)) { return try { // KeeOtp string format @@ -353,7 +353,7 @@ object OtpEntryFields { val settingsField = getField(TOTP_SETTING_FIELD) if (settingsField != null) { // Regex match, sync with shortNameToEncoder - val pattern = Pattern.compile("(\\d+);((?:\\d+)|S)") + val pattern = Pattern.compile("(\\d+);(\\d+|S)") val matcher = pattern.matcher(settingsField) if (!matcher.matches()) { // malformed @@ -407,9 +407,9 @@ object OtpEntryFields { } // path is "/name", so remove leading "/", and trailing white spaces val name = path.substring(1).trim { it <= ' ' } - return if (name.isEmpty()) { + return name.ifEmpty { null - } else name + } } private fun breakDownKeyValuePairs(pairs: String): HashMap { diff --git a/fastlane/metadata/android/en-US/changelogs/126.txt b/fastlane/metadata/android/en-US/changelogs/126.txt index fedf61d7a..c51514331 100644 --- a/fastlane/metadata/android/en-US/changelogs/126.txt +++ b/fastlane/metadata/android/en-US/changelogs/126.txt @@ -1,2 +1,3 @@ * Fix "Save as" in Read Only mode #1666 - * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 \ No newline at end of file + * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 + * Fix regex OTP recognition #1596 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/126.txt b/fastlane/metadata/android/fr-FR/changelogs/126.txt index 378e979cb..e9bfb91b8 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/126.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/126.txt @@ -1,2 +1,3 @@ * Correction "Sauvegarder comme" en mode lecture seule #1666 * Correction du nom d'utilisateur dans la reconnaissance automatique #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 + * Correction de la regex de reconnaissance OTP #1596 From 02306385b6c9c40d7acb2592f67f1829acd2e838 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 4 Nov 2023 16:09:10 +0100 Subject: [PATCH 39/47] fix: #1641 #1656 --- CHANGELOG | 1 + fastlane/metadata/android/en-US/changelogs/126.txt | 3 ++- fastlane/metadata/android/fr-FR/changelogs/126.txt | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 07e9e9dd0..3a84a8155 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ KeePassDX(4.0.3) * Fix "Save as" in Read Only mode #1666 * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Fix regex OTP recognition #1596 + * Small fixes #1641 #1656 KeePassDX(4.0.2) * Fix Autofill with API 33 diff --git a/fastlane/metadata/android/en-US/changelogs/126.txt b/fastlane/metadata/android/en-US/changelogs/126.txt index c51514331..13e86f89c 100644 --- a/fastlane/metadata/android/en-US/changelogs/126.txt +++ b/fastlane/metadata/android/en-US/changelogs/126.txt @@ -1,3 +1,4 @@ * Fix "Save as" in Read Only mode #1666 * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 - * Fix regex OTP recognition #1596 \ No newline at end of file + * Fix regex OTP recognition #1596 + * Small fixes #1641 #1656 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/126.txt b/fastlane/metadata/android/fr-FR/changelogs/126.txt index e9bfb91b8..5186ad6f3 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/126.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/126.txt @@ -1,3 +1,4 @@ * Correction "Sauvegarder comme" en mode lecture seule #1666 * Correction du nom d'utilisateur dans la reconnaissance automatique #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Correction de la regex de reconnaissance OTP #1596 + * Petites corrections #1641 #1656 From c433fb643c63d41a94bac6a28edf9b6bda51af14 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 4 Nov 2023 17:33:40 +0100 Subject: [PATCH 40/47] fix: change password color dynamically #1490 --- CHANGELOG | 1 + .../keepass/view/TextEditFieldView.kt | 38 +++++++++++++++---- .../metadata/android/en-US/changelogs/126.txt | 1 + .../metadata/android/fr-FR/changelogs/126.txt | 1 + 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3a84a8155..003bc9d4f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ KeePassDX(4.0.3) * Fix "Save as" in Read Only mode #1666 * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Fix regex OTP recognition #1596 + * Change password color dynamically #1490 * Small fixes #1641 #1656 KeePassDX(4.0.2) diff --git a/app/src/main/java/com/kunzisoft/keepass/view/TextEditFieldView.kt b/app/src/main/java/com/kunzisoft/keepass/view/TextEditFieldView.kt index e426dc3b8..04024b915 100644 --- a/app/src/main/java/com/kunzisoft/keepass/view/TextEditFieldView.kt +++ b/app/src/main/java/com/kunzisoft/keepass/view/TextEditFieldView.kt @@ -4,6 +4,7 @@ import android.content.Context import android.os.Build import android.text.InputFilter import android.text.InputType +import android.text.Spannable import android.text.SpannableString import android.util.AttributeSet import android.util.TypedValue @@ -17,6 +18,7 @@ import androidx.appcompat.widget.AppCompatImageButton import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat import androidx.core.view.isVisible +import androidx.core.widget.doAfterTextChanged import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputLayout import com.kunzisoft.keepass.R @@ -34,6 +36,9 @@ class TextEditFieldView @JvmOverloads constructor(context: Context, private var valueViewId = ViewCompat.generateViewId() private var actionImageButtonId = ViewCompat.generateViewId() + private var textModified = false + private var isColorizedPasswordActivated = PreferencesUtil.colorizePassword(context) + private val labelView = TextInputLayout(context).apply { layoutParams = LayoutParams( LayoutParams.MATCH_PARENT, @@ -78,6 +83,20 @@ class TextEditFieldView @JvmOverloads constructor(context: Context, init { // Manually write view to avoid view id bugs buildViews() + // To change the password color dynamically + valueView.doAfterTextChanged { editable -> + editable?.let { text -> + if (textModified) { + textModified = false + } else { + textModified = true + val selectionStart = valueView.selectionStart + val selectionEnd = valueView.selectionEnd + value = spannableValue(text.toString()).toString() + valueView.setSelection(selectionStart, selectionEnd) + } + } + } labelView.addView(valueView) addView(labelView) addView(actionImageButton) @@ -110,6 +129,15 @@ class TextEditFieldView @JvmOverloads constructor(context: Context, return actionImageButton } + private fun spannableValue(value: String?): Spannable? { + if (value == null) + return null + return if (isColorizedPasswordActivated && TemplateField.isStandardPasswordName(context, label)) + PasswordGenerator.getColorizedPassword(value) + else + SpannableString(value) + } + override var label: String get() { return labelView.hint?.toString() ?: "" @@ -128,13 +156,7 @@ class TextEditFieldView @JvmOverloads constructor(context: Context, return valueView.text?.toString() ?: "" } set(value) { - val spannableString = - if (PreferencesUtil.colorizePassword(context) - && TemplateField.isStandardPasswordName(context, label)) - PasswordGenerator.getColorizedPassword(value) - else - SpannableString(value) - valueView.setText(spannableString) + valueView.setText(spannableValue(value)) } override var default: String = "" @@ -145,6 +167,7 @@ class TextEditFieldView @JvmOverloads constructor(context: Context, valueView.filters += InputFilter.LengthFilter(MAX_CHARS_LIMIT) } else -> { + @Suppress("KotlinConstantConditions") val chars = if (numberChars > MAX_CHARS_LIMIT) MAX_CHARS_LIMIT else numberChars valueView.filters += InputFilter.LengthFilter(chars) } @@ -164,6 +187,7 @@ class TextEditFieldView @JvmOverloads constructor(context: Context, valueView.maxLines = MAX_LINES_LIMIT } else -> { + @Suppress("KotlinConstantConditions") val lines = if (numberLines > MAX_LINES_LIMIT) MAX_LINES_LIMIT else numberLines valueView.inputType = valueView.inputType or InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE diff --git a/fastlane/metadata/android/en-US/changelogs/126.txt b/fastlane/metadata/android/en-US/changelogs/126.txt index 13e86f89c..ba029fb53 100644 --- a/fastlane/metadata/android/en-US/changelogs/126.txt +++ b/fastlane/metadata/android/en-US/changelogs/126.txt @@ -1,4 +1,5 @@ * Fix "Save as" in Read Only mode #1666 * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Fix regex OTP recognition #1596 + * Change password color dynamically #1490 * Small fixes #1641 #1656 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/126.txt b/fastlane/metadata/android/fr-FR/changelogs/126.txt index 5186ad6f3..1211b0c18 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/126.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/126.txt @@ -1,4 +1,5 @@ * Correction "Sauvegarder comme" en mode lecture seule #1666 * Correction du nom d'utilisateur dans la reconnaissance automatique #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Correction de la regex de reconnaissance OTP #1596 + * Changement de couleur de mot passe dynamique #1490 * Petites corrections #1641 #1656 From 55061a9469f379d68e5dd35c17fae6c14a5cdf91 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 4 Nov 2023 18:01:23 +0100 Subject: [PATCH 41/47] fix: runtime exception #1649 --- CHANGELOG | 2 +- .../activities/AutofillLauncherActivity.kt | 74 +++-- .../keepass/autofill/AutofillHelper.kt | 70 ++--- .../keepass/autofill/KeeAutofillService.kt | 270 ++++++++++-------- .../metadata/android/en-US/changelogs/126.txt | 2 +- .../metadata/android/fr-FR/changelogs/126.txt | 2 +- 6 files changed, 237 insertions(+), 183 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 003bc9d4f..526efba83 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,7 @@ KeePassDX(4.0.3) * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Fix regex OTP recognition #1596 * Change password color dynamically #1490 - * Small fixes #1641 #1656 + * Small fixes #1641 #1656 #1649 KeePassDX(4.0.2) * Fix Autofill with API 33 diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/AutofillLauncherActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/AutofillLauncherActivity.kt index 2e3f06492..4c9d84574 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/AutofillLauncherActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/AutofillLauncherActivity.kt @@ -25,6 +25,7 @@ import android.content.Context import android.content.Intent import android.os.Build import android.os.Bundle +import android.util.Log import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.annotation.RequiresApi @@ -44,6 +45,7 @@ import com.kunzisoft.keepass.settings.PreferencesUtil import com.kunzisoft.keepass.utils.getParcelableCompat import com.kunzisoft.keepass.utils.getParcelableExtraCompat import com.kunzisoft.keepass.utils.WebDomain +import java.lang.RuntimeException @RequiresApi(api = Build.VERSION_CODES.O) class AutofillLauncherActivity : DatabaseModeActivity() { @@ -216,6 +218,8 @@ class AutofillLauncherActivity : DatabaseModeActivity() { companion object { + private val TAG = AutofillLauncherActivity::class.java.name + private const val KEY_SELECTION_BUNDLE = "KEY_SELECTION_BUNDLE" private const val KEY_SEARCH_INFO = "KEY_SEARCH_INFO" private const val KEY_INLINE_SUGGESTION = "KEY_INLINE_SUGGESTION" @@ -224,37 +228,51 @@ class AutofillLauncherActivity : DatabaseModeActivity() { fun getPendingIntentForSelection(context: Context, searchInfo: SearchInfo? = null, - compatInlineSuggestionsRequest: CompatInlineSuggestionsRequest? = null): PendingIntent { - return PendingIntent.getActivity(context, 0, - // Doesn't work with direct extra Parcelable (don't know why?) - // Wrap into a bundle to bypass the problem - Intent(context, AutofillLauncherActivity::class.java).apply { - putExtra(KEY_SELECTION_BUNDLE, Bundle().apply { - putParcelable(KEY_SEARCH_INFO, searchInfo) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - putParcelable(KEY_INLINE_SUGGESTION, compatInlineSuggestionsRequest) - } - }) - }, - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_CANCEL_CURRENT - } else { - PendingIntent.FLAG_CANCEL_CURRENT - }) + compatInlineSuggestionsRequest: CompatInlineSuggestionsRequest? = null): PendingIntent? { + try { + return PendingIntent.getActivity( + context, 0, + // Doesn't work with direct extra Parcelable (don't know why?) + // Wrap into a bundle to bypass the problem + Intent(context, AutofillLauncherActivity::class.java).apply { + putExtra(KEY_SELECTION_BUNDLE, Bundle().apply { + putParcelable(KEY_SEARCH_INFO, searchInfo) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + putParcelable(KEY_INLINE_SUGGESTION, compatInlineSuggestionsRequest) + } + }) + }, + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_CANCEL_CURRENT + } else { + PendingIntent.FLAG_CANCEL_CURRENT + } + ) + } catch (e: RuntimeException) { + Log.e(TAG, "Unable to create pending intent for selection", e) + return null + } } fun getPendingIntentForRegistration(context: Context, - registerInfo: RegisterInfo): PendingIntent { - return PendingIntent.getActivity(context, 0, - Intent(context, AutofillLauncherActivity::class.java).apply { - EntrySelectionHelper.addSpecialModeInIntent(this, SpecialMode.REGISTRATION) - putExtra(KEY_REGISTER_INFO, registerInfo) - }, - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_CANCEL_CURRENT - } else { - PendingIntent.FLAG_CANCEL_CURRENT - }) + registerInfo: RegisterInfo): PendingIntent? { + try { + return PendingIntent.getActivity( + context, 0, + Intent(context, AutofillLauncherActivity::class.java).apply { + EntrySelectionHelper.addSpecialModeInIntent(this, SpecialMode.REGISTRATION) + putExtra(KEY_REGISTER_INFO, registerInfo) + }, + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_CANCEL_CURRENT + } else { + PendingIntent.FLAG_CANCEL_CURRENT + } + ) + } catch (e: RuntimeException) { + Log.e(TAG, "Unable to create pending intent for registration", e) + return null + } } fun launchForRegistration(context: Context, diff --git a/app/src/main/java/com/kunzisoft/keepass/autofill/AutofillHelper.kt b/app/src/main/java/com/kunzisoft/keepass/autofill/AutofillHelper.kt index 4fbc925cd..501043c7a 100644 --- a/app/src/main/java/com/kunzisoft/keepass/autofill/AutofillHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/autofill/AutofillHelper.kt @@ -452,46 +452,52 @@ object AutofillHelper { manualSelection = true } val manualSelectionView = RemoteViews(context.packageName, R.layout.item_autofill_select_entry) - val pendingIntent = AutofillLauncherActivity.getPendingIntentForSelection(context, - searchInfo, compatInlineSuggestionsRequest) - - var inlinePresentation: InlinePresentation? = null - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - compatInlineSuggestionsRequest?.inlineSuggestionsRequest?.let { inlineSuggestionsRequest -> - val inlinePresentationSpec = inlineSuggestionsRequest.inlinePresentationSpecs[0] - inlinePresentation = buildInlinePresentationForManualSelection(context, inlinePresentationSpec, pendingIntent) + AutofillLauncherActivity.getPendingIntentForSelection(context, + searchInfo, compatInlineSuggestionsRequest)?.let { pendingIntent -> + + var inlinePresentation: InlinePresentation? = null + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + compatInlineSuggestionsRequest?.inlineSuggestionsRequest?.let { inlineSuggestionsRequest -> + val inlinePresentationSpec = + inlineSuggestionsRequest.inlinePresentationSpecs[0] + inlinePresentation = buildInlinePresentationForManualSelection( + context, + inlinePresentationSpec, + pendingIntent + ) + } } - } - val datasetBuilder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - Dataset.Builder(Presentations.Builder() - .apply { - inlinePresentation?.let { - setInlinePresentation(it) + val datasetBuilder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + Dataset.Builder(Presentations.Builder() + .apply { + inlinePresentation?.let { + setInlinePresentation(it) + } } - } - .setDialogPresentation(manualSelectionView) - .setMenuPresentation(manualSelectionView) - .build()) - } else { - @Suppress("DEPRECATION") - Dataset.Builder(manualSelectionView).apply { - inlinePresentation?.let { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - setInlinePresentation(it) + .setDialogPresentation(manualSelectionView) + .setMenuPresentation(manualSelectionView) + .build()) + } else { + @Suppress("DEPRECATION") + Dataset.Builder(manualSelectionView).apply { + inlinePresentation?.let { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + setInlinePresentation(it) + } } } } - } - parseResult.allAutofillIds().let { autofillIds -> - autofillIds.forEach { id -> - datasetBuilder.addValueToDatasetBuilder(id, null) - datasetBuilder.setAuthentication(pendingIntent.intentSender) + parseResult.allAutofillIds().let { autofillIds -> + autofillIds.forEach { id -> + datasetBuilder.addValueToDatasetBuilder(id, null) + datasetBuilder.setAuthentication(pendingIntent.intentSender) + } + val dataset = datasetBuilder.build() + Log.d(TAG, "Autofill Dataset for manual selection $dataset created") + responseBuilder.addDataset(dataset) } - val dataset = datasetBuilder.build() - Log.d(TAG, "Autofill Dataset for manual selection $dataset created") - responseBuilder.addDataset(dataset) } } diff --git a/app/src/main/java/com/kunzisoft/keepass/autofill/KeeAutofillService.kt b/app/src/main/java/com/kunzisoft/keepass/autofill/KeeAutofillService.kt index e2422373d..f669c2574 100644 --- a/app/src/main/java/com/kunzisoft/keepass/autofill/KeeAutofillService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/autofill/KeeAutofillService.kt @@ -162,154 +162,184 @@ class KeeAutofillService : AutofillService() { if (autofillIds.isNotEmpty()) { // If the entire Autofill Response is authenticated, AuthActivity is used // to generate Response. - val intentSender = AutofillLauncherActivity.getPendingIntentForSelection(this, - searchInfo, inlineSuggestionsRequest).intentSender - val responseBuilder = FillResponse.Builder() - val remoteViewsUnlock: RemoteViews = if (database == null) { - if (!parseResult.webDomain.isNullOrEmpty()) { - RemoteViews( - packageName, - R.layout.item_autofill_unlock_web_domain - ).apply { - setTextViewText( - R.id.autofill_web_domain_text, - parseResult.webDomain - ) - } - } else if (!parseResult.applicationId.isNullOrEmpty()) { - RemoteViews(packageName, R.layout.item_autofill_unlock_app_id).apply { - setTextViewText( - R.id.autofill_app_id_text, - parseResult.applicationId - ) + AutofillLauncherActivity.getPendingIntentForSelection(this, + searchInfo, inlineSuggestionsRequest)?.intentSender?.let { intentSender -> + val responseBuilder = FillResponse.Builder() + val remoteViewsUnlock: RemoteViews = if (database == null) { + if (!parseResult.webDomain.isNullOrEmpty()) { + RemoteViews( + packageName, + R.layout.item_autofill_unlock_web_domain + ).apply { + setTextViewText( + R.id.autofill_web_domain_text, + parseResult.webDomain + ) + } + } else if (!parseResult.applicationId.isNullOrEmpty()) { + RemoteViews(packageName, R.layout.item_autofill_unlock_app_id).apply { + setTextViewText( + R.id.autofill_app_id_text, + parseResult.applicationId + ) + } + } else { + RemoteViews(packageName, R.layout.item_autofill_unlock) } } else { - RemoteViews(packageName, R.layout.item_autofill_unlock) - } - } else { - if (!parseResult.webDomain.isNullOrEmpty()) { - RemoteViews( - packageName, - R.layout.item_autofill_select_entry_web_domain - ).apply { - setTextViewText( - R.id.autofill_web_domain_text, - parseResult.webDomain - ) - } - } else if (!parseResult.applicationId.isNullOrEmpty()) { - RemoteViews(packageName, R.layout.item_autofill_select_entry_app_id).apply { - setTextViewText( - R.id.autofill_app_id_text, - parseResult.applicationId - ) + if (!parseResult.webDomain.isNullOrEmpty()) { + RemoteViews( + packageName, + R.layout.item_autofill_select_entry_web_domain + ).apply { + setTextViewText( + R.id.autofill_web_domain_text, + parseResult.webDomain + ) + } + } else if (!parseResult.applicationId.isNullOrEmpty()) { + RemoteViews( + packageName, + R.layout.item_autofill_select_entry_app_id + ).apply { + setTextViewText( + R.id.autofill_app_id_text, + parseResult.applicationId + ) + } + } else { + RemoteViews(packageName, R.layout.item_autofill_select_entry) } - } else { - RemoteViews(packageName, R.layout.item_autofill_select_entry) } - } - // Tell the autofill framework the interest to save credentials - if (askToSaveData) { - var types: Int = SaveInfo.SAVE_DATA_TYPE_GENERIC - val requiredIds = ArrayList() - val optionalIds = ArrayList() + // Tell the autofill framework the interest to save credentials + if (askToSaveData) { + var types: Int = SaveInfo.SAVE_DATA_TYPE_GENERIC + val requiredIds = ArrayList() + val optionalIds = ArrayList() - // Only if at least a password - parseResult.passwordId?.let { passwordInfo -> - parseResult.usernameId?.let { usernameInfo -> - types = types or SaveInfo.SAVE_DATA_TYPE_USERNAME - requiredIds.add(usernameInfo) + // Only if at least a password + parseResult.passwordId?.let { passwordInfo -> + parseResult.usernameId?.let { usernameInfo -> + types = types or SaveInfo.SAVE_DATA_TYPE_USERNAME + requiredIds.add(usernameInfo) + } + types = types or SaveInfo.SAVE_DATA_TYPE_PASSWORD + requiredIds.add(passwordInfo) } - types = types or SaveInfo.SAVE_DATA_TYPE_PASSWORD - requiredIds.add(passwordInfo) - } - // or a credit card form - if (requiredIds.isEmpty()) { - parseResult.creditCardNumberId?.let { numberId -> - types = types or SaveInfo.SAVE_DATA_TYPE_CREDIT_CARD - requiredIds.add(numberId) - Log.d(TAG, "Asking to save credit card number") + // or a credit card form + if (requiredIds.isEmpty()) { + parseResult.creditCardNumberId?.let { numberId -> + types = types or SaveInfo.SAVE_DATA_TYPE_CREDIT_CARD + requiredIds.add(numberId) + Log.d(TAG, "Asking to save credit card number") + } + parseResult.creditCardExpirationDateId?.let { id -> optionalIds.add(id) } + parseResult.creditCardExpirationYearId?.let { id -> optionalIds.add(id) } + parseResult.creditCardExpirationMonthId?.let { id -> optionalIds.add(id) } + parseResult.creditCardHolderId?.let { id -> optionalIds.add(id) } + parseResult.cardVerificationValueId?.let { id -> optionalIds.add(id) } } - parseResult.creditCardExpirationDateId?.let { id -> optionalIds.add(id) } - parseResult.creditCardExpirationYearId?.let { id -> optionalIds.add(id) } - parseResult.creditCardExpirationMonthId?.let { id -> optionalIds.add(id) } - parseResult.creditCardHolderId?.let { id -> optionalIds.add(id) } - parseResult.cardVerificationValueId?.let { id -> optionalIds.add(id) } - } - if (requiredIds.isNotEmpty()) { - val builder = SaveInfo.Builder(types, requiredIds.toTypedArray()) - if (optionalIds.isNotEmpty()) { - builder.setOptionalIds(optionalIds.toTypedArray()) + if (requiredIds.isNotEmpty()) { + val builder = SaveInfo.Builder(types, requiredIds.toTypedArray()) + if (optionalIds.isNotEmpty()) { + builder.setOptionalIds(optionalIds.toTypedArray()) + } + responseBuilder.setSaveInfo(builder.build()) } - responseBuilder.setSaveInfo(builder.build()) } - } - // Build inline presentation - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R - && autofillInlineSuggestionsEnabled) { - var inlinePresentation: InlinePresentation? = null - inlineSuggestionsRequest?.inlineSuggestionsRequest?.let { inlineSuggestionsRequest -> - val inlinePresentationSpecs = inlineSuggestionsRequest.inlinePresentationSpecs - if (inlineSuggestionsRequest.maxSuggestionCount > 0 - && inlinePresentationSpecs.size > 0) { - val inlinePresentationSpec = inlinePresentationSpecs[0] + // Build inline presentation + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R + && autofillInlineSuggestionsEnabled + ) { + var inlinePresentation: InlinePresentation? = null + inlineSuggestionsRequest?.inlineSuggestionsRequest?.let { inlineSuggestionsRequest -> + val inlinePresentationSpecs = + inlineSuggestionsRequest.inlinePresentationSpecs + if (inlineSuggestionsRequest.maxSuggestionCount > 0 + && inlinePresentationSpecs.size > 0 + ) { + val inlinePresentationSpec = inlinePresentationSpecs[0] - // Make sure that the IME spec claims support for v1 UI template. - val imeStyle = inlinePresentationSpec.style - if (UiVersions.getVersions(imeStyle).contains(UiVersions.INLINE_UI_VERSION_1)) { - // Build the content for IME UI - inlinePresentation = InlinePresentation( + // Make sure that the IME spec claims support for v1 UI template. + val imeStyle = inlinePresentationSpec.style + if (UiVersions.getVersions(imeStyle) + .contains(UiVersions.INLINE_UI_VERSION_1) + ) { + // Build the content for IME UI + inlinePresentation = InlinePresentation( InlineSuggestionUi.newContentBuilder( - PendingIntent.getActivity(this, - 0, - Intent(this, AutofillSettingsActivity::class.java), - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - PendingIntent.FLAG_IMMUTABLE - } else { - 0 - }) + PendingIntent.getActivity( + this, + 0, + Intent(this, AutofillSettingsActivity::class.java), + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + PendingIntent.FLAG_IMMUTABLE + } else { + 0 + } + ) ).apply { setContentDescription(getString(R.string.autofill_sign_in_prompt)) setTitle(getString(R.string.autofill_sign_in_prompt)) - setStartIcon(Icon.createWithResource(this@KeeAutofillService, R.mipmap.ic_launcher_round).apply { - setTintBlendMode(BlendMode.DST) - }) - }.build().slice, inlinePresentationSpec, false) + setStartIcon( + Icon.createWithResource( + this@KeeAutofillService, + R.mipmap.ic_launcher_round + ).apply { + setTintBlendMode(BlendMode.DST) + }) + }.build().slice, inlinePresentationSpec, false + ) + } } } - } - // Build response - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - try { - // Buggy method on some API 33 devices + // Build response + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + try { + // Buggy method on some API 33 devices + responseBuilder.setAuthentication( + autofillIds, + intentSender, + Presentations.Builder().apply { + inlinePresentation?.let { + setInlinePresentation(it) + } + setDialogPresentation(remoteViewsUnlock) + }.build() + ) + } catch (e: Exception) { + Log.e(TAG, "Unable to use the new setAuthentication method.", e) + @Suppress("DEPRECATION") + responseBuilder.setAuthentication( + autofillIds, + intentSender, + remoteViewsUnlock, + inlinePresentation + ) + } + } else { + @Suppress("DEPRECATION") responseBuilder.setAuthentication( autofillIds, intentSender, - Presentations.Builder().apply { - inlinePresentation?.let { - setInlinePresentation(it) - } - setDialogPresentation(remoteViewsUnlock) - }.build() + remoteViewsUnlock, + inlinePresentation ) - } catch (e: Exception) { - Log.e(TAG, "Unable to use the new setAuthentication method.", e) - @Suppress("DEPRECATION") - responseBuilder.setAuthentication(autofillIds, intentSender, remoteViewsUnlock, inlinePresentation) } } else { @Suppress("DEPRECATION") - responseBuilder.setAuthentication(autofillIds, intentSender, remoteViewsUnlock, inlinePresentation) + responseBuilder.setAuthentication( + autofillIds, + intentSender, + remoteViewsUnlock + ) } - } else { - @Suppress("DEPRECATION") - responseBuilder.setAuthentication(autofillIds, intentSender, remoteViewsUnlock) + success = true + callback.onSuccess(responseBuilder.build()) } - success = true - callback.onSuccess(responseBuilder.build()) } } if (!success) diff --git a/fastlane/metadata/android/en-US/changelogs/126.txt b/fastlane/metadata/android/en-US/changelogs/126.txt index ba029fb53..add7108dd 100644 --- a/fastlane/metadata/android/en-US/changelogs/126.txt +++ b/fastlane/metadata/android/en-US/changelogs/126.txt @@ -2,4 +2,4 @@ * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Fix regex OTP recognition #1596 * Change password color dynamically #1490 - * Small fixes #1641 #1656 \ No newline at end of file + * Small fixes #1641 #1656 #1649 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/126.txt b/fastlane/metadata/android/fr-FR/changelogs/126.txt index 1211b0c18..9f7451ef6 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/126.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/126.txt @@ -2,4 +2,4 @@ * Correction du nom d'utilisateur dans la reconnaissance automatique #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Correction de la regex de reconnaissance OTP #1596 * Changement de couleur de mot passe dynamique #1490 - * Petites corrections #1641 #1656 + * Petites corrections #1641 #1656 #1649 From 7b7063b9be9cc694436f683da560036c1025e620 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 4 Nov 2023 18:14:24 +0100 Subject: [PATCH 42/47] fix: check biometric unlock availability before build the fragment #1400 --- CHANGELOG | 2 +- .../activities/MainCredentialActivity.kt | 29 +++++++++++-------- .../metadata/android/en-US/changelogs/126.txt | 2 +- .../metadata/android/fr-FR/changelogs/126.txt | 2 +- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 526efba83..8db261fdf 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,7 @@ KeePassDX(4.0.3) * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Fix regex OTP recognition #1596 * Change password color dynamically #1490 - * Small fixes #1641 #1656 #1649 + * Small fixes #1641 #1656 #1649 #1400 KeePassDX(4.0.2) * Fix Autofill with API 33 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 e90591a14..09b2074b6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/MainCredentialActivity.kt @@ -165,18 +165,6 @@ class MainCredentialActivity : DatabaseModeActivity(), AdvancedUnlockFragment.Bu startActivity(Intent(this, AppearanceSettingsActivity::class.java)) } - // Init Biometric elements - advancedUnlockFragment = supportFragmentManager - .findFragmentByTag(UNLOCK_FRAGMENT_TAG) as? AdvancedUnlockFragment? - if (advancedUnlockFragment == null) { - advancedUnlockFragment = AdvancedUnlockFragment() - supportFragmentManager.commit { - replace(R.id.fragment_advanced_unlock_container_view, - advancedUnlockFragment!!, - UNLOCK_FRAGMENT_TAG) - } - } - // Listen password checkbox to init advanced unlock and confirmation button mainCredentialView?.onPasswordChecked = CompoundButton.OnCheckedChangeListener { _, _ -> @@ -245,6 +233,23 @@ class MainCredentialActivity : DatabaseModeActivity(), AdvancedUnlockFragment.Bu override fun onResume() { super.onResume() + // Init Biometric elements only if allowed + if (PreferencesUtil.isBiometricUnlockEnable(this)) { + advancedUnlockFragment = supportFragmentManager + .findFragmentByTag(UNLOCK_FRAGMENT_TAG) as? AdvancedUnlockFragment? + if (advancedUnlockFragment == null) { + advancedUnlockFragment = AdvancedUnlockFragment().also { + supportFragmentManager.commit { + replace( + R.id.fragment_advanced_unlock_container_view, + it, + UNLOCK_FRAGMENT_TAG + ) + } + } + } + } + mRememberKeyFile = PreferencesUtil.rememberKeyFileLocations(this@MainCredentialActivity) mRememberHardwareKey = PreferencesUtil.rememberHardwareKey(this@MainCredentialActivity) diff --git a/fastlane/metadata/android/en-US/changelogs/126.txt b/fastlane/metadata/android/en-US/changelogs/126.txt index add7108dd..6495abed2 100644 --- a/fastlane/metadata/android/en-US/changelogs/126.txt +++ b/fastlane/metadata/android/en-US/changelogs/126.txt @@ -2,4 +2,4 @@ * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Fix regex OTP recognition #1596 * Change password color dynamically #1490 - * Small fixes #1641 #1656 #1649 \ No newline at end of file + * Small fixes #1641 #1656 #1649 #1400 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/126.txt b/fastlane/metadata/android/fr-FR/changelogs/126.txt index 9f7451ef6..bc880ad31 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/126.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/126.txt @@ -2,4 +2,4 @@ * Correction du nom d'utilisateur dans la reconnaissance automatique #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Correction de la regex de reconnaissance OTP #1596 * Changement de couleur de mot passe dynamique #1490 - * Petites corrections #1641 #1656 #1649 + * Petites corrections #1641 #1656 #1649 #1400 From 974686e6980480b3f1c30121506f2fe87b281da3 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sat, 4 Nov 2023 18:56:36 +0100 Subject: [PATCH 43/47] fix: small changes --- .../keepass/viewmodels/DatabaseFileViewModel.kt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) 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 9bab5cb0a..d9e43e60c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFileViewModel.kt +++ b/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFileViewModel.kt @@ -3,6 +3,7 @@ package com.kunzisoft.keepass.viewmodels import android.app.Application import android.net.Uri import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.kunzisoft.keepass.app.App import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction @@ -19,9 +20,8 @@ class DatabaseFileViewModel(application: Application) : AndroidViewModel(applica mFileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(application.applicationContext) } - val isDefaultDatabase: MutableLiveData by lazy { - MutableLiveData() - } + private val mIsDefaultDatabase = MutableLiveData() + val isDefaultDatabase: LiveData = mIsDefaultDatabase fun checkIfIsDefaultDatabase(databaseUri: Uri) { IOActionTask( @@ -30,7 +30,7 @@ class DatabaseFileViewModel(application: Application) : AndroidViewModel(applica ?.parseUri() == databaseUri) }, { - isDefaultDatabase.value = it + mIsDefaultDatabase.value = it } ).execute() } @@ -46,13 +46,12 @@ class DatabaseFileViewModel(application: Application) : AndroidViewModel(applica ).execute() } - val databaseFileLoaded: MutableLiveData by lazy { - MutableLiveData() - } + private val mDatabaseFileLoaded = MutableLiveData() + val databaseFileLoaded: LiveData = mDatabaseFileLoaded fun loadDatabaseFile(databaseUri: Uri) { mFileDatabaseHistoryAction?.getDatabaseFile(databaseUri) { databaseFileRetrieved -> - databaseFileLoaded.value = databaseFileRetrieved + mDatabaseFileLoaded.value = databaseFileRetrieved } } } \ No newline at end of file From 0001d31c2cbae1a2032e5cc2bf8b688b1f3cb6f9 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 6 Nov 2023 08:57:48 +0100 Subject: [PATCH 44/47] fix: small change #1674 --- app/src/main/res/layout/fragment_generate_password.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/layout/fragment_generate_password.xml b/app/src/main/res/layout/fragment_generate_password.xml index 43ad5b917..dd473cf4b 100644 --- a/app/src/main/res/layout/fragment_generate_password.xml +++ b/app/src/main/res/layout/fragment_generate_password.xml @@ -207,6 +207,8 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@+id/ignore_chars_filter_layout" + android:layout_marginEnd="8dp" + android:layout_marginRight="8dp" android:layout_width="0dp" android:layout_height="wrap_content"> Date: Mon, 6 Nov 2023 08:58:36 +0100 Subject: [PATCH 45/47] fix: small change #1674 --- CHANGELOG | 2 +- fastlane/metadata/android/en-US/changelogs/126.txt | 2 +- fastlane/metadata/android/fr-FR/changelogs/126.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8db261fdf..56c0c5360 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,7 @@ KeePassDX(4.0.3) * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Fix regex OTP recognition #1596 * Change password color dynamically #1490 - * Small fixes #1641 #1656 #1649 #1400 + * Small fixes #1641 #1656 #1649 #1400 #1674 KeePassDX(4.0.2) * Fix Autofill with API 33 diff --git a/fastlane/metadata/android/en-US/changelogs/126.txt b/fastlane/metadata/android/en-US/changelogs/126.txt index 6495abed2..68176946a 100644 --- a/fastlane/metadata/android/en-US/changelogs/126.txt +++ b/fastlane/metadata/android/en-US/changelogs/126.txt @@ -2,4 +2,4 @@ * Fix username autofill #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Fix regex OTP recognition #1596 * Change password color dynamically #1490 - * Small fixes #1641 #1656 #1649 #1400 \ No newline at end of file + * Small fixes #1641 #1656 #1649 #1400 #1674 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/126.txt b/fastlane/metadata/android/fr-FR/changelogs/126.txt index bc880ad31..ab95b13e0 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/126.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/126.txt @@ -2,4 +2,4 @@ * Correction du nom d'utilisateur dans la reconnaissance automatique #1665 #530 #1572 #1426 #1523 #1556 #1653 #1658 #1508 #1667 * Correction de la regex de reconnaissance OTP #1596 * Changement de couleur de mot passe dynamique #1490 - * Petites corrections #1641 #1656 #1649 #1400 + * Petites corrections #1641 #1656 #1649 #1400 #1674 From 6a7420bd3aff6d159768054b1b8de359f5d5c690 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 6 Nov 2023 10:45:20 +0100 Subject: [PATCH 46/47] fix: replace tags --- app/src/main/res/values-ca/strings.xml | 6 +++--- app/src/main/res/values-hu/strings.xml | 2 +- app/src/main/res/values-th/strings.xml | 2 +- app/src/main/res/values-vi/strings.xml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 91a795d99..78ad24c1b 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -40,8 +40,8 @@ Desxifrant la base de dades… Utilitza com a base de dades per defecte Dígits - KeePassDX © %1$d Kunzisoft és programari lliure i sense anuncis. -\nEs proporciona tal com està, sota una llicència GPLv3, sense cap garantia. + KeePassDX © %1$d Kunzisoft és <strong> programari lliure </strong> i <strong>sense anuncis</strong>. +\nEs proporciona tal com està, sota una llicència <strong>GPLv3</strong>, sense cap garantia. Obri una base de dades existent Accedida Cancel·la @@ -359,7 +359,7 @@ Tancar calaix de navegació Propietats Bloca la base de dades quan la duració del porta-retalls caduca o la notificació es tanca un cop s\'ha començat a utilitzar - No s\'agafa cap dada d\'usuari, aquesta aplicació no connecta a cap servidor, només treballa localment i respecta la privacitat dels usuaris en la seva totalitat. + <strong>No s\'agafa cap dada d\'usuari</strong>, aquesta aplicació no connecta a cap servidor, només treballa localment i respecta la privacitat dels usuaris en la seva totalitat. Notificació Color de primer pla d\'entrada Desbloqueja dispositiu diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 28856641f..bcbd6ebd8 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -628,7 +628,7 @@ Beállítás Navigációs fejléc A navigációs tálca bezárása - Nincsenek felhasználói adatok lekérve, az alkalmazás nem kapcsolódik semmilyen külső kiszolgálóhoz, csak helyben működik, és teljes mértékben tiszteletben tartja a felhasználók adatvédelmét. + <strong>Nincsenek felhasználói adatok lekérve</strong>, az alkalmazás nem kapcsolódik semmilyen külső kiszolgálóhoz, csak helyben működik, és teljes mértékben tiszteletben tartja a felhasználók adatvédelmét. Képernyő bekapcsolva tartása egy bejegyzés megtekintésekor vagy szerkesztésekor Nagy Kezdőbetűs A navigációs tálca kinyitása diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index c556c0bf0..2ccd593ca 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -504,7 +504,7 @@ ระยะเวลาต้องอยู่ระหว่าง %1$d และ %2$d วินาที หัวข้อ ไม่แนะนำให้เพิ่มไฟล์ keyfile เปล่าๆ - เพื่อที่จะ คงความเป็นอิสระ, แก้ไขบั้ก, เพื่มฟีเจอร์ และ ทำให้ยังพัฒนาอยู่เสมอ, เรารอคุณมาร่วมแก้ไขอยู่ + เพื่อที่จะ <strong>คงความเป็นอิสระ</strong>, <strong>แก้ไขบั้ก</strong>, <strong>เพื่มฟีเจอร์</strong> และ <strong>ทำให้ยังพัฒนาอยู่เสมอ</strong>, เรารอคุณมา<strong>ร่วมแก้ไข</strong>อยู่ ค่าเขตข้อมูล ข้อมูลที่อยู่ในไฟล์ฐานข้อมูลของคุณถูกแก้ไขจากภายนอกแอป คุณสมบัติของ KeePassDX เพื่อจัดการการตั้งค่าแอป diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 9d37a2e88..7d74a7a05 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -192,7 +192,7 @@ Cảm ơn rất nhiều vì sự đóng góp của bạn. Chủ đề được sử dụng trong ứng dụng Độ sáng chủ đề - Không có dữ liệu người dùng nào được truy xuất, ứng dụng này không kết nối với bất kỳ máy chủ nào, chỉ hoạt động cục bộ và hoàn toàn tôn trọng quyền riêng tư của người dùng. + <strong>Không có dữ liệu người dùng nào được truy xuất</strong>, ứng dụng này không kết nối với bất kỳ máy chủ nào, chỉ hoạt động cục bộ và hoàn toàn tôn trọng quyền riêng tư của người dùng. Màu nền trước mục nhập Hộp kiểm khóa phần cứng Ít nhất một ký tự từ mỗi ký tự From a99667d471709073dce176e6bb89a29c67697122 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Mon, 6 Nov 2023 12:28:28 +0100 Subject: [PATCH 47/47] feat: New fastfile to build Libre in github --- fastlane/Fastfile | 16 +++++++++++----- fastlane/README.md | 14 +++++++++++--- fastlane/releaseDescGenerator.sh | 22 +++++++++++++++------- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 303efcc2e..f7aee1053 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -18,11 +18,11 @@ platform :android do gradle(task: "test") end - desc "Build a new Beta version" - lane :build_beta do |options| + desc "Build a new version" + lane :build do |options| gradle( task: "assemble", - flavor: "free", + flavor: options[:flavor], build_type: "Release", print_command: false, properties: { @@ -33,8 +33,14 @@ platform :android do } ) sh("mkdir", "-p", "../releases") - @releaseFile = "../releases/KeePassDX-" + android_get_version_name + ".apk" - sh("cp", "../app/build/outputs/apk/free/release/app-free-release.apk", @releaseFile) + @releaseFile = "../releases/KeePassDX-" + android_get_version_name + "-" + options[:flavor] + ".apk" + sh("cp", "../app/build/outputs/apk/" + options[:flavor] + "/release/app-" + options[:flavor] + "-release.apk", @releaseFile) + end + + desc "Build each flavor and create release" + lane :build_release do |options| + build(flavor: "free", storefile: options[:storefile], storepass: options[:storepass], keyalias: options[:keyalias], keypass: options[:keypass]) + build(flavor: "libre", storefile: options[:storefile], storepass: options[:storepass], keyalias: options[:keyalias], keypass: options[:keypass]) sh("./releaseDescGenerator.sh", android_get_version_code, android_get_version_name) end diff --git a/fastlane/README.md b/fastlane/README.md index fc18d75e5..a8c37ba85 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -23,13 +23,21 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do Runs all the tests -### android build_beta +### android build ```sh -[bundle exec] fastlane android build_beta +[bundle exec] fastlane android build ``` -Build a new Beta version +Build a new version + +### android build_release + +```sh +[bundle exec] fastlane android build_release +``` + +Build each flavor and create release ### android deploy_beta_free diff --git a/fastlane/releaseDescGenerator.sh b/fastlane/releaseDescGenerator.sh index a1da0cbec..92eb3f3a1 100755 --- a/fastlane/releaseDescGenerator.sh +++ b/fastlane/releaseDescGenerator.sh @@ -3,12 +3,20 @@ # $1 versionCode # $2 version Name CHANGELOGPATH="./metadata/android/en-US/changelogs/$1.txt" -PACKAGEPATH="../releases/KeePassDX-$2.apk" -RELEASEDESCPATH="../releases/KeePassDX-$2_desc" +PACKAGEFREEPATH="../releases/KeePassDX-$2-free.apk" +PACKAGELIBREPATH="../releases/KeePassDX-$2-libre.apk" +RELEASEDESCPATH="../releases/KeePassDX-$2-desc" echo "$(<$CHANGELOGPATH)" $'\n' >> $RELEASEDESCPATH -# Checksum -echo "MD5 : $(md5sum $PACKAGEPATH | cut -d ' ' -f 1)" >> $RELEASEDESCPATH -echo "SHA1 : $(sha1sum $PACKAGEPATH | cut -d ' ' -f 1)" >> $RELEASEDESCPATH -echo "SHA256 : $(sha256sum $PACKAGEPATH | cut -d ' ' -f 1)" >> $RELEASEDESCPATH -echo "CRC32 : $(crc32 $PACKAGEPATH)" >> $RELEASEDESCPATH +# Checksum Free +echo "Build Free" >> $RELEASEDESCPATH +echo "MD5 : $(md5sum $PACKAGEFREEPATH | cut -d ' ' -f 1)" >> $RELEASEDESCPATH +echo "SHA1 : $(sha1sum $PACKAGEFREEPATH | cut -d ' ' -f 1)" >> $RELEASEDESCPATH +echo "SHA256 : $(sha256sum $PACKAGEFREEPATH | cut -d ' ' -f 1)" >> $RELEASEDESCPATH +echo "CRC32 : $(crc32 $PACKAGEFREEPATH)" >> $RELEASEDESCPATH +# Checksum Libre +echo $'\n'"Build Libre" >> $RELEASEDESCPATH +echo "MD5 : $(md5sum $PACKAGELIBREPATH | cut -d ' ' -f 1)" >> $RELEASEDESCPATH +echo "SHA1 : $(sha1sum $PACKAGELIBREPATH | cut -d ' ' -f 1)" >> $RELEASEDESCPATH +echo "SHA256 : $(sha256sum $PACKAGELIBREPATH | cut -d ' ' -f 1)" >> $RELEASEDESCPATH +echo "CRC32 : $(crc32 $PACKAGELIBREPATH)" >> $RELEASEDESCPATH