Compare commits

..

226 Commits
2.9.2 ... 2.9.8

Author SHA1 Message Date
J-Jamet
d7052bd9e6 Merge branch 'release/2.9.8' 2021-01-02 18:28:26 +01:00
J-Jamet
8b23932788 Fix IllegalStateException 2021-01-02 18:28:03 +01:00
J-Jamet
50912c6966 Update CHANGELOG 2021-01-02 18:25:45 +01:00
J-Jamet
53b51934b9 Upgrade kotlin version 2021-01-02 18:14:15 +01:00
J-Jamet
a8a3685965 Upgrade Room to 2.2.6 2021-01-02 13:50:38 +01:00
J-Jamet
a83032bffa Fix binary in a single entry #828 2021-01-02 09:44:03 +01:00
J-Jamet
3e8ae3e2e3 Upgrade KeePassDX Pro description 2020-12-30 17:23:17 +01:00
J-Jamet
d856ef3772 Merge branch 'develop' of github.com:Kunzisoft/KeePassDX into develop 2020-12-30 17:20:05 +01:00
J-Jamet
b2f503b326 Upgrade to 2.9.8 2020-12-28 21:11:20 +01:00
J-Jamet
beb5484bf6 Merge tag '2.9.7' into develop
2.9.7
2020-12-28 21:00:32 +01:00
J-Jamet
ec63d75349 Merge branch 'release/2.9.7' 2020-12-28 21:00:27 +01:00
J-Jamet
4c0e79b245 Update CHANGELOG 2020-12-28 20:46:14 +01:00
J-Jamet
50a77684c1 Replace strong tag 2020-12-28 20:35:20 +01:00
J-Jamet
8bb84b486d Fix small translation 2020-12-28 20:33:41 +01:00
J-Jamet
4b05f2536f Merge branch 'develop' of https://hosted.weblate.org/git/keepass-dx/strings into translations 2020-12-28 20:33:05 +01:00
J-Jamet
d6f968fe7e Write permission until Android 10 #823 2020-12-28 12:06:48 +01:00
J-Jamet
ed758edd44 Fix small warning 2020-12-28 11:57:29 +01:00
J-Jamet
94b7fce2e5 Merge branch 'tibequadorian-patch-1' into develop 2020-12-28 11:54:56 +01:00
J-Jamet
dbd9c6cbb7 Fix rebuiltList crash 2020-12-28 11:39:16 +01:00
J-Jamet
0f6376fb80 Fix illegalstate when managing views 2020-12-28 11:17:38 +01:00
J-Jamet
9522328238 Fix crash when creating new field 2020-12-28 11:05:20 +01:00
J-Jamet
e6ad716119 Fix crash 2020-12-28 10:45:27 +01:00
Éfrit
440006bb08 Translated using Weblate (French)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2020-12-26 23:29:31 +01:00
tibequadorian
ea289ef7cf fix typo 2020-12-26 05:42:57 +01:00
solokot
352b171484 Translated using Weblate (Russian)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2020-12-25 17:10:11 +01:00
Óscar Fernández Díaz
969ab56bf8 Translated using Weblate (Spanish)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-25 00:29:12 +01:00
J-Jamet
062a9852e5 Fix small warning 2020-12-24 15:20:13 +01:00
Óscar Fernández Díaz
dd77d7a5e6 Translated using Weblate (Spanish)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 23:22:51 +01:00
SeerLite
f60e32522a Translated using Weblate (Spanish)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 23:22:51 +01:00
Óscar Fernández Díaz
070a91f19c Translated using Weblate (Spanish)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 23:20:44 +01:00
SeerLite
0790e80670 Translated using Weblate (Spanish)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 23:20:44 +01:00
Óscar Fernández Díaz
20841e3d7b Translated using Weblate (Spanish)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 23:13:36 +01:00
SeerLite
0caae233c3 Translated using Weblate (Spanish)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 23:13:36 +01:00
Óscar Fernández Díaz
5497d8fafb Translated using Weblate (Spanish)
Currently translated at 99.5% (496 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 17:41:42 +01:00
SeerLite
f69b43249c Translated using Weblate (Spanish)
Currently translated at 99.5% (496 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 17:41:41 +01:00
Óscar Fernández Díaz
b606fd98f6 Translated using Weblate (Spanish)
Currently translated at 88.5% (441 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 17:20:52 +01:00
SeerLite
ba3b7b0f1f Translated using Weblate (Spanish)
Currently translated at 88.5% (441 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 17:20:52 +01:00
Óscar Fernández Díaz
058d82dc36 Translated using Weblate (Spanish)
Currently translated at 86.3% (430 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 17:17:07 +01:00
SeerLite
6f0b0ac4fa Translated using Weblate (Spanish)
Currently translated at 86.3% (430 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 17:17:06 +01:00
Óscar Fernández Díaz
35f87b0f94 Translated using Weblate (Spanish)
Currently translated at 85.5% (426 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 17:15:19 +01:00
SeerLite
0ead9ce9b4 Translated using Weblate (Spanish)
Currently translated at 85.5% (426 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2020-12-23 17:15:18 +01:00
vachan-maker
80479a6a7c Translated using Weblate (Malayalam)
Currently translated at 76.9% (383 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ml/
2020-12-22 00:37:38 +01:00
J-Jamet
a7cea8201e Try to fix biometric crash 2020-12-20 11:41:58 +01:00
solokot
081a7fa798 Translated using Weblate (Russian)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2020-12-20 10:29:12 +01:00
WaldiS
85782c4f93 Translated using Weblate (Polish)
Currently translated at 97.9% (488 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2020-12-20 10:29:11 +01:00
uniprivscy
d7b7df26d7 Translated using Weblate (German)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-18 18:29:10 +01:00
J-Jamet
b6b1c8e31d Upgrade to version 2.9.7 2020-12-18 10:51:42 +01:00
J-Jamet
17156f7ca2 Merge tag '2.9.6' into develop
2.9.6
2020-12-18 10:15:51 +01:00
J-Jamet
0761d356b8 Merge branch 'release/2.9.6' 2020-12-18 10:15:41 +01:00
J-Jamet
6da747ce6f Fix keyfile bug #820 2020-12-18 10:06:38 +01:00
uniprivscy
87b1a1f527 Translated using Weblate (German)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-17 17:44:09 +01:00
Paul
72a8a55faf Translated using Weblate (German)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-17 17:44:09 +01:00
J-Jamet
428b53cc56 Merge branch 'develop' of github.com:Kunzisoft/KeePassDX into develop 2020-12-17 12:32:37 +01:00
J-Jamet
e688859e32 Fix exception when UI not fully loaded and click performed 2020-12-17 12:32:30 +01:00
Milo Ivir
98336da116 Translated using Weblate (Croatian)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2020-12-17 09:56:23 +01:00
Oğuz Ersen
c037e443b0 Translated using Weblate (Turkish)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2020-12-17 09:56:23 +01:00
Eric
d339a50e0a Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2020-12-17 09:56:23 +01:00
Ihor Hordiichuk
7d836f2633 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2020-12-17 09:56:22 +01:00
solokot
45d8470b4c Translated using Weblate (Russian)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2020-12-17 09:56:22 +01:00
Oliver Cervera
1ca3bfe472 Translated using Weblate (Italian)
Currently translated at 99.7% (497 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-17 09:56:22 +01:00
Retrial
066da83d70 Translated using Weblate (Greek)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2020-12-17 09:56:22 +01:00
zeritti
44ab881751 Translated using Weblate (Czech)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/
2020-12-17 09:56:21 +01:00
J-Jamet
f271f2b181 Update to 2.9.6 2020-12-16 17:54:33 +01:00
J-Jamet
91d75be0ea Merge tag '2.9.5' into develop
2.9.5
2020-12-16 17:06:02 +01:00
J-Jamet
774dddca54 Merge branch 'release/2.9.5' 2020-12-16 17:05:47 +01:00
J-Jamet
de980d030a Merge branch 'develop' of https://hosted.weblate.org/projects/keepass-dx/strings into translations 2020-12-16 11:13:48 +01:00
J-Jamet
0e859646fe Fix timeout reset #817 2020-12-15 19:40:27 +01:00
christopher robert
059c7b7713 Translated using Weblate (German)
Currently translated at 98.3% (490 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-15 13:29:10 +01:00
J-Jamet
5fb7bf71c8 Prevent auto switch back to previous keyboard if otp field exists #814 2020-12-15 11:47:57 +01:00
J-Jamet
8b0133ff7f Update CHANGELOG 2020-12-14 19:25:34 +01:00
J-Jamet
8d834946b8 Fix view flickering 2020-12-14 19:12:45 +01:00
J-Jamet
2f646395d4 Merge branch 'feature/Device_Unlock' into develop 2020-12-14 18:31:28 +01:00
J-Jamet
f6e79ba37b Add advanced unlock education hint 2020-12-14 18:23:41 +01:00
J-Jamet
e633c7a861 Biometric unlock in priority and device unlock when biometric not available 2020-12-14 17:51:18 +01:00
J-Jamet
dc02a8d78c Rollback to fix bug after orientation change 2020-12-14 16:59:38 +01:00
J-Jamet
baa9b88512 Check if current database is the same after activity result 2020-12-14 16:56:15 +01:00
J-Jamet
c522e87da8 Fix multiple methods in settings 2020-12-14 16:41:14 +01:00
Paul
ef5ebf2c15 Translated using Weblate (German)
Currently translated at 98.3% (490 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-14 13:23:34 +01:00
christopher robert
4b147e770c Translated using Weblate (German)
Currently translated at 98.3% (490 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-14 13:23:34 +01:00
J-Jamet
157a5c0b05 Refactor view visibility method 2020-12-13 23:39:17 +01:00
J-Jamet
f2288b0c64 Fix biometric prompt during orientation change 2020-12-13 23:25:44 +01:00
J-Jamet
d8506450aa Fix biometric orientation change 2020-12-13 23:19:04 +01:00
J-Jamet
f9b085e73f Fix min setting version and condition in Android R 2020-12-13 22:44:30 +01:00
J-Jamet
388cf6a91b Fix device credential condition and keep connexion if ActivityForResult requested 2020-12-13 22:33:58 +01:00
Stephan Paternotte
9e6e77b363 Translated using Weblate (Dutch)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2020-12-13 18:48:46 +01:00
J-Jamet
ec33ca8173 Refactoring Advanced unlock fragment and manager 2020-12-13 17:09:41 +01:00
J-Jamet
6be0457947 Add fragment 2020-12-13 14:18:21 +01:00
WaldiS
f3b84aa845 Translated using Weblate (Polish)
Currently translated at 98.1% (489 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2020-12-12 17:29:08 +01:00
J-Jamet
bd0b5b0954 Fix exception message 2020-12-12 14:53:23 +01:00
J-Jamet
7dc93604ad Refactoring AdvancedUnlockManager.kt 2020-12-12 14:13:13 +01:00
J-Jamet
0ab22698a6 Refactoring classes 2020-12-11 15:15:52 +01:00
J-Jamet
c885ce7aaf Refactoring of advanced unlock 2020-12-11 13:36:51 +01:00
J-Jamet
92d1a7b901 Fix string 2020-12-11 11:11:48 +01:00
J-Jamet
6119054b45 Upgrade to version 2.9.5 2020-12-11 11:03:00 +01:00
Eric
e7aed72398 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2020-12-11 01:55:56 +01:00
solokot
cee7fa50f5 Translated using Weblate (Russian)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2020-12-11 01:55:55 +01:00
Stephan Paternotte
39a38bb223 Translated using Weblate (Dutch)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2020-12-11 01:55:55 +01:00
Oliver Cervera
7159a993db Translated using Weblate (Italian)
Currently translated at 99.7% (497 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-11 01:55:54 +01:00
J-Jamet
23933e80e3 Merge tag '2.9.4' into develop
2.9.4
2020-12-10 22:27:38 +01:00
J-Jamet
abc971b5cc Merge branch 'release/2.9.4' 2020-12-10 22:27:30 +01:00
J-Jamet
7dedcc8a21 Argon2_id implementation #791 2020-12-10 22:15:08 +01:00
J-Jamet
10d46e5dee Remove default device credential in Android R to prevent update bug #812 2020-12-10 14:58:33 +01:00
J-Jamet
139f7eb36d Upgrade version to 2.9.4 2020-12-09 16:50:32 +01:00
J-Jamet
1ddfa894b6 Merge tag '2.9.3' into develop
2.9.3
2020-12-09 16:13:56 +01:00
J-Jamet
d1695ab8c2 Merge branch 'release/2.9.3' 2020-12-09 16:13:39 +01:00
Milo Ivir
f27979e729 Translated using Weblate (Croatian)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2020-12-09 15:36:20 +01:00
Milo Ivir
6e61e8172a Translated using Weblate (Croatian)
Currently translated at 99.7% (497 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2020-12-09 14:37:24 +01:00
Oğuz Ersen
21890894ae Translated using Weblate (Turkish)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2020-12-09 14:37:24 +01:00
Ihor Hordiichuk
1feecd559d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2020-12-09 14:37:24 +01:00
solokot
6ea4afe75b Translated using Weblate (Russian)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2020-12-09 14:37:21 +01:00
HARADA Hiroyuki
fd96f6367d Translated using Weblate (Japanese)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2020-12-09 14:37:21 +01:00
Kunzisoft
8ce183c4c9 Translated using Weblate (French)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2020-12-09 14:37:20 +01:00
Retrial
407a1db101 Translated using Weblate (Greek)
Currently translated at 100.0% (498 of 498 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2020-12-09 14:37:20 +01:00
J-Jamet
622d096e31 Merge branch 'develop' of https://hosted.weblate.org/git/keepass-dx/strings into translations 2020-12-08 13:01:48 +01:00
C. Rüdinger
bf27fb1f89 Translated using Weblate (German)
Currently translated at 94.9% (466 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-08 12:53:03 +01:00
Paul
860b9055c5 Translated using Weblate (German)
Currently translated at 94.9% (466 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-08 12:53:03 +01:00
J-Jamet
b3ae3a4148 Merge branch 'feature/Temp_Advanced_Unlock' into develop #102 #437 #566 2020-12-08 12:08:48 +01:00
J-Jamet
0abd7d5762 Update CHANGELOG 2020-12-08 12:08:28 +01:00
J-Jamet
0aac2bc55b Fix settings 2020-12-08 12:05:35 +01:00
J-Jamet
fa08dc5cfb Change notification icon 2020-12-08 11:17:39 +01:00
J-Jamet
8d18970b4c Fix advanced unlock notification 2020-12-07 20:34:23 +01:00
J-Jamet
173f5ce979 Add advanced unlock timeout 2020-12-07 20:21:39 +01:00
J-Jamet
2e7088310a Add listeners to refresh unlocking state 2020-12-07 19:07:10 +01:00
J-Jamet
c75d99030c Better service implementation 2020-12-07 18:22:04 +01:00
J-Jamet
e4ba1d9bae Better service implementation 2020-12-07 17:40:12 +01:00
J-Jamet
e2886c342a Add temp advanced service to store encrypted elements 2020-12-07 17:03:26 +01:00
J-Jamet
e600d8a56c Add temp advanced unlocking settings 2020-12-07 14:08:44 +01:00
J-Jamet
caeb305475 Fix deletion keystore key 2020-12-07 12:17:07 +01:00
Milo Ivir
3d3a9d9bad Translated using Weblate (Croatian)
Currently translated at 100.0% (491 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2020-12-06 15:29:09 +01:00
Oğuz Ersen
5499ad5b94 Translated using Weblate (Turkish)
Currently translated at 100.0% (491 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2020-12-06 15:29:08 +01:00
Eric
0e29cd0cee Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (491 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2020-12-06 15:29:08 +01:00
Ihor Hordiichuk
24fb1b1a8f Translated using Weblate (Ukrainian)
Currently translated at 100.0% (491 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2020-12-06 15:29:07 +01:00
solokot
03fb4cbf0c Translated using Weblate (Russian)
Currently translated at 100.0% (491 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2020-12-06 15:29:07 +01:00
WaldiS
e909280d5b Translated using Weblate (Polish)
Currently translated at 98.7% (485 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2020-12-06 15:29:07 +01:00
Kunzisoft
d41ddf60b4 Translated using Weblate (French)
Currently translated at 100.0% (491 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2020-12-06 15:29:06 +01:00
Retrial
1e01a74986 Translated using Weblate (Greek)
Currently translated at 100.0% (491 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2020-12-06 15:29:06 +01:00
zeritti
96a007aace Translated using Weblate (Czech)
Currently translated at 100.0% (491 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/
2020-12-06 15:29:06 +01:00
J-Jamet
9f23bb6129 Device credential as default unlock method in Android R+ 2020-12-05 15:03:23 +01:00
J-Jamet
b7e8559773 Remove unused code 2020-12-05 14:42:45 +01:00
J-Jamet
5b247575c8 Fix small bugs #805 2020-12-05 12:09:07 +01:00
HARADA Hiroyuki
eb0e5b478f Translated using Weblate (Japanese)
Currently translated at 100.0% (491 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2020-12-04 03:46:13 +01:00
HARADA Hiroyuki
08906ae1da Translated using Weblate (Japanese)
Currently translated at 100.0% (491 of 491 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2020-12-04 02:53:11 +01:00
Hosted Weblate
395a5efecd Merge branch 'origin/develop' into Weblate. 2020-12-03 23:58:52 +01:00
Milo Ivir
0452dd14f6 Translated using Weblate (Croatian)
Currently translated at 97.9% (476 of 486 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2020-12-03 23:58:52 +01:00
Oğuz Ersen
3906df314d Translated using Weblate (Turkish)
Currently translated at 100.0% (486 of 486 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2020-12-03 23:58:52 +01:00
Allan Nordhøy
ce49aa2ebd Translated using Weblate (Norwegian Bokmål)
Currently translated at 70.7% (344 of 486 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nb_NO/
2020-12-03 23:58:51 +01:00
Eric
f2cb062b1e Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (486 of 486 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2020-12-03 23:58:50 +01:00
Ihor Hordiichuk
f25819a940 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (486 of 486 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2020-12-03 23:58:50 +01:00
Kunzisoft
3075a9f9f4 Translated using Weblate (Japanese)
Currently translated at 96.0% (467 of 486 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2020-12-03 23:58:49 +01:00
Kunzisoft
52f1a672c8 Translated using Weblate (French)
Currently translated at 100.0% (486 of 486 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2020-12-03 23:58:49 +01:00
Retrial
45785fde1c Translated using Weblate (Greek)
Currently translated at 96.0% (467 of 486 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2020-12-03 23:58:49 +01:00
J-Jamet
6a7649e1d7 Tooltips for Magikeyboard #586 2020-12-03 23:56:42 +01:00
J-Jamet
8b3831eb2b Move OTP button to the first view level in Magikeyboard #587 2020-12-03 23:21:59 +01:00
J-Jamet
73e7f4669c Remove lifecycle observer import 2020-12-03 15:45:03 +01:00
J-Jamet
c9f7bbbd25 Remove default database parameter when the file is no longer accessible #803 2020-12-03 15:41:13 +01:00
solokot
ee67238133 Translated using Weblate (Russian)
Currently translated at 100.0% (486 of 486 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2020-12-03 08:23:35 +01:00
J-Jamet
b425da8d0f Merge branch 'master' of https://hosted.weblate.org/projects/keepass-dx/strings into translations 2020-12-02 13:45:08 +01:00
J-Jamet
754a7f70bc Remove unused translation 2020-12-02 13:22:18 +01:00
Oğuz Ersen
a857ffa987 Translated using Weblate (Turkish)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2020-12-02 13:12:41 +01:00
Kunzisoft
391ce2ebba Translated using Weblate (Galician)
Currently translated at 6.4% (31 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/gl/
2020-12-02 13:12:40 +01:00
Wilker Santana da Silva
086723adf4 Translated using Weblate (English)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/
2020-12-02 13:12:40 +01:00
Kunzisoft
e993279c35 Translated using Weblate (English)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/
2020-12-02 13:12:40 +01:00
Ihor Hordiichuk
aa64310875 Translated using Weblate (Ukrainian)
Currently translated at 99.3% (480 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2020-12-02 13:12:39 +01:00
Kunzisoft
795baf2c01 Translated using Weblate (Slovak)
Currently translated at 17.8% (86 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sk/
2020-12-02 13:12:39 +01:00
solokot
68ac453100 Translated using Weblate (Russian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2020-12-02 13:12:39 +01:00
Kunzisoft
79d1f512e5 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 14.9% (72 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nn/
2020-12-02 13:12:39 +01:00
Kunzisoft
e739211314 Translated using Weblate (Latvian)
Currently translated at 14.6% (71 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/lv/
2020-12-02 13:12:38 +01:00
HARADA Hiroyuki
d3f6374bb4 Translated using Weblate (Japanese)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2020-12-02 13:12:38 +01:00
Kunzisoft
5add632cbc Translated using Weblate (Hebrew)
Currently translated at 13.8% (67 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2020-12-02 13:12:38 +01:00
Kunzisoft
d210d1bcce Translated using Weblate (French)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2020-12-02 13:12:38 +01:00
J-Jamet
6d6422cd63 Merge branch 'translations' into develop 2020-12-02 10:06:28 +01:00
J-Jamet
66e8b7702b Default backup API key to unused 2020-12-02 09:54:47 +01:00
J-Jamet
b75502ad87 Replace strong tag 2020-12-02 09:41:17 +01:00
J-Jamet
3fba96d11f Merge branch 'master' of https://hosted.weblate.org/projects/keepass-dx/strings into translations 2020-12-02 09:39:11 +01:00
Kunzisoft
3571905705 Translated using Weblate (English)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/
2020-12-02 09:15:20 +01:00
vachan-maker
acf0e2a1cb Translated using Weblate (English)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/
2020-12-02 09:15:19 +01:00
Wilker Santana da Silva
9e7dcb0d7c Translated using Weblate (English)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/
2020-12-02 09:15:19 +01:00
Kunzisoft
3c261e3cf7 Deleted translation using Weblate (Abkhazian) 2020-12-02 08:54:49 +01:00
x
b6f324f399 Translated using Weblate (Italian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-02 08:38:03 +01:00
Kunzisoft
f2459489fa Translated using Weblate (Turkish)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2020-12-02 08:38:03 +01:00
Kunzisoft
f8691cf285 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2020-12-02 08:38:03 +01:00
Ihor Hordiichuk
2e631d3c42 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2020-12-02 08:38:03 +01:00
Filippo De Bortoli
1044dca936 Translated using Weblate (Italian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-02 08:38:03 +01:00
x
56c3f495d5 Translated using Weblate (Italian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-02 08:38:03 +01:00
x
0f3036dd9c Translated using Weblate (Italian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-02 08:38:03 +01:00
Filippo De Bortoli
af445ef157 Translated using Weblate (Italian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-02 08:38:03 +01:00
Kunzisoft
25eb09f11c Translated using Weblate (English)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/
2020-12-02 08:38:03 +01:00
Oğuz Ersen
16f255aeca Translated using Weblate (Turkish)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2020-12-02 08:38:03 +01:00
Jennifer Kitts
d0b340837d Translated using Weblate (English)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/
2020-12-02 08:38:03 +01:00
Eric
893828ac44 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2020-12-02 08:38:03 +01:00
Ihor Hordiichuk
a3ca03636a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2020-12-02 08:38:03 +01:00
WaldiS
582ffe3f23 Translated using Weblate (Polish)
Currently translated at 99.5% (481 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2020-12-02 08:38:03 +01:00
Milo Ivir
3caad2cceb Translated using Weblate (Croatian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2020-12-02 08:38:03 +01:00
Jennifer Kitts
618dcf014d Added translation using Weblate (Abkhazian) 2020-12-02 08:38:03 +01:00
zeritti
d88e20bb56 Translated using Weblate (Czech)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/
2020-12-02 08:38:03 +01:00
Miguel
8a8b2b027e Translated using Weblate (Portuguese (Portugal))
Currently translated at 94.8% (458 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_PT/
2020-12-02 08:38:03 +01:00
Bruno Guerreiro
41cb223099 Translated using Weblate (Portuguese (Portugal))
Currently translated at 94.8% (458 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_PT/
2020-12-02 08:38:03 +01:00
J. Lavoie
b93ea5e662 Translated using Weblate (Italian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-02 08:38:03 +01:00
J. Lavoie
31c35939fd Translated using Weblate (French)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2020-12-02 08:38:03 +01:00
J. Lavoie
20a35f4221 Translated using Weblate (Finnish)
Currently translated at 60.0% (290 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fi/
2020-12-02 08:38:03 +01:00
C. Rüdinger
bc6aeb2e93 Translated using Weblate (German)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-02 08:38:03 +01:00
J. Lavoie
a561299809 Translated using Weblate (German)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-02 08:38:03 +01:00
Filippo De Bortoli
76efb938ab Translated using Weblate (Italian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-02 08:38:03 +01:00
Filippo De Bortoli
56abf73eaf Translated using Weblate (Italian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-02 08:38:03 +01:00
J. Lavoie
2bc068d65a Translated using Weblate (Italian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2020-12-02 08:38:03 +01:00
J. Lavoie
f191259f37 Translated using Weblate (German)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-02 08:38:03 +01:00
C. Rüdinger
1384c6661d Translated using Weblate (German)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2020-12-02 08:38:03 +01:00
Oğuz Ersen
c047621548 Translated using Weblate (Turkish)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2020-12-02 08:38:03 +01:00
Eric
017aaf2e54 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2020-12-02 08:38:03 +01:00
Ihor Hordiichuk
e4b2b930af Translated using Weblate (Ukrainian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2020-12-02 08:38:03 +01:00
solokot
2646c0f0ee Translated using Weblate (Russian)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2020-12-02 08:38:03 +01:00
HARADA Hiroyuki
4afadb779c Translated using Weblate (Japanese)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2020-12-02 08:38:03 +01:00
Retrial
ad6e4daa22 Translated using Weblate (Greek)
Currently translated at 100.0% (483 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2020-12-02 08:38:03 +01:00
jan madsen
d5cd07fe76 Translated using Weblate (Danish)
Currently translated at 98.7% (477 of 483 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/da/
2020-12-02 08:38:03 +01:00
abidin toumi
364065ed51 Translated using Weblate (Arabic)
Currently translated at 74.6% (360 of 482 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ar/
2020-12-02 08:38:03 +01:00
Stephan Paternotte
b4f05d4da7 Translated using Weblate (Dutch)
Currently translated at 100.0% (482 of 482 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2020-12-02 08:38:03 +01:00
J-Jamet
3d12a0e8e9 Fix fingerprint none enrolled detection 2020-12-01 13:48:08 +01:00
J-Jamet
e29f3194f3 Upgrade to 2.9.3 and update CHANGELOG 2020-11-30 17:50:47 +01:00
J-Jamet
6bac86638b Change fingerprint pref icon by a bolt 2020-11-30 17:45:58 +01:00
J-Jamet
d6ee1cdf6e Merge branch 'feature/Device_Credential_Unlock' into develop #779 2020-11-30 17:24:59 +01:00
J-Jamet
e9d0efaf93 Fix advanced unlock setting events 2020-11-30 17:20:58 +01:00
J-Jamet
85467fa15b Change biometric to advanced unlock 2020-11-30 13:56:14 +01:00
J-Jamet
84bb47aa53 Better unlock settings 2020-11-23 20:47:50 +01:00
J-Jamet
75f245c7dc Add device credential unlock 2020-11-23 19:14:44 +01:00
J-Jamet
6c5be88432 Fix biometric error message when the keystore is not accessible 2020-11-23 16:52:36 +01:00
J-Jamet
590b22de69 Merge tag '2.9.2' into develop
2.9.2
2020-11-22 20:37:23 +01:00
118 changed files with 3729 additions and 2226 deletions

View File

@@ -1,3 +1,31 @@
KeePassDX(2.9.8)
* Fix specific attachments with kdbx3.1 databases #828
* Fix small bugs
KeePassDX(2.9.7)
* Remove write permission since Android 10 #823
* Fix small bugs
KeePassDX(2.9.6)
* Fix KeyFile bug #820
KeePassDX(2.9.5)
* Unlock database by device credentials (PIN/Password/Pattern) with Android M+ #102 #152 #811
* Prevent auto switch back to previous keyboard if otp field exists #814
* Fix timeout reset #817
KeePassDX(2.9.4)
* Fix small bugs #812
* Argon2ID implementation #791
KeePassDX(2.9.3)
* Unlock database by device credentials (PIN/Password/Pattern) #779 #102
* Advanced unlock with timeout #102 #437 #566
* Remove default database parameter when the file is no longer accessible #803
* Move OTP button to the first view level in Magikeyboard #587
* Tooltips for Magikeyboard #586
* Fix small bugs #805
KeePassDX(2.9.2)
* Managing OTP links from QR applications #556
* Prevent manual creation of existing field name #718

View File

@@ -12,15 +12,15 @@ android {
applicationId "com.kunzisoft.keepass"
minSdkVersion 14
targetSdkVersion 30
versionCode = 46
versionName = "2.9.2"
versionCode = 52
versionName = "2.9.8"
multiDexEnabled true
testApplicationId = "com.kunzisoft.keepass.tests"
testInstrumentationRunner = "android.test.InstrumentationTestRunner"
buildConfigField "String[]", "ICON_PACKS", "{\"classic\",\"material\"}"
manifestPlaceholders = [ googleAndroidBackupAPIKey:"" ]
manifestPlaceholders = [ googleAndroidBackupAPIKey:"unused" ]
kapt {
arguments {
@@ -92,7 +92,7 @@ android {
}
}
def room_version = "2.2.5"
def room_version = "2.2.6"
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

View File

@@ -14,10 +14,15 @@
android:name="android.permission.USE_BIOMETRIC" />
<uses-permission
android:name="android.permission.VIBRATE"/>
<!-- Write permission until Android 10 -->
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28"
tools:ignore="ScopedStorage" />
<!-- Open apps from links -->
<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"/>
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<application
android:label="@string/app_name"
@@ -174,13 +179,17 @@
android:enabled="true"
android:exported="false" />
<service
android:name=".notifications.AttachmentFileNotificationService"
android:name="com.kunzisoft.keepass.notifications.AttachmentFileNotificationService"
android:enabled="true"
android:exported="false" />
<service
android:name="com.kunzisoft.keepass.notifications.ClipboardEntryNotificationService"
android:enabled="true"
android:exported="false" />
<service
android:name="com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService"
android:enabled="true"
android:exported="false" />
<!-- Receiver for Autofill -->
<service
android:name="com.kunzisoft.keepass.autofill.KeeAutofillService"

View File

@@ -40,6 +40,7 @@ import com.google.android.material.appbar.CollapsingToolbarLayout
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.helpers.ReadOnlyHelper
import com.kunzisoft.keepass.activities.lock.LockingActivity
import com.kunzisoft.keepass.activities.lock.resetAppTimeoutWhenViewFocusedOrChanged
import com.kunzisoft.keepass.database.element.Attachment
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.element.Entry
@@ -133,7 +134,7 @@ class EntryActivity : LockingActivity() {
}
// Focus view to reinitialize timeout
resetAppTimeoutWhenViewFocusedOrChanged(coordinatorLayout)
coordinatorLayout?.resetAppTimeoutWhenViewFocusedOrChanged(this)
// Init the clipboard helper
clipboardHelper = ClipboardHelper(this)

View File

@@ -48,6 +48,7 @@ import com.kunzisoft.keepass.activities.dialogs.FileTooBigDialogFragment.Compani
import com.kunzisoft.keepass.activities.helpers.EntrySelectionHelper
import com.kunzisoft.keepass.activities.helpers.SelectFileHelper
import com.kunzisoft.keepass.activities.lock.LockingActivity
import com.kunzisoft.keepass.activities.lock.resetAppTimeoutWhenViewFocusedOrChanged
import com.kunzisoft.keepass.autofill.AutofillHelper
import com.kunzisoft.keepass.database.element.*
import com.kunzisoft.keepass.database.element.icon.IconImage
@@ -134,7 +135,7 @@ class EntryEditActivity : LockingActivity(),
}
// Focus view to reinitialize timeout
resetAppTimeoutWhenViewFocusedOrChanged(coordinatorLayout)
coordinatorLayout?.resetAppTimeoutWhenViewFocusedOrChanged(this)
stopService(Intent(this, ClipboardEntryNotificationService::class.java))
stopService(Intent(this, KeyboardEntryNotificationService::class.java))

View File

@@ -37,6 +37,7 @@ import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.dialogs.GeneratePasswordDialogFragment
import com.kunzisoft.keepass.activities.lock.resetAppTimeoutWhenViewFocusedOrChanged
import com.kunzisoft.keepass.activities.stylish.StylishFragment
import com.kunzisoft.keepass.adapters.EntryAttachmentsItemsAdapter
import com.kunzisoft.keepass.database.element.Attachment
@@ -148,6 +149,8 @@ class EntryEditFragment: StylishFragment() {
iconColor = taIconColor?.getColor(0, Color.WHITE) ?: Color.WHITE
taIconColor?.recycle()
rootView?.resetAppTimeoutWhenViewFocusedOrChanged(requireContext())
// Retrieve the new entry after an orientation change
if (arguments?.containsKey(KEY_TEMP_ENTRY_INFO) == true)
mEntryInfo = arguments?.getParcelable(KEY_TEMP_ENTRY_INFO) ?: mEntryInfo

View File

@@ -36,7 +36,6 @@ import androidx.activity.viewModels
import androidx.annotation.RequiresApi
import androidx.appcompat.widget.Toolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.SimpleItemAnimator
@@ -162,7 +161,7 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
}
// Observe list of databases
databaseFilesViewModel.databaseFilesLoaded.observe(this, Observer { databaseFiles ->
databaseFilesViewModel.databaseFilesLoaded.observe(this) { databaseFiles ->
when (databaseFiles.databaseFileAction) {
DatabaseFilesViewModel.DatabaseFileAction.NONE -> {
mAdapterDatabaseHistory?.replaceAllDatabaseFileHistoryList(databaseFiles.databaseFileList)
@@ -186,13 +185,13 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
}
}
databaseFilesViewModel.consumeAction()
})
}
// Observe default database
databaseFilesViewModel.defaultDatabase.observe(this, Observer {
databaseFilesViewModel.defaultDatabase.observe(this) {
// Retrieve settings for default database
mAdapterDatabaseHistory?.setDefaultDatabase(it)
})
}
// Attach the dialog thread to this activity
mProgressDatabaseTaskProvider = ProgressDatabaseTaskProvider(this).apply {
@@ -237,10 +236,10 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
private fun fileNoFoundAction(e: FileNotFoundException) {
val error = getString(R.string.file_not_found_content)
Log.e(TAG, error, e)
coordinatorLayout?.let {
Snackbar.make(it, error, Snackbar.LENGTH_LONG).asError().show()
}
Log.e(TAG, error, e)
}
private fun launchPasswordActivity(databaseUri: Uri, keyFile: Uri?) {
@@ -435,8 +434,8 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
when (item.itemId) {
android.R.id.home -> UriUtil.gotoUrl(this, R.string.file_manager_explanation_url)
}
return MenuUtil.onDefaultMenuOptionsItemSelected(this, item) && super.onOptionsItemSelected(item)
MenuUtil.onDefaultMenuOptionsItemSelected(this, item)
return super.onOptionsItemSelected(item)
}
companion object {

View File

@@ -50,6 +50,7 @@ import com.kunzisoft.keepass.activities.helpers.EntrySelectionHelper
import com.kunzisoft.keepass.activities.helpers.ReadOnlyHelper
import com.kunzisoft.keepass.activities.helpers.SpecialMode
import com.kunzisoft.keepass.activities.lock.LockingActivity
import com.kunzisoft.keepass.activities.lock.resetAppTimeoutWhenViewFocusedOrChanged
import com.kunzisoft.keepass.adapters.SearchEntryCursorAdapter
import com.kunzisoft.keepass.autofill.AutofillHelper
import com.kunzisoft.keepass.database.element.Database
@@ -153,7 +154,7 @@ class GroupActivity : LockingActivity(),
taTextColor.recycle()
// Focus view to reinitialize timeout
resetAppTimeoutWhenViewFocusedOrChanged(rootContainerView)
rootContainerView?.resetAppTimeoutWhenViewFocusedOrChanged(this)
// Retrieve elements after an orientation change
if (savedInstanceState != null) {
@@ -316,7 +317,12 @@ class GroupActivity : LockingActivity(),
if (result.isSuccess) {
// Rebuild all the list to avoid bug when delete node from sort
mListNodesFragment?.rebuildList()
try {
mListNodesFragment?.rebuildList()
} catch (e: Exception) {
Log.e(TAG, "Unable to rebuild the list after deletion")
e.printStackTrace()
}
// Add trash in views list if it doesn't exists
if (database.isRecycleBinEnabled) {
@@ -1124,7 +1130,16 @@ class GroupActivity : LockingActivity(),
private fun rebuildListNodes() {
mListNodesFragment = supportFragmentManager.findFragmentByTag(LIST_NODES_FRAGMENT_TAG) as ListNodesFragment?
// to refresh fragment
mListNodesFragment?.rebuildList()
try {
mListNodesFragment?.rebuildList()
} catch (e: Exception) {
e.printStackTrace()
coordinatorLayout?.let { coordinatorLayout ->
Snackbar.make(coordinatorLayout,
R.string.error_rebuild_list,
Snackbar.LENGTH_LONG).asError().show()
}
}
mCurrentGroup = mListNodesFragment?.mainGroup
// Remove search in intent
deletePreviousSearchGroup()

View File

@@ -22,30 +22,24 @@ package com.kunzisoft.keepass.activities
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.*
import androidx.appcompat.view.ActionMode
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import android.util.Log
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.view.ActionMode
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.adapters.NodeAdapter
import com.kunzisoft.keepass.database.element.SortNodeEnum
import com.kunzisoft.keepass.database.element.Group
import com.kunzisoft.keepass.database.element.node.Node
import com.kunzisoft.keepass.activities.dialogs.SortDialogFragment
import com.kunzisoft.keepass.activities.helpers.EntrySelectionHelper
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.activities.stylish.StylishFragment
import com.kunzisoft.keepass.activities.helpers.ReadOnlyHelper
import com.kunzisoft.keepass.activities.helpers.SpecialMode
import com.kunzisoft.keepass.activities.stylish.StylishFragment
import com.kunzisoft.keepass.adapters.NodeAdapter
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.element.Group
import com.kunzisoft.keepass.database.element.SortNodeEnum
import com.kunzisoft.keepass.database.element.node.Node
import com.kunzisoft.keepass.database.element.node.Type
import com.kunzisoft.keepass.settings.PreferencesUtil
import java.util.*
class ListNodesFragment : StylishFragment(), SortDialogFragment.SortSelectionListener {
@@ -197,7 +191,12 @@ class ListNodesFragment : StylishFragment(), SortDialogFragment.SortSelectionLis
}
// Refresh data
rebuildList()
try {
rebuildList()
} catch (e: Exception) {
Log.e(TAG, "Unable to rebuild the list during resume")
e.printStackTrace()
}
if (isASearchResult && mAdapter!= null && mAdapter!!.isEmpty) {
// To show the " no search entry found "
@@ -209,10 +208,12 @@ class ListNodesFragment : StylishFragment(), SortDialogFragment.SortSelectionLis
}
}
@Throws(IllegalArgumentException::class)
fun rebuildList() {
// Add elements to the list
mainGroup?.let { mainGroup ->
mAdapter?.apply {
// Thrown an exception when sort cannot be performed
rebuildList(mainGroup)
// To visually change the elements
if (PreferencesUtil.APPEARANCE_CHANGED) {
@@ -231,8 +232,13 @@ class ListNodesFragment : StylishFragment(), SortDialogFragment.SortSelectionLis
}
// Tell the adapter to refresh it's list
mAdapter?.notifyChangeSort(sortNodeEnum, sortNodeParameters)
rebuildList()
try {
mAdapter?.notifyChangeSort(sortNodeEnum, sortNodeParameters)
rebuildList()
} catch (e:Exception) {
Log.e(TAG, "Unable to rebuild the list with the sort")
e.printStackTrace()
}
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {

View File

@@ -37,9 +37,8 @@ import android.widget.*
import androidx.activity.viewModels
import androidx.annotation.RequiresApi
import androidx.appcompat.widget.Toolbar
import androidx.biometric.BiometricManager
import androidx.core.app.ActivityCompat
import androidx.lifecycle.Observer
import androidx.fragment.app.commit
import com.google.android.material.snackbar.Snackbar
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.dialogs.DuplicateUuidDialog
@@ -51,11 +50,11 @@ import com.kunzisoft.keepass.activities.lock.LockingActivity
import com.kunzisoft.keepass.activities.selection.SpecialModeActivity
import com.kunzisoft.keepass.app.database.CipherDatabaseEntity
import com.kunzisoft.keepass.autofill.AutofillHelper
import com.kunzisoft.keepass.biometric.AdvancedUnlockedManager
import com.kunzisoft.keepass.biometric.BiometricUnlockDatabaseHelper
import com.kunzisoft.keepass.biometric.AdvancedUnlockFragment
import com.kunzisoft.keepass.database.action.ProgressDatabaseTaskProvider
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.exception.DuplicateUuidDatabaseException
import com.kunzisoft.keepass.database.exception.FileNotFoundDatabaseException
import com.kunzisoft.keepass.education.PasswordActivityEducation
import com.kunzisoft.keepass.model.RegisterInfo
import com.kunzisoft.keepass.model.SearchInfo
@@ -69,14 +68,13 @@ import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.utils.BACK_PREVIOUS_KEYBOARD_ACTION
import com.kunzisoft.keepass.utils.MenuUtil
import com.kunzisoft.keepass.utils.UriUtil
import com.kunzisoft.keepass.view.AdvancedUnlockInfoView
import com.kunzisoft.keepass.view.KeyFileSelectionView
import com.kunzisoft.keepass.view.asError
import com.kunzisoft.keepass.viewmodels.DatabaseFileViewModel
import kotlinx.android.synthetic.main.activity_password.*
import java.io.FileNotFoundException
open class PasswordActivity : SpecialModeActivity() {
open class PasswordActivity : SpecialModeActivity(), AdvancedUnlockFragment.BuilderListener {
// Views
private var toolbar: Toolbar? = null
@@ -86,12 +84,12 @@ open class PasswordActivity : SpecialModeActivity() {
private var confirmButtonView: Button? = null
private var checkboxPasswordView: CompoundButton? = null
private var checkboxKeyFileView: CompoundButton? = null
private var advancedUnlockInfoView: AdvancedUnlockInfoView? = null
private var advancedUnlockFragment: AdvancedUnlockFragment? = null
private var infoContainerView: ViewGroup? = null
private var enableButtonOnCheckedChangeListener: CompoundButton.OnCheckedChangeListener? = null
private val databaseFileViewModel: DatabaseFileViewModel by viewModels()
private var mDefaultDatabase: Boolean = false
private var mDatabaseFileUri: Uri? = null
private var mDatabaseKeyFileUri: Uri? = null
@@ -113,7 +111,6 @@ open class PasswordActivity : SpecialModeActivity() {
private var mProgressDatabaseTaskProvider: ProgressDatabaseTaskProvider? = null
private var advancedUnlockedManager: AdvancedUnlockedManager? = null
private var mAllowAutoOpenBiometricPrompt: Boolean = true
override fun onCreate(savedInstanceState: Bundle?) {
@@ -133,7 +130,6 @@ open class PasswordActivity : SpecialModeActivity() {
keyFileSelectionView = findViewById(R.id.keyfile_selection)
checkboxPasswordView = findViewById(R.id.password_checkbox)
checkboxKeyFileView = findViewById(R.id.keyfile_checkox)
advancedUnlockInfoView = findViewById(R.id.biometric_info)
infoContainerView = findViewById(R.id.activity_password_info_container)
mPermissionAsked = savedInstanceState?.getBoolean(KEY_PERMISSION_ASKED) ?: mPermissionAsked
@@ -160,10 +156,6 @@ open class PasswordActivity : SpecialModeActivity() {
}
})
enableButtonOnCheckedChangeListener = CompoundButton.OnCheckedChangeListener { _, _ ->
enableOrNotTheConfirmationButton()
}
// If is a view intent
getUriFromIntent(intent)
if (savedInstanceState?.containsKey(KEY_KEYFILE) == true) {
@@ -173,8 +165,31 @@ open class PasswordActivity : SpecialModeActivity() {
mAllowAutoOpenBiometricPrompt = savedInstanceState.getBoolean(ALLOW_AUTO_OPEN_BIOMETRIC_PROMPT)
}
// 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
checkboxPasswordView?.setOnCheckedChangeListener { _, _ ->
advancedUnlockFragment?.checkUnlockAvailability()
enableOrNotTheConfirmationButton()
}
// Observe if default database
databaseFileViewModel.isDefaultDatabase.observe(this) { isDefaultDatabase ->
mDefaultDatabase = isDefaultDatabase
}
// Observe database file change
databaseFileViewModel.databaseFileLoaded.observe(this, Observer { databaseFile ->
databaseFileViewModel.databaseFileLoaded.observe(this) { databaseFile ->
// Force read only if the file does not exists
mForceReadOnly = databaseFile?.let {
!it.databaseFileExists
@@ -194,19 +209,14 @@ open class PasswordActivity : SpecialModeActivity() {
filenameView?.text = databaseFile?.databaseAlias ?: ""
onDatabaseFileLoaded(databaseFile?.databaseUri, keyFileUri)
})
}
mProgressDatabaseTaskProvider = ProgressDatabaseTaskProvider(this).apply {
onActionFinish = { actionTask, result ->
when (actionTask) {
ACTION_DATABASE_LOAD_TASK -> {
// Recheck biometric if error
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PreferencesUtil.isBiometricUnlockEnable(this@PasswordActivity)) {
// Stay with the same mode and init it
advancedUnlockedManager?.initBiometricMode()
}
}
// Recheck advanced unlock if error
advancedUnlockFragment?.initAdvancedUnlockMode()
if (result.isSuccess) {
mDatabaseKeyFileUri = null
@@ -220,32 +230,40 @@ open class PasswordActivity : SpecialModeActivity() {
if (resultException != null) {
resultError = resultException.getLocalizedMessage(resources)
// Relaunch loading if we need to fix UUID
if (resultException is DuplicateUuidDatabaseException) {
showLoadDatabaseDuplicateUuidMessage {
when (resultException) {
is DuplicateUuidDatabaseException -> {
// Relaunch loading if we need to fix UUID
showLoadDatabaseDuplicateUuidMessage {
var databaseUri: Uri? = null
var masterPassword: String? = null
var keyFileUri: Uri? = null
var readOnly = true
var cipherEntity: CipherDatabaseEntity? = null
var databaseUri: Uri? = null
var masterPassword: String? = null
var keyFileUri: Uri? = null
var readOnly = true
var cipherEntity: CipherDatabaseEntity? = null
result.data?.let { resultData ->
databaseUri = resultData.getParcelable(DATABASE_URI_KEY)
masterPassword = resultData.getString(MASTER_PASSWORD_KEY)
keyFileUri = resultData.getParcelable(KEY_FILE_URI_KEY)
readOnly = resultData.getBoolean(READ_ONLY_KEY)
cipherEntity = resultData.getParcelable(CIPHER_ENTITY_KEY)
result.data?.let { resultData ->
databaseUri = resultData.getParcelable(DATABASE_URI_KEY)
masterPassword = resultData.getString(MASTER_PASSWORD_KEY)
keyFileUri = resultData.getParcelable(KEY_FILE_URI_KEY)
readOnly = resultData.getBoolean(READ_ONLY_KEY)
cipherEntity = resultData.getParcelable(CIPHER_ENTITY_KEY)
}
databaseUri?.let { databaseFileUri ->
showProgressDialogAndLoadDatabase(
databaseFileUri,
masterPassword,
keyFileUri,
readOnly,
cipherEntity,
true)
}
}
databaseUri?.let { databaseFileUri ->
showProgressDialogAndLoadDatabase(
databaseFileUri,
masterPassword,
keyFileUri,
readOnly,
cipherEntity,
true)
}
is FileNotFoundDatabaseException -> {
// Remove this default database inaccessible
if (mDefaultDatabase) {
databaseFileViewModel.removeDefaultDatabase()
}
}
}
@@ -277,6 +295,9 @@ open class PasswordActivity : SpecialModeActivity() {
mDatabaseFileUri = intent?.getParcelableExtra(KEY_FILENAME)
mDatabaseKeyFileUri = intent?.getParcelableExtra(KEY_KEYFILE)
}
mDatabaseFileUri?.let {
databaseFileViewModel.checkIfIsDefaultDatabase(it)
}
}
override fun onNewIntent(intent: Intent?) {
@@ -303,6 +324,33 @@ open class PasswordActivity : SpecialModeActivity() {
finish()
}
override fun retrieveCredentialForEncryption(): String {
return passwordView?.text?.toString() ?: ""
}
override fun conditionToStoreCredential(): Boolean {
return checkboxPasswordView?.isChecked == true
}
override fun onCredentialEncrypted(databaseUri: Uri,
encryptedCredential: String,
ivSpec: String) {
// Load the database if password is registered with biometric
verifyCheckboxesAndLoadDatabase(
CipherDatabaseEntity(
databaseUri.toString(),
encryptedCredential,
ivSpec)
)
}
override fun onCredentialDecrypted(databaseUri: Uri,
decryptedCredential: String) {
// Load the database if password is retrieve from biometric
// Retrieve from biometric
verifyKeyFileCheckboxAndLoadDatabase(decryptedCredential)
}
private val onEditorActionListener = object : TextView.OnEditorActionListener {
override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
if (actionId == IME_ACTION_DONE) {
@@ -369,48 +417,9 @@ open class PasswordActivity : SpecialModeActivity() {
verifyCheckboxesAndLoadDatabase(password, keyFileUri)
} else {
// Init Biometric elements
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PreferencesUtil.isBiometricUnlockEnable(this)) {
if (advancedUnlockedManager == null
&& databaseFileUri != null) {
advancedUnlockedManager = AdvancedUnlockedManager(this,
databaseFileUri,
advancedUnlockInfoView,
checkboxPasswordView,
enableButtonOnCheckedChangeListener,
passwordView,
{ passwordEncrypted, ivSpec ->
// Load the database if password is registered with biometric
if (passwordEncrypted != null && ivSpec != null) {
verifyCheckboxesAndLoadDatabase(
CipherDatabaseEntity(
databaseFileUri.toString(),
passwordEncrypted,
ivSpec)
)
}
},
{ passwordDecrypted ->
// Load the database if password is retrieve from biometric
passwordDecrypted?.let {
// Retrieve from biometric
verifyKeyFileCheckboxAndLoadDatabase(it)
}
})
}
advancedUnlockedManager?.isBiometricPromptAutoOpenEnable =
mAllowAutoOpenBiometricPrompt && mProgressDatabaseTaskProvider?.isBinded() != true
advancedUnlockedManager?.checkBiometricAvailability()
} else {
advancedUnlockInfoView?.visibility = View.GONE
advancedUnlockedManager?.destroy()
advancedUnlockedManager = null
}
}
if (advancedUnlockedManager == null) {
checkboxPasswordView?.setOnCheckedChangeListener(enableButtonOnCheckedChangeListener)
}
checkboxKeyFileView?.setOnCheckedChangeListener(enableButtonOnCheckedChangeListener)
advancedUnlockFragment?.loadDatabase(databaseFileUri,
mAllowAutoOpenBiometricPrompt
&& mProgressDatabaseTaskProvider?.isBinded() != true)
}
enableOrNotTheConfirmationButton()
@@ -462,11 +471,6 @@ open class PasswordActivity : SpecialModeActivity() {
override fun onPause() {
mProgressDatabaseTaskProvider?.unregisterProgressTask()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
advancedUnlockedManager?.destroy()
advancedUnlockedManager = null
}
// Reinit locking activity UI variable
LockingActivity.LOCKING_ACTIVITY_UI_VISIBLE_DURING_LOCK = null
mAllowAutoOpenBiometricPrompt = true
@@ -575,11 +579,6 @@ open class PasswordActivity : SpecialModeActivity() {
MenuUtil.defaultMenuInflater(inflater, menu)
}
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// biometric menu
advancedUnlockedManager?.inflateOptionsMenu(inflater, menu)
}
super.onCreateOptionsMenu(menu)
launchEducation(menu)
@@ -589,13 +588,13 @@ open class PasswordActivity : SpecialModeActivity() {
// Check permission
private fun checkPermission() {
val writePermission = android.Manifest.permission.WRITE_EXTERNAL_STORAGE
val permissions = arrayOf(writePermission)
if (Build.VERSION.SDK_INT >= 23
if (Build.VERSION.SDK_INT in 23..28
&& !readOnly
&& !mPermissionAsked) {
mPermissionAsked = true
// Check self permission to show or not the dialog
val writePermission = android.Manifest.permission.WRITE_EXTERNAL_STORAGE
val permissions = arrayOf(writePermission)
if (toolbar != null
&& ActivityCompat.checkSelfPermission(this, writePermission) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, permissions, WRITE_EXTERNAL_STORAGE_REQUEST)
@@ -655,21 +654,14 @@ open class PasswordActivity : SpecialModeActivity() {
performedNextEducation(passwordActivityEducation, menu)
})
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& !readOnlyEducationPerformed) {
val biometricCanAuthenticate = BiometricUnlockDatabaseHelper.canAuthenticate(this)
PreferencesUtil.isBiometricUnlockEnable(applicationContext)
&& (biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED || biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS)
&& advancedUnlockInfoView != null && advancedUnlockInfoView?.visibility == View.VISIBLE
&& advancedUnlockInfoView?.unlockIconImageView != null
&& passwordActivityEducation.checkAndPerformedBiometricEducation(advancedUnlockInfoView?.unlockIconImageView!!,
{
performedNextEducation(passwordActivityEducation, menu)
},
{
performedNextEducation(passwordActivityEducation, menu)
})
}
advancedUnlockFragment?.performEducation(passwordActivityEducation,
readOnlyEducationPerformed,
{
performedNextEducation(passwordActivityEducation, menu)
},
{
performedNextEducation(passwordActivityEducation, menu)
})
}
}
@@ -691,10 +683,7 @@ open class PasswordActivity : SpecialModeActivity() {
readOnly = !readOnly
changeOpenFileReadIcon(item)
}
R.id.menu_biometric_remove_key -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
advancedUnlockedManager?.deleteEntryKey()
}
else -> return MenuUtil.onDefaultMenuOptionsItemSelected(this, item)
else -> MenuUtil.onDefaultMenuOptionsItemSelected(this, item)
}
return super.onOptionsItemSelected(item)
@@ -708,6 +697,9 @@ open class PasswordActivity : SpecialModeActivity() {
mAllowAutoOpenBiometricPrompt = false
// To get device credential unlock result
advancedUnlockFragment?.onActivityResult(requestCode, resultCode, data)
// To get entry in result
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
AutofillHelper.onActivityResultSetResultAndFinish(this, requestCode, resultCode, data)
@@ -741,6 +733,8 @@ open class PasswordActivity : SpecialModeActivity() {
private val TAG = PasswordActivity::class.java.name
private const val UNLOCK_FRAGMENT_TAG = "UNLOCK_FRAGMENT_TAG"
private const val KEY_FILENAME = "fileName"
private const val KEY_KEYFILE = "keyFile"
private const val VIEW_INTENT = "android.intent.action.VIEW"

View File

@@ -90,12 +90,12 @@ class UnavailableFeatureDialogFragment : DialogFragment() {
}
}
if (apiName.isEmpty()) {
val mapper = arrayOf("ANDROID BASE", "ANDROID BASE 1.1", "CUPCAKE", "DONUT", "ECLAIR", "ECLAIR_0_1", "ECLAIR_MR1", "FROYO", "GINGERBREAD", "GINGERBREAD_MR1", "HONEYCOMB", "HONEYCOMB_MR1", "HONEYCOMB_MR2", "ICE_CREAM_SANDWICH", "ICE_CREAM_SANDWICH_MR1", "JELLY_BEAN", "JELLY_BEAN", "JELLY_BEAN", "KITKAT", "KITKAT", "LOLLIPOOP", "LOLLIPOOP_MR1", "MARSHMALLOW", "NOUGAT", "NOUGAT", "OREO", "OREO")
val mapper = arrayOf("ANDROID BASE", "ANDROID BASE 1.1", "CUPCAKE", "DONUT", "ECLAIR", "ECLAIR_0_1", "ECLAIR_MR1", "FROYO", "GINGERBREAD", "GINGERBREAD_MR1", "HONEYCOMB", "HONEYCOMB_MR1", "HONEYCOMB_MR2", "ICE_CREAM_SANDWICH", "ICE_CREAM_SANDWICH_MR1", "JELLY_BEAN", "JELLY_BEAN", "JELLY_BEAN", "KITKAT", "KITKAT", "LOLLIPOOP", "LOLLIPOOP_MR1", "MARSHMALLOW", "NOUGAT", "NOUGAT", "OREO", "OREO", "PIE", "", "")
val index = apiNumber - 1
apiName = if (index < mapper.size) mapper[index] else "UNKNOWN_VERSION"
}
if (version.isEmpty()) {
val versions = arrayOf("1.0", "1.1", "1.5", "1.6", "2.0", "2.0.1", "2.1", "2.2.X", "2.3", "2.3.3", "3.0", "3.1", "3.2.0", "4.0.1", "4.0.3", "4.1.0", "4.2.0", "4.3.0", "4.4", "4.4", "5.0", "5.1", "6.0", "7.0", "7.1", "8.0.0", "8.1.0")
val versions = arrayOf("1.0", "1.1", "1.5", "1.6", "2.0", "2.0.1", "2.1", "2.2.X", "2.3", "2.3.3", "3.0", "3.1", "3.2.0", "4.0.1", "4.0.3", "4.1.0", "4.2.0", "4.3.0", "4.4", "4.4", "5.0", "5.1", "6.0", "7.0", "7.1", "8.0.0", "8.1.0", "9", "10", "11")
val index = apiNumber - 1
version = if (index < versions.size) versions[index] else "UNKNOWN_VERSION"
}

View File

@@ -20,6 +20,7 @@
package com.kunzisoft.keepass.activities.lock
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.MotionEvent
@@ -163,35 +164,6 @@ abstract class LockingActivity : SpecialModeActivity() {
sendBroadcast(Intent(LOCK_ACTION))
}
/**
* To reset the app timeout when a view is focused or changed
*/
@SuppressLint("ClickableViewAccessibility")
protected fun resetAppTimeoutWhenViewFocusedOrChanged(vararg views: View?) {
views.forEach {
it?.setOnTouchListener { _, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
// Log.d(TAG, "View touched, try to reset app timeout")
TimeoutHelper.checkTimeAndLockIfTimeoutOrResetTimeout(this)
}
}
false
}
it?.setOnFocusChangeListener { _, hasFocus ->
if (hasFocus) {
// Log.d(TAG, "View focused, try to reset app timeout")
TimeoutHelper.checkTimeAndLockIfTimeoutOrResetTimeout(this)
}
}
if (it is ViewGroup) {
for (i in 0..it.childCount) {
resetAppTimeoutWhenViewFocusedOrChanged(it.getChildAt(i))
}
}
}
}
override fun onBackPressed() {
if (mTimeoutEnable) {
TimeoutHelper.checkTimeAndLockIfTimeoutOrResetTimeout(this) {
@@ -204,7 +176,7 @@ abstract class LockingActivity : SpecialModeActivity() {
companion object {
private const val TAG = "LockingActivity"
const val TAG = "LockingActivity"
const val RESULT_EXIT_LOCK = 1450
@@ -215,3 +187,28 @@ abstract class LockingActivity : SpecialModeActivity() {
var LOCKING_ACTIVITY_UI_VISIBLE_DURING_LOCK: Boolean? = null
}
}
/**
* To reset the app timeout when a view is focused or changed
*/
@SuppressLint("ClickableViewAccessibility")
fun View.resetAppTimeoutWhenViewFocusedOrChanged(context: Context) {
setOnTouchListener { _, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
//Log.d(LockingActivity.TAG, "View touched, try to reset app timeout")
TimeoutHelper.checkTimeAndLockIfTimeoutOrResetTimeout(context)
}
}
false
}
setOnFocusChangeListener { _, _ ->
//Log.d(LockingActivity.TAG, "View focused, try to reset app timeout")
TimeoutHelper.checkTimeAndLockIfTimeoutOrResetTimeout(context)
}
if (this is ViewGroup) {
for (i in 0..childCount) {
getChildAt(i)?.resetAppTimeoutWhenViewFocusedOrChanged(context)
}
}
}

View File

@@ -19,27 +19,96 @@
*/
package com.kunzisoft.keepass.app.database
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.ServiceConnection
import android.net.Uri
import android.os.IBinder
import com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.utils.SingletonHolderParameter
import java.util.*
class CipherDatabaseAction(applicationContext: Context) {
class CipherDatabaseAction(context: Context) {
private val applicationContext = context.applicationContext
private val cipherDatabaseDao =
AppDatabase
.getDatabase(applicationContext)
.cipherDatabaseDao()
// Temp DAO to easily remove content if object no longer in memory
private var useTempDao = PreferencesUtil.isTempAdvancedUnlockEnable(applicationContext)
private val mIntentAdvancedUnlockService = Intent(applicationContext,
AdvancedUnlockNotificationService::class.java)
private var mBinder: AdvancedUnlockNotificationService.AdvancedUnlockBinder? = null
private var mServiceConnection: ServiceConnection? = null
private var mDatabaseListeners = LinkedList<DatabaseListener>()
fun reloadPreferences() {
useTempDao = PreferencesUtil.isTempAdvancedUnlockEnable(applicationContext)
}
@Synchronized
private fun attachService(performedAction: () -> Unit) {
// Check if a service is currently running else do nothing
if (mBinder != null) {
performedAction.invoke()
} else if (mServiceConnection == null) {
mServiceConnection = object : ServiceConnection {
override fun onServiceConnected(name: ComponentName?, serviceBinder: IBinder?) {
mBinder = (serviceBinder as AdvancedUnlockNotificationService.AdvancedUnlockBinder)
performedAction.invoke()
}
override fun onServiceDisconnected(name: ComponentName?) {
mBinder = null
mServiceConnection = null
mDatabaseListeners.forEach {
it.onDatabaseCleared()
}
}
}
applicationContext.bindService(mIntentAdvancedUnlockService,
mServiceConnection!!,
Context.BIND_ABOVE_CLIENT)
if (mBinder == null) {
applicationContext.startService(mIntentAdvancedUnlockService)
}
}
}
fun registerDatabaseListener(listener: DatabaseListener) {
mDatabaseListeners.add(listener)
}
fun unregisterDatabaseListener(listener: DatabaseListener) {
mDatabaseListeners.remove(listener)
}
interface DatabaseListener {
fun onDatabaseCleared()
}
fun getCipherDatabase(databaseUri: Uri,
cipherDatabaseResultListener: (CipherDatabaseEntity?) -> Unit) {
IOActionTask(
{
cipherDatabaseDao.getByDatabaseUri(databaseUri.toString())
},
{
cipherDatabaseResultListener.invoke(it)
}
).execute()
if (useTempDao) {
attachService {
cipherDatabaseResultListener.invoke(mBinder?.getCipherDatabase(databaseUri))
}
} else {
IOActionTask(
{
cipherDatabaseDao.getByDatabaseUri(databaseUri.toString())
},
{
cipherDatabaseResultListener.invoke(it)
}
).execute()
}
}
fun containsCipherDatabase(databaseUri: Uri,
@@ -51,36 +120,52 @@ class CipherDatabaseAction(applicationContext: Context) {
fun addOrUpdateCipherDatabase(cipherDatabaseEntity: CipherDatabaseEntity,
cipherDatabaseResultListener: (() -> Unit)? = null) {
IOActionTask(
{
val cipherDatabaseRetrieve = cipherDatabaseDao.getByDatabaseUri(cipherDatabaseEntity.databaseUri)
// Update values if element not yet in the database
if (cipherDatabaseRetrieve == null) {
cipherDatabaseDao.add(cipherDatabaseEntity)
} else {
cipherDatabaseDao.update(cipherDatabaseEntity)
if (useTempDao) {
attachService {
mBinder?.addOrUpdateCipherDatabase(cipherDatabaseEntity)
cipherDatabaseResultListener?.invoke()
}
} else {
IOActionTask(
{
val cipherDatabaseRetrieve = cipherDatabaseDao.getByDatabaseUri(cipherDatabaseEntity.databaseUri)
// Update values if element not yet in the database
if (cipherDatabaseRetrieve == null) {
cipherDatabaseDao.add(cipherDatabaseEntity)
} else {
cipherDatabaseDao.update(cipherDatabaseEntity)
}
},
{
cipherDatabaseResultListener?.invoke()
}
},
{
cipherDatabaseResultListener?.invoke()
}
).execute()
).execute()
}
}
fun deleteByDatabaseUri(databaseUri: Uri,
cipherDatabaseResultListener: (() -> Unit)? = null) {
IOActionTask(
{
cipherDatabaseDao.deleteByDatabaseUri(databaseUri.toString())
},
{
cipherDatabaseResultListener?.invoke()
}
).execute()
if (useTempDao) {
attachService {
mBinder?.deleteByDatabaseUri(databaseUri)
cipherDatabaseResultListener?.invoke()
}
} else {
IOActionTask(
{
cipherDatabaseDao.deleteByDatabaseUri(databaseUri.toString())
},
{
cipherDatabaseResultListener?.invoke()
}
).execute()
}
}
fun deleteAll() {
attachService {
mBinder?.deleteAll()
}
IOActionTask(
{
cipherDatabaseDao.deleteAll()

View File

@@ -43,6 +43,11 @@ data class CipherDatabaseEntity(
parcel.readString()!!,
parcel.readString()!!)
fun replaceContent(copy: CipherDatabaseEntity) {
this.encryptedValue = copy.encryptedValue
this.specParameters = copy.specParameters
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(databaseUri)
parcel.writeString(encryptedValue)

View File

@@ -0,0 +1,10 @@
package com.kunzisoft.keepass.biometric
import androidx.annotation.StringRes
import javax.crypto.Cipher
data class AdvancedUnlockCryptoPrompt(var cipher: Cipher,
@StringRes var promptTitleId: Int,
@StringRes var promptDescriptionId: Int? = null,
var isDeviceCredentialOperation: Boolean,
var isBiometricOperation: Boolean)

View File

@@ -0,0 +1,628 @@
/*
* Copyright 2020 Jeremy Jamet / Kunzisoft.
*
* This file is part of KeePassDX.
*
* KeePassDX is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* KeePassDX is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.kunzisoft.keepass.biometric
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.util.Log
import android.view.*
import androidx.annotation.RequiresApi
import androidx.biometric.BiometricManager
import androidx.biometric.BiometricPrompt
import com.getkeepsafe.taptargetview.TapTargetView
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.stylish.StylishFragment
import com.kunzisoft.keepass.app.database.CipherDatabaseAction
import com.kunzisoft.keepass.database.exception.IODatabaseException
import com.kunzisoft.keepass.education.PasswordActivityEducation
import com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.view.AdvancedUnlockInfoView
class AdvancedUnlockFragment: StylishFragment(), AdvancedUnlockManager.AdvancedUnlockCallback {
private var mBuilderListener: BuilderListener? = null
private var mAdvancedUnlockEnabled = false
private var mAutoOpenPromptEnabled = false
private var advancedUnlockManager: AdvancedUnlockManager? = null
private var biometricMode: Mode = Mode.BIOMETRIC_UNAVAILABLE
private var mAdvancedUnlockInfoView: AdvancedUnlockInfoView? = null
var databaseFileUri: Uri? = null
private set
/**
* Manage setting to auto open biometric prompt
*/
private var mAutoOpenPrompt: Boolean = false
get() {
return field && mAutoOpenPromptEnabled
}
// Variable to check if the prompt can be open (if the right activity is currently shown)
// checkBiometricAvailability() allows open biometric prompt and onDestroy() removes the authorization
private var allowOpenBiometricPrompt = false
private lateinit var cipherDatabaseAction : CipherDatabaseAction
private var cipherDatabaseListener: CipherDatabaseAction.DatabaseListener? = null
// Only to fix multiple fingerprint menu #332
private var mAllowAdvancedUnlockMenu = false
private var mAddBiometricMenuInProgress = false
// Only keep connection when we request a device credential activity
private var keepConnection = false
override fun onAttach(context: Context) {
super.onAttach(context)
mAdvancedUnlockEnabled = PreferencesUtil.isAdvancedUnlockEnable(context)
mAutoOpenPromptEnabled = PreferencesUtil.isAdvancedUnlockPromptAutoOpenEnable(context)
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mBuilderListener = context as BuilderListener
}
} catch (e: ClassCastException) {
throw ClassCastException(context.toString()
+ " must implement " + BuilderListener::class.java.name)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
retainInstance = true
setHasOptionsMenu(true)
cipherDatabaseAction = CipherDatabaseAction.getInstance(requireContext().applicationContext)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
val rootView = inflater.cloneInContext(contextThemed)
.inflate(R.layout.fragment_advanced_unlock, container, false)
mAdvancedUnlockInfoView = rootView.findViewById(R.id.advanced_unlock_view)
return rootView
}
private data class ActivityResult(var requestCode: Int, var resultCode: Int, var data: Intent?)
private var activityResult: ActivityResult? = null
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
// To wait resume
if (keepConnection) {
activityResult = ActivityResult(requestCode, resultCode, data)
}
keepConnection = false
}
override fun onResume() {
super.onResume()
mAdvancedUnlockEnabled = PreferencesUtil.isAdvancedUnlockEnable(requireContext())
mAutoOpenPromptEnabled = PreferencesUtil.isAdvancedUnlockPromptAutoOpenEnable(requireContext())
keepConnection = false
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// biometric menu
if (mAllowAdvancedUnlockMenu)
inflater.inflate(R.menu.advanced_unlock, menu)
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_keystore_remove_key -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
deleteEncryptedDatabaseKey()
}
}
return super.onOptionsItemSelected(item)
}
fun loadDatabase(databaseUri: Uri?, autoOpenPrompt: Boolean) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// To get device credential unlock result, only if same database uri
if (databaseUri != null
&& mAdvancedUnlockEnabled) {
activityResult?.let {
if (databaseUri == databaseFileUri) {
advancedUnlockManager?.onActivityResult(it.requestCode, it.resultCode)
} else {
disconnect()
}
} ?: run {
connect(databaseUri)
this.mAutoOpenPrompt = autoOpenPrompt
}
} else {
disconnect()
}
activityResult = null
}
}
/**
* Check unlock availability and change the current mode depending of device's state
*/
fun checkUnlockAvailability() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
allowOpenBiometricPrompt = true
if (PreferencesUtil.isBiometricUnlockEnable(requireContext())) {
mAdvancedUnlockInfoView?.setIconResource(R.drawable.fingerprint)
// biometric not supported (by API level or hardware) so keep option hidden
// or manually disable
val biometricCanAuthenticate = AdvancedUnlockManager.canAuthenticate(requireContext())
if (!PreferencesUtil.isAdvancedUnlockEnable(requireContext())
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE) {
toggleMode(Mode.BIOMETRIC_UNAVAILABLE)
} else if (biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED) {
toggleMode(Mode.BIOMETRIC_SECURITY_UPDATE_REQUIRED)
} else {
// biometric is available but not configured, show icon but in disabled state with some information
if (biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED) {
toggleMode(Mode.DEVICE_CREDENTIAL_OR_BIOMETRIC_NOT_CONFIGURED)
} else {
selectMode()
}
}
} else if (PreferencesUtil.isDeviceCredentialUnlockEnable(requireContext())) {
mAdvancedUnlockInfoView?.setIconResource(R.drawable.bolt)
if (AdvancedUnlockManager.isDeviceSecure(requireContext())) {
selectMode()
} else {
toggleMode(Mode.DEVICE_CREDENTIAL_OR_BIOMETRIC_NOT_CONFIGURED)
}
}
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun selectMode() {
// Check if fingerprint well init (be called the first time the fingerprint is configured
// and the activity still active)
if (advancedUnlockManager?.isKeyManagerInitialized != true) {
advancedUnlockManager = AdvancedUnlockManager { requireActivity() }
// callback for fingerprint findings
advancedUnlockManager?.advancedUnlockCallback = this
}
// Recheck to change the mode
if (advancedUnlockManager?.isKeyManagerInitialized != true) {
toggleMode(Mode.KEY_MANAGER_UNAVAILABLE)
} else {
if (mBuilderListener?.conditionToStoreCredential() == true) {
// listen for encryption
toggleMode(Mode.STORE_CREDENTIAL)
} else {
databaseFileUri?.let { databaseUri ->
cipherDatabaseAction.containsCipherDatabase(databaseUri) { containsCipher ->
// biometric available but no stored password found yet for this DB so show info don't listen
toggleMode(if (containsCipher) {
// listen for decryption
Mode.EXTRACT_CREDENTIAL
} else {
// wait for typing
Mode.WAIT_CREDENTIAL
})
}
}
}
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun toggleMode(newBiometricMode: Mode) {
if (newBiometricMode != biometricMode) {
biometricMode = newBiometricMode
initAdvancedUnlockMode()
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun initNotAvailable() {
showViews(false)
mAdvancedUnlockInfoView?.setIconViewClickListener(false, null)
}
@RequiresApi(Build.VERSION_CODES.M)
private fun openBiometricSetting() {
mAdvancedUnlockInfoView?.setIconViewClickListener(false) {
// ACTION_SECURITY_SETTINGS does not contain fingerprint enrollment on some devices...
requireContext().startActivity(Intent(Settings.ACTION_SETTINGS))
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun initSecurityUpdateRequired() {
showViews(true)
setAdvancedUnlockedTitleView(R.string.biometric_security_update_required)
openBiometricSetting()
}
@RequiresApi(Build.VERSION_CODES.M)
private fun initNotConfigured() {
showViews(true)
setAdvancedUnlockedTitleView(R.string.configure_biometric)
setAdvancedUnlockedMessageView("")
openBiometricSetting()
}
@RequiresApi(Build.VERSION_CODES.M)
private fun initKeyManagerNotAvailable() {
showViews(true)
setAdvancedUnlockedTitleView(R.string.keystore_not_accessible)
openBiometricSetting()
}
@RequiresApi(Build.VERSION_CODES.M)
private fun initWaitData() {
showViews(true)
setAdvancedUnlockedTitleView(R.string.no_credentials_stored)
setAdvancedUnlockedMessageView("")
mAdvancedUnlockInfoView?.setIconViewClickListener(false) {
onAuthenticationError(BiometricPrompt.ERROR_UNABLE_TO_PROCESS,
requireContext().getString(R.string.credential_before_click_advanced_unlock_button))
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun openAdvancedUnlockPrompt(cryptoPrompt: AdvancedUnlockCryptoPrompt) {
activity?.runOnUiThread {
if (allowOpenBiometricPrompt) {
if (cryptoPrompt.isDeviceCredentialOperation)
keepConnection = true
try {
advancedUnlockManager?.openAdvancedUnlockPrompt(cryptoPrompt)
} catch (e: Exception) {
Log.e(TAG, "Unable to open advanced unlock prompt", e)
setAdvancedUnlockedTitleView(R.string.advanced_unlock_prompt_not_initialized)
}
}
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun initEncryptData() {
showViews(true)
setAdvancedUnlockedTitleView(R.string.open_advanced_unlock_prompt_store_credential)
setAdvancedUnlockedMessageView("")
advancedUnlockManager?.initEncryptData { cryptoPrompt ->
// Set listener to open the biometric dialog and save credential
mAdvancedUnlockInfoView?.setIconViewClickListener { _ ->
openAdvancedUnlockPrompt(cryptoPrompt)
}
} ?: throw Exception("AdvancedUnlockManager not initialized")
}
@RequiresApi(Build.VERSION_CODES.M)
private fun initDecryptData() {
showViews(true)
setAdvancedUnlockedTitleView(R.string.open_advanced_unlock_prompt_unlock_database)
setAdvancedUnlockedMessageView("")
advancedUnlockManager?.let { unlockHelper ->
databaseFileUri?.let { databaseUri ->
cipherDatabaseAction.getCipherDatabase(databaseUri) { cipherDatabase ->
cipherDatabase?.let {
unlockHelper.initDecryptData(it.specParameters) { cryptoPrompt ->
// Set listener to open the biometric dialog and check credential
mAdvancedUnlockInfoView?.setIconViewClickListener { _ ->
openAdvancedUnlockPrompt(cryptoPrompt)
}
// Auto open the biometric prompt
if (mAutoOpenPrompt) {
mAutoOpenPrompt = false
openAdvancedUnlockPrompt(cryptoPrompt)
}
}
} ?: deleteEncryptedDatabaseKey()
}
} ?: throw IODatabaseException()
} ?: throw Exception("AdvancedUnlockManager not initialized")
}
@Synchronized
fun initAdvancedUnlockMode() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mAllowAdvancedUnlockMenu = false
try {
when (biometricMode) {
Mode.BIOMETRIC_UNAVAILABLE -> initNotAvailable()
Mode.BIOMETRIC_SECURITY_UPDATE_REQUIRED -> initSecurityUpdateRequired()
Mode.DEVICE_CREDENTIAL_OR_BIOMETRIC_NOT_CONFIGURED -> initNotConfigured()
Mode.KEY_MANAGER_UNAVAILABLE -> initKeyManagerNotAvailable()
Mode.WAIT_CREDENTIAL -> initWaitData()
Mode.STORE_CREDENTIAL -> initEncryptData()
Mode.EXTRACT_CREDENTIAL -> initDecryptData()
}
} catch (e: Exception) {
onGenericException(e)
}
invalidateBiometricMenu()
}
}
private fun invalidateBiometricMenu() {
// Show fingerprint key deletion
if (!mAddBiometricMenuInProgress) {
mAddBiometricMenuInProgress = true
databaseFileUri?.let { databaseUri ->
cipherDatabaseAction.containsCipherDatabase(databaseUri) { containsCipher ->
mAllowAdvancedUnlockMenu = containsCipher
&& (biometricMode != Mode.BIOMETRIC_UNAVAILABLE
&& biometricMode != Mode.KEY_MANAGER_UNAVAILABLE)
mAddBiometricMenuInProgress = false
activity?.invalidateOptionsMenu()
}
}
}
}
@RequiresApi(Build.VERSION_CODES.M)
fun connect(databaseUri: Uri) {
showViews(true)
this.databaseFileUri = databaseUri
cipherDatabaseListener = object: CipherDatabaseAction.DatabaseListener {
override fun onDatabaseCleared() {
deleteEncryptedDatabaseKey()
}
}
cipherDatabaseAction.apply {
reloadPreferences()
cipherDatabaseListener?.let {
registerDatabaseListener(it)
}
}
checkUnlockAvailability()
}
@RequiresApi(Build.VERSION_CODES.M)
fun disconnect(hideViews: Boolean = true,
closePrompt: Boolean = true) {
this.databaseFileUri = null
// Close the biometric prompt
allowOpenBiometricPrompt = false
if (closePrompt)
advancedUnlockManager?.closeBiometricPrompt()
cipherDatabaseListener?.let {
cipherDatabaseAction.unregisterDatabaseListener(it)
}
biometricMode = Mode.BIOMETRIC_UNAVAILABLE
if (hideViews) {
showViews(false)
}
}
@RequiresApi(Build.VERSION_CODES.M)
fun deleteEncryptedDatabaseKey() {
allowOpenBiometricPrompt = false
mAdvancedUnlockInfoView?.setIconViewClickListener(false, null)
advancedUnlockManager?.closeBiometricPrompt()
databaseFileUri?.let { databaseUri ->
cipherDatabaseAction.deleteByDatabaseUri(databaseUri) {
checkUnlockAvailability()
}
}
}
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
activity?.runOnUiThread {
Log.e(TAG, "Biometric authentication error. Code : $errorCode Error : $errString")
setAdvancedUnlockedMessageView(errString.toString())
}
}
@RequiresApi(Build.VERSION_CODES.M)
override fun onAuthenticationFailed() {
activity?.runOnUiThread {
Log.e(TAG, "Biometric authentication failed, biometric not recognized")
setAdvancedUnlockedMessageView(R.string.advanced_unlock_not_recognized)
}
}
@RequiresApi(Build.VERSION_CODES.M)
override fun onAuthenticationSucceeded() {
activity?.runOnUiThread {
when (biometricMode) {
Mode.BIOMETRIC_UNAVAILABLE -> {
}
Mode.BIOMETRIC_SECURITY_UPDATE_REQUIRED -> {
}
Mode.DEVICE_CREDENTIAL_OR_BIOMETRIC_NOT_CONFIGURED -> {
}
Mode.KEY_MANAGER_UNAVAILABLE -> {
}
Mode.WAIT_CREDENTIAL -> {
}
Mode.STORE_CREDENTIAL -> {
// newly store the entered password in encrypted way
mBuilderListener?.retrieveCredentialForEncryption()?.let { credential ->
advancedUnlockManager?.encryptData(credential)
}
AdvancedUnlockNotificationService.startServiceForTimeout(requireContext())
}
Mode.EXTRACT_CREDENTIAL -> {
// retrieve the encrypted value from preferences
databaseFileUri?.let { databaseUri ->
cipherDatabaseAction.getCipherDatabase(databaseUri) { cipherDatabase ->
cipherDatabase?.encryptedValue?.let { value ->
advancedUnlockManager?.decryptData(value)
} ?: deleteEncryptedDatabaseKey()
}
} ?: run {
onAuthenticationError(-1, getString(R.string.error_database_uri_null))
}
}
}
}
}
override fun handleEncryptedResult(encryptedValue: String, ivSpec: String) {
databaseFileUri?.let { databaseUri ->
mBuilderListener?.onCredentialEncrypted(databaseUri, encryptedValue, ivSpec)
}
}
override fun handleDecryptedResult(decryptedValue: String) {
// Load database directly with password retrieve
databaseFileUri?.let {
mBuilderListener?.onCredentialDecrypted(it, decryptedValue)
}
}
@RequiresApi(Build.VERSION_CODES.M)
override fun onInvalidKeyException(e: Exception) {
setAdvancedUnlockedMessageView(R.string.advanced_unlock_invalid_key)
}
override fun onGenericException(e: Exception) {
val errorMessage = e.cause?.localizedMessage ?: e.localizedMessage ?: ""
setAdvancedUnlockedMessageView(errorMessage)
}
private fun showViews(show: Boolean) {
activity?.runOnUiThread {
mAdvancedUnlockInfoView?.visibility = if (show)
View.VISIBLE
else {
View.GONE
}
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun setAdvancedUnlockedTitleView(textId: Int) {
activity?.runOnUiThread {
mAdvancedUnlockInfoView?.setTitle(textId)
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun setAdvancedUnlockedMessageView(textId: Int) {
activity?.runOnUiThread {
mAdvancedUnlockInfoView?.setMessage(textId)
}
}
private fun setAdvancedUnlockedMessageView(text: CharSequence) {
activity?.runOnUiThread {
mAdvancedUnlockInfoView?.message = text
}
}
fun performEducation(passwordActivityEducation: PasswordActivityEducation,
readOnlyEducationPerformed: Boolean,
onEducationViewClick: ((TapTargetView?) -> Unit)? = null,
onOuterViewClick: ((TapTargetView?) -> Unit)? = null) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& !readOnlyEducationPerformed) {
val biometricCanAuthenticate = AdvancedUnlockManager.canAuthenticate(requireContext())
PreferencesUtil.isAdvancedUnlockEnable(requireContext())
&& (biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS)
&& mAdvancedUnlockInfoView != null && mAdvancedUnlockInfoView?.visibility == View.VISIBLE
&& mAdvancedUnlockInfoView?.unlockIconImageView != null
&& passwordActivityEducation.checkAndPerformedBiometricEducation(mAdvancedUnlockInfoView!!.unlockIconImageView!!,
onEducationViewClick,
onOuterViewClick)
}
} catch (ignored: Exception) {}
}
enum class Mode {
BIOMETRIC_UNAVAILABLE,
BIOMETRIC_SECURITY_UPDATE_REQUIRED,
DEVICE_CREDENTIAL_OR_BIOMETRIC_NOT_CONFIGURED,
KEY_MANAGER_UNAVAILABLE,
WAIT_CREDENTIAL,
STORE_CREDENTIAL,
EXTRACT_CREDENTIAL
}
interface BuilderListener {
fun retrieveCredentialForEncryption(): String
fun conditionToStoreCredential(): Boolean
fun onCredentialEncrypted(databaseUri: Uri, encryptedCredential: String, ivSpec: String)
fun onCredentialDecrypted(databaseUri: Uri, decryptedCredential: String)
}
override fun onPause() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!keepConnection) {
// If close prompt, bug "user not authenticated in Android R"
disconnect(false)
advancedUnlockManager = null
}
}
super.onPause()
}
override fun onDestroyView() {
mAdvancedUnlockInfoView = null
super.onDestroyView()
}
override fun onDestroy() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
disconnect()
advancedUnlockManager = null
mBuilderListener = null
}
super.onDestroy()
}
override fun onDetach() {
mBuilderListener = null
super.onDetach()
}
companion object {
private val TAG = AdvancedUnlockFragment::class.java.name
}
}

View File

@@ -0,0 +1,465 @@
/*
* Copyright 2020 Jeremy Jamet / Kunzisoft.
*
* This file is part of KeePassDX.
*
* KeePassDX is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* KeePassDX is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.kunzisoft.keepass.biometric
import android.app.Activity
import android.app.KeyguardManager
import android.content.Context
import android.os.Build
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyPermanentlyInvalidatedException
import android.security.keystore.KeyProperties
import android.util.Base64
import android.util.Log
import androidx.annotation.RequiresApi
import androidx.biometric.BiometricManager
import androidx.biometric.BiometricManager.Authenticators.*
import androidx.biometric.BiometricPrompt
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentActivity
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.settings.PreferencesUtil
import java.security.KeyStore
import java.security.UnrecoverableKeyException
import java.util.concurrent.Executors
import javax.crypto.BadPaddingException
import javax.crypto.Cipher
import javax.crypto.KeyGenerator
import javax.crypto.SecretKey
import javax.crypto.spec.IvParameterSpec
@RequiresApi(api = Build.VERSION_CODES.M)
class AdvancedUnlockManager(private var retrieveContext: () -> FragmentActivity) {
private var keyStore: KeyStore? = null
private var keyGenerator: KeyGenerator? = null
private var cipher: Cipher? = null
private var biometricPrompt: BiometricPrompt? = null
private var authenticationCallback = object: BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
advancedUnlockCallback?.onAuthenticationSucceeded()
}
override fun onAuthenticationFailed() {
advancedUnlockCallback?.onAuthenticationFailed()
}
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
advancedUnlockCallback?.onAuthenticationError(errorCode, errString)
}
}
var advancedUnlockCallback: AdvancedUnlockCallback? = null
private var isKeyManagerInit = false
private val biometricUnlockEnable = PreferencesUtil.isBiometricUnlockEnable(retrieveContext())
private val deviceCredentialUnlockEnable = PreferencesUtil.isDeviceCredentialUnlockEnable(retrieveContext())
val isKeyManagerInitialized: Boolean
get() {
if (!isKeyManagerInit) {
advancedUnlockCallback?.onGenericException(Exception("Biometric not initialized"))
}
return isKeyManagerInit
}
private fun isBiometricOperation(): Boolean {
return biometricUnlockEnable || isDeviceCredentialBiometricOperation()
}
// Since Android 30, device credential is also a biometric operation
private fun isDeviceCredentialOperation(): Boolean {
return Build.VERSION.SDK_INT < Build.VERSION_CODES.R
&& deviceCredentialUnlockEnable
}
private fun isDeviceCredentialBiometricOperation(): Boolean {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
&& deviceCredentialUnlockEnable
}
init {
if (isDeviceSecure(retrieveContext())
&& (biometricUnlockEnable || deviceCredentialUnlockEnable)) {
try {
this.keyStore = KeyStore.getInstance(ADVANCED_UNLOCK_KEYSTORE)
this.keyGenerator = KeyGenerator.getInstance(ADVANCED_UNLOCK_KEY_ALGORITHM, ADVANCED_UNLOCK_KEYSTORE)
this.cipher = Cipher.getInstance(
ADVANCED_UNLOCK_KEY_ALGORITHM + "/"
+ ADVANCED_UNLOCK_BLOCKS_MODES + "/"
+ ADVANCED_UNLOCK_ENCRYPTION_PADDING)
isKeyManagerInit = (keyStore != null
&& keyGenerator != null
&& cipher != null)
} catch (e: Exception) {
Log.e(TAG, "Unable to initialize the keystore", e)
isKeyManagerInit = false
advancedUnlockCallback?.onGenericException(e)
}
} else {
// really not much to do when no fingerprint support found
isKeyManagerInit = false
}
}
private fun getSecretKey(): SecretKey? {
if (!isKeyManagerInitialized) {
return null
}
try {
// Create new key if needed
keyStore?.let { keyStore ->
keyStore.load(null)
try {
if (!keyStore.containsAlias(ADVANCED_UNLOCK_KEYSTORE_KEY)) {
// Set the alias of the entry in Android KeyStore where the key will appear
// and the constrains (purposes) in the constructor of the Builder
keyGenerator?.init(
KeyGenParameterSpec.Builder(
ADVANCED_UNLOCK_KEYSTORE_KEY,
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
// Require the user to authenticate with a fingerprint to authorize every use
// of the key, don't use it for device credential because it's the user authentication
.apply {
if (biometricUnlockEnable) {
setUserAuthenticationRequired(true)
}
}
.build())
keyGenerator?.generateKey()
}
} catch (e: Exception) {
Log.e(TAG, "Unable to create a key in keystore", e)
advancedUnlockCallback?.onGenericException(e)
}
return keyStore.getKey(ADVANCED_UNLOCK_KEYSTORE_KEY, null) as SecretKey?
}
} catch (e: Exception) {
Log.e(TAG, "Unable to retrieve the key in keystore", e)
advancedUnlockCallback?.onGenericException(e)
}
return null
}
fun initEncryptData(actionIfCypherInit
: (cryptoPrompt: AdvancedUnlockCryptoPrompt) -> Unit) {
if (!isKeyManagerInitialized) {
return
}
try {
getSecretKey()?.let { secretKey ->
cipher?.let { cipher ->
cipher.init(Cipher.ENCRYPT_MODE, secretKey)
actionIfCypherInit.invoke(
AdvancedUnlockCryptoPrompt(
cipher,
R.string.advanced_unlock_prompt_store_credential_title,
R.string.advanced_unlock_prompt_store_credential_message,
isDeviceCredentialOperation(), isBiometricOperation())
)
}
}
} catch (unrecoverableKeyException: UnrecoverableKeyException) {
Log.e(TAG, "Unable to initialize encrypt data", unrecoverableKeyException)
advancedUnlockCallback?.onInvalidKeyException(unrecoverableKeyException)
} catch (invalidKeyException: KeyPermanentlyInvalidatedException) {
Log.e(TAG, "Unable to initialize encrypt data", invalidKeyException)
advancedUnlockCallback?.onInvalidKeyException(invalidKeyException)
} catch (e: Exception) {
Log.e(TAG, "Unable to initialize encrypt data", e)
advancedUnlockCallback?.onGenericException(e)
}
}
fun encryptData(value: String) {
if (!isKeyManagerInitialized) {
return
}
try {
val encrypted = cipher?.doFinal(value.toByteArray())
val encryptedBase64 = Base64.encodeToString(encrypted, Base64.NO_WRAP)
// passes updated iv spec on to callback so this can be stored for decryption
cipher?.parameters?.getParameterSpec(IvParameterSpec::class.java)?.let{ spec ->
val ivSpecValue = Base64.encodeToString(spec.iv, Base64.NO_WRAP)
advancedUnlockCallback?.handleEncryptedResult(encryptedBase64, ivSpecValue)
}
} catch (e: Exception) {
Log.e(TAG, "Unable to encrypt data", e)
advancedUnlockCallback?.onGenericException(e)
}
}
fun initDecryptData(ivSpecValue: String, actionIfCypherInit
: (cryptoPrompt: AdvancedUnlockCryptoPrompt) -> Unit) {
if (!isKeyManagerInitialized) {
return
}
try {
// important to restore spec here that was used for decryption
val iv = Base64.decode(ivSpecValue, Base64.NO_WRAP)
val spec = IvParameterSpec(iv)
getSecretKey()?.let { secretKey ->
cipher?.let { cipher ->
cipher.init(Cipher.DECRYPT_MODE, secretKey, spec)
actionIfCypherInit.invoke(
AdvancedUnlockCryptoPrompt(
cipher,
R.string.advanced_unlock_prompt_extract_credential_title,
null,
isDeviceCredentialOperation(), isBiometricOperation())
)
}
}
} catch (unrecoverableKeyException: UnrecoverableKeyException) {
Log.e(TAG, "Unable to initialize decrypt data", unrecoverableKeyException)
deleteKeystoreKey()
} catch (invalidKeyException: KeyPermanentlyInvalidatedException) {
Log.e(TAG, "Unable to initialize decrypt data", invalidKeyException)
advancedUnlockCallback?.onInvalidKeyException(invalidKeyException)
} catch (e: Exception) {
Log.e(TAG, "Unable to initialize decrypt data", e)
advancedUnlockCallback?.onGenericException(e)
}
}
fun decryptData(encryptedValue: String) {
if (!isKeyManagerInitialized) {
return
}
try {
// actual decryption here
val encrypted = Base64.decode(encryptedValue, Base64.NO_WRAP)
cipher?.doFinal(encrypted)?.let { decrypted ->
advancedUnlockCallback?.handleDecryptedResult(String(decrypted))
}
} catch (badPaddingException: BadPaddingException) {
Log.e(TAG, "Unable to decrypt data", badPaddingException)
advancedUnlockCallback?.onInvalidKeyException(badPaddingException)
} catch (e: Exception) {
Log.e(TAG, "Unable to decrypt data", e)
advancedUnlockCallback?.onGenericException(e)
}
}
fun deleteKeystoreKey() {
try {
keyStore?.load(null)
keyStore?.deleteEntry(ADVANCED_UNLOCK_KEYSTORE_KEY)
} catch (e: Exception) {
Log.e(TAG, "Unable to delete entry key in keystore", e)
advancedUnlockCallback?.onGenericException(e)
}
}
@Suppress("DEPRECATION")
@Synchronized
fun openAdvancedUnlockPrompt(cryptoPrompt: AdvancedUnlockCryptoPrompt) {
// Init advanced unlock prompt
if (biometricPrompt == null) {
biometricPrompt = BiometricPrompt(retrieveContext(),
Executors.newSingleThreadExecutor(),
authenticationCallback)
}
val promptTitle = retrieveContext().getString(cryptoPrompt.promptTitleId)
val promptDescription = cryptoPrompt.promptDescriptionId?.let { descriptionId ->
retrieveContext().getString(descriptionId)
} ?: ""
if (cryptoPrompt.isBiometricOperation) {
val promptInfoExtractCredential = BiometricPrompt.PromptInfo.Builder().apply {
setTitle(promptTitle)
if (promptDescription.isNotEmpty())
setDescription(promptDescription)
setConfirmationRequired(false)
if (isDeviceCredentialBiometricOperation()) {
setAllowedAuthenticators(DEVICE_CREDENTIAL)
} else {
setNegativeButtonText(retrieveContext().getString(android.R.string.cancel))
}
}.build()
biometricPrompt?.authenticate(
promptInfoExtractCredential,
BiometricPrompt.CryptoObject(cryptoPrompt.cipher))
}
else if (cryptoPrompt.isDeviceCredentialOperation) {
val keyGuardManager = ContextCompat.getSystemService(retrieveContext(), KeyguardManager::class.java)
retrieveContext().startActivityForResult(
keyGuardManager?.createConfirmDeviceCredentialIntent(promptTitle, promptDescription),
REQUEST_DEVICE_CREDENTIAL)
}
}
@Synchronized
fun onActivityResult(requestCode: Int, resultCode: Int) {
if (requestCode == REQUEST_DEVICE_CREDENTIAL) {
if (resultCode == Activity.RESULT_OK) {
advancedUnlockCallback?.onAuthenticationSucceeded()
} else {
advancedUnlockCallback?.onAuthenticationFailed()
}
}
}
fun closeBiometricPrompt() {
biometricPrompt?.cancelAuthentication()
}
interface AdvancedUnlockErrorCallback {
fun onInvalidKeyException(e: Exception)
fun onGenericException(e: Exception)
}
interface AdvancedUnlockCallback : AdvancedUnlockErrorCallback {
fun onAuthenticationSucceeded()
fun onAuthenticationFailed()
fun onAuthenticationError(errorCode: Int, errString: CharSequence)
fun handleEncryptedResult(encryptedValue: String, ivSpec: String)
fun handleDecryptedResult(decryptedValue: String)
}
companion object {
private val TAG = AdvancedUnlockManager::class.java.name
private const val ADVANCED_UNLOCK_KEYSTORE = "AndroidKeyStore"
private const val ADVANCED_UNLOCK_KEYSTORE_KEY = "com.kunzisoft.keepass.biometric.key"
private const val ADVANCED_UNLOCK_KEY_ALGORITHM = KeyProperties.KEY_ALGORITHM_AES
private const val ADVANCED_UNLOCK_BLOCKS_MODES = KeyProperties.BLOCK_MODE_CBC
private const val ADVANCED_UNLOCK_ENCRYPTION_PADDING = KeyProperties.ENCRYPTION_PADDING_PKCS7
private const val REQUEST_DEVICE_CREDENTIAL = 556
@RequiresApi(api = Build.VERSION_CODES.M)
fun canAuthenticate(context: Context): Int {
return try {
BiometricManager.from(context).canAuthenticate(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
&& PreferencesUtil.isDeviceCredentialUnlockEnable(context)) {
BIOMETRIC_STRONG or DEVICE_CREDENTIAL
} else {
BIOMETRIC_STRONG
}
)
} catch (e: Exception) {
Log.e(TAG, "Unable to authenticate with strong biometric.", e)
try {
BiometricManager.from(context).canAuthenticate(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
&& PreferencesUtil.isDeviceCredentialUnlockEnable(context)) {
BIOMETRIC_WEAK or DEVICE_CREDENTIAL
} else {
BIOMETRIC_WEAK
}
)
} catch (e: Exception) {
Log.e(TAG, "Unable to authenticate with weak biometric.", e)
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE
}
}
}
@RequiresApi(api = Build.VERSION_CODES.M)
fun isDeviceSecure(context: Context): Boolean {
val keyguardManager = ContextCompat.getSystemService(context, KeyguardManager::class.java)
return keyguardManager?.isDeviceSecure ?: false
}
@RequiresApi(api = Build.VERSION_CODES.M)
fun biometricUnlockSupported(context: Context): Boolean {
val biometricCanAuthenticate = try {
BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG)
} catch (e: Exception) {
Log.e(TAG, "Unable to authenticate with strong biometric.", e)
try {
BiometricManager.from(context).canAuthenticate(BIOMETRIC_WEAK)
} catch (e: Exception) {
Log.e(TAG, "Unable to authenticate with weak biometric.", e)
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE
}
}
return (biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED
)
}
@RequiresApi(api = Build.VERSION_CODES.M)
fun deviceCredentialUnlockSupported(context: Context): Boolean {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
val biometricCanAuthenticate = BiometricManager.from(context).canAuthenticate(DEVICE_CREDENTIAL)
return (biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED
)
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
ContextCompat.getSystemService(context, KeyguardManager::class.java)?.apply {
return isDeviceSecure
}
}
return false
}
/**
* Remove entry key in keystore
*/
@RequiresApi(api = Build.VERSION_CODES.M)
fun deleteEntryKeyInKeystoreForBiometric(fragmentActivity: FragmentActivity,
advancedCallback: AdvancedUnlockErrorCallback) {
AdvancedUnlockManager{ fragmentActivity }.apply {
advancedUnlockCallback = object : AdvancedUnlockCallback {
override fun onAuthenticationSucceeded() {}
override fun onAuthenticationFailed() {}
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {}
override fun handleEncryptedResult(encryptedValue: String, ivSpec: String) {}
override fun handleDecryptedResult(decryptedValue: String) {}
override fun onInvalidKeyException(e: Exception) {
advancedCallback.onInvalidKeyException(e)
}
override fun onGenericException(e: Exception) {
advancedCallback.onGenericException(e)
}
}
deleteKeystoreKey()
}
}
}
}

View File

@@ -1,404 +0,0 @@
/*
* Copyright 2019 Jeremy Jamet / Kunzisoft.
*
* This file is part of KeePassDX.
*
* KeePassDX is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* KeePassDX is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.kunzisoft.keepass.biometric
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.provider.Settings
import android.util.Log
import android.view.Menu
import android.view.MenuInflater
import android.view.View
import android.widget.CompoundButton
import android.widget.TextView
import androidx.annotation.RequiresApi
import androidx.biometric.BiometricManager
import androidx.biometric.BiometricPrompt
import androidx.fragment.app.FragmentActivity
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.app.database.CipherDatabaseAction
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.view.AdvancedUnlockInfoView
@RequiresApi(api = Build.VERSION_CODES.M)
class AdvancedUnlockedManager(var context: FragmentActivity,
var databaseFileUri: Uri,
private var advancedUnlockInfoView: AdvancedUnlockInfoView?,
private var checkboxPasswordView: CompoundButton?,
private var onCheckedPasswordChangeListener: CompoundButton.OnCheckedChangeListener? = null,
var passwordView: TextView?,
private var loadDatabaseAfterRegisterCredentials: (encryptedPassword: String?, ivSpec: String?) -> Unit,
private var loadDatabaseAfterRetrieveCredentials: (decryptedPassword: String?) -> Unit)
: BiometricUnlockDatabaseHelper.BiometricUnlockCallback {
private var biometricUnlockDatabaseHelper: BiometricUnlockDatabaseHelper? = null
private var biometricMode: Mode = Mode.BIOMETRIC_UNAVAILABLE
// Only to fix multiple fingerprint menu #332
private var mAllowAdvancedUnlockMenu = false
private var mAddBiometricMenuInProgress = false
/**
* Manage setting to auto open biometric prompt
*/
private var biometricPromptAutoOpenPreference = PreferencesUtil.isBiometricPromptAutoOpenEnable(context)
var isBiometricPromptAutoOpenEnable: Boolean = false
get() {
return field && biometricPromptAutoOpenPreference
}
// Variable to check if the prompt can be open (if the right activity is currently shown)
// checkBiometricAvailability() allows open biometric prompt and onDestroy() removes the authorization
private var allowOpenBiometricPrompt = false
private var cipherDatabaseAction = CipherDatabaseAction.getInstance(context.applicationContext)
init {
// Add a check listener to change fingerprint mode
checkboxPasswordView?.setOnCheckedChangeListener { compoundButton, checked ->
checkBiometricAvailability()
// Add old listener to enable the button, only be call here because of onCheckedChange bug
onCheckedPasswordChangeListener?.onCheckedChanged(compoundButton, checked)
}
}
/**
* Check biometric availability and change the current mode depending of device's state
*/
fun checkBiometricAvailability() {
// biometric not supported (by API level or hardware) so keep option hidden
// or manually disable
val biometricCanAuthenticate = BiometricUnlockDatabaseHelper.canAuthenticate(context)
allowOpenBiometricPrompt = true
if (!PreferencesUtil.isBiometricUnlockEnable(context)
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE) {
toggleMode(Mode.BIOMETRIC_UNAVAILABLE)
} else if (biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED){
toggleMode(Mode.BIOMETRIC_SECURITY_UPDATE_REQUIRED)
} else {
// biometric is available but not configured, show icon but in disabled state with some information
if (biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED) {
toggleMode(Mode.BIOMETRIC_NOT_CONFIGURED)
} else {
// Check if fingerprint well init (be called the first time the fingerprint is configured
// and the activity still active)
if (biometricUnlockDatabaseHelper?.isKeyManagerInitialized != true) {
biometricUnlockDatabaseHelper = BiometricUnlockDatabaseHelper(context)
// callback for fingerprint findings
biometricUnlockDatabaseHelper?.biometricUnlockCallback = this
biometricUnlockDatabaseHelper?.authenticationCallback = biometricAuthenticationCallback
}
// Recheck to change the mode
if (biometricUnlockDatabaseHelper?.isKeyManagerInitialized != true) {
toggleMode(Mode.KEY_MANAGER_UNAVAILABLE)
} else {
if (checkboxPasswordView?.isChecked == true) {
// listen for encryption
toggleMode(Mode.STORE_CREDENTIAL)
} else {
cipherDatabaseAction.containsCipherDatabase(databaseFileUri) { containsCipher ->
// biometric available but no stored password found yet for this DB so show info don't listen
toggleMode(if (containsCipher) {
// listen for decryption
Mode.EXTRACT_CREDENTIAL
} else {
// wait for typing
Mode.WAIT_CREDENTIAL
})
}
}
}
}
}
}
private fun toggleMode(newBiometricMode: Mode) {
if (newBiometricMode != biometricMode) {
biometricMode = newBiometricMode
initBiometricMode()
}
}
private val biometricAuthenticationCallback = object : BiometricPrompt.AuthenticationCallback () {
override fun onAuthenticationError(
errorCode: Int,
errString: CharSequence) {
context.runOnUiThread {
Log.e(TAG, "Biometric authentication error. Code : $errorCode Error : $errString")
setAdvancedUnlockedMessageView(errString.toString())
}
}
override fun onAuthenticationFailed() {
context.runOnUiThread {
Log.e(TAG, "Biometric authentication failed, biometric not recognized")
setAdvancedUnlockedMessageView(R.string.biometric_not_recognized)
}
}
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
context.runOnUiThread {
when (biometricMode) {
Mode.BIOMETRIC_UNAVAILABLE -> {
}
Mode.BIOMETRIC_SECURITY_UPDATE_REQUIRED -> {
}
Mode.BIOMETRIC_NOT_CONFIGURED -> {
}
Mode.KEY_MANAGER_UNAVAILABLE -> {
}
Mode.WAIT_CREDENTIAL -> {
}
Mode.STORE_CREDENTIAL -> {
// newly store the entered password in encrypted way
biometricUnlockDatabaseHelper?.encryptData(passwordView?.text.toString())
}
Mode.EXTRACT_CREDENTIAL -> {
// retrieve the encrypted value from preferences
cipherDatabaseAction.getCipherDatabase(databaseFileUri) {
it?.encryptedValue?.let { value ->
biometricUnlockDatabaseHelper?.decryptData(value)
}
}
}
}
}
}
}
private fun initNotAvailable() {
showFingerPrintViews(false)
advancedUnlockInfoView?.setIconViewClickListener(false, null)
}
private fun initSecurityUpdateRequired() {
showFingerPrintViews(true)
setAdvancedUnlockedTitleView(R.string.biometric_security_update_required)
advancedUnlockInfoView?.setIconViewClickListener(false) {
context.startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS))
}
}
private fun initNotConfigured() {
showFingerPrintViews(true)
setAdvancedUnlockedTitleView(R.string.configure_biometric)
setAdvancedUnlockedMessageView("")
advancedUnlockInfoView?.setIconViewClickListener(false) {
context.startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS))
}
}
private fun initKeyManagerNotAvailable() {
showFingerPrintViews(true)
setAdvancedUnlockedTitleView(R.string.keystore_not_accessible)
advancedUnlockInfoView?.setIconViewClickListener(false) {
context.startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS))
}
}
private fun initWaitData() {
showFingerPrintViews(true)
setAdvancedUnlockedTitleView(R.string.no_credentials_stored)
setAdvancedUnlockedMessageView("")
advancedUnlockInfoView?.setIconViewClickListener(false) {
biometricAuthenticationCallback.onAuthenticationError(BiometricPrompt.ERROR_UNABLE_TO_PROCESS,
context.getString(R.string.credential_before_click_biometric_button))
}
}
private fun openBiometricPrompt(biometricPrompt: BiometricPrompt?,
cryptoObject: BiometricPrompt.CryptoObject?,
promptInfo: BiometricPrompt.PromptInfo) {
context.runOnUiThread {
if (allowOpenBiometricPrompt) {
if (biometricPrompt != null) {
if (cryptoObject != null) {
biometricPrompt.authenticate(promptInfo, cryptoObject)
} else {
setAdvancedUnlockedTitleView(R.string.crypto_object_not_initialized)
}
} else {
setAdvancedUnlockedTitleView(R.string.biometric_prompt_not_initialized)
}
}
}
}
private fun initEncryptData() {
showFingerPrintViews(true)
setAdvancedUnlockedTitleView(R.string.open_biometric_prompt_store_credential)
setAdvancedUnlockedMessageView("")
biometricUnlockDatabaseHelper?.initEncryptData { biometricPrompt, cryptoObject, promptInfo ->
// Set listener to open the biometric dialog and save credential
advancedUnlockInfoView?.setIconViewClickListener { _ ->
openBiometricPrompt(biometricPrompt, cryptoObject, promptInfo)
}
}
}
private fun initDecryptData() {
showFingerPrintViews(true)
setAdvancedUnlockedTitleView(R.string.open_biometric_prompt_unlock_database)
setAdvancedUnlockedMessageView("")
if (biometricUnlockDatabaseHelper != null) {
cipherDatabaseAction.getCipherDatabase(databaseFileUri) {
it?.specParameters?.let { specs ->
biometricUnlockDatabaseHelper?.initDecryptData(specs) { biometricPrompt, cryptoObject, promptInfo ->
// Set listener to open the biometric dialog and check credential
advancedUnlockInfoView?.setIconViewClickListener { _ ->
openBiometricPrompt(biometricPrompt, cryptoObject, promptInfo)
}
// Auto open the biometric prompt
if (isBiometricPromptAutoOpenEnable) {
isBiometricPromptAutoOpenEnable = false
openBiometricPrompt(biometricPrompt, cryptoObject, promptInfo)
}
}
}
}
}
}
@Synchronized
fun initBiometricMode() {
mAllowAdvancedUnlockMenu = false
when (biometricMode) {
Mode.BIOMETRIC_UNAVAILABLE -> initNotAvailable()
Mode.BIOMETRIC_SECURITY_UPDATE_REQUIRED -> initSecurityUpdateRequired()
Mode.BIOMETRIC_NOT_CONFIGURED -> initNotConfigured()
Mode.KEY_MANAGER_UNAVAILABLE -> initKeyManagerNotAvailable()
Mode.WAIT_CREDENTIAL -> initWaitData()
Mode.STORE_CREDENTIAL -> initEncryptData()
Mode.EXTRACT_CREDENTIAL -> initDecryptData()
}
invalidateBiometricMenu()
}
private fun invalidateBiometricMenu() {
// Show fingerprint key deletion
if (!mAddBiometricMenuInProgress) {
mAddBiometricMenuInProgress = true
cipherDatabaseAction.containsCipherDatabase(databaseFileUri) { containsCipher ->
mAllowAdvancedUnlockMenu = containsCipher
&& (biometricMode != Mode.BIOMETRIC_UNAVAILABLE
&& biometricMode != Mode.KEY_MANAGER_UNAVAILABLE)
mAddBiometricMenuInProgress = false
context.invalidateOptionsMenu()
}
}
}
fun destroy() {
// Close the biometric prompt
allowOpenBiometricPrompt = false
biometricUnlockDatabaseHelper?.closeBiometricPrompt()
// Restore the checked listener
checkboxPasswordView?.setOnCheckedChangeListener(onCheckedPasswordChangeListener)
}
fun inflateOptionsMenu(menuInflater: MenuInflater, menu: Menu) {
if (mAllowAdvancedUnlockMenu)
menuInflater.inflate(R.menu.advanced_unlock, menu)
}
fun deleteEntryKey() {
allowOpenBiometricPrompt = false
advancedUnlockInfoView?.setIconViewClickListener(false, null)
biometricUnlockDatabaseHelper?.closeBiometricPrompt()
biometricUnlockDatabaseHelper?.deleteEntryKey()
cipherDatabaseAction.deleteByDatabaseUri(databaseFileUri) {
checkBiometricAvailability()
}
}
override fun handleEncryptedResult(encryptedValue: String, ivSpec: String) {
loadDatabaseAfterRegisterCredentials.invoke(encryptedValue, ivSpec)
}
override fun handleDecryptedResult(decryptedValue: String) {
// Load database directly with password retrieve
loadDatabaseAfterRetrieveCredentials.invoke(decryptedValue)
}
override fun onInvalidKeyException(e: Exception) {
setAdvancedUnlockedMessageView(R.string.biometric_invalid_key)
}
override fun onBiometricException(e: Exception) {
e.localizedMessage?.let {
setAdvancedUnlockedMessageView(it)
}
}
private fun showFingerPrintViews(show: Boolean) {
context.runOnUiThread {
advancedUnlockInfoView?.visibility = if (show) View.VISIBLE else View.GONE
}
}
private fun setAdvancedUnlockedTitleView(textId: Int) {
context.runOnUiThread {
advancedUnlockInfoView?.setTitle(textId)
}
}
private fun setAdvancedUnlockedMessageView(textId: Int) {
context.runOnUiThread {
advancedUnlockInfoView?.setMessage(textId)
}
}
private fun setAdvancedUnlockedMessageView(text: CharSequence) {
context.runOnUiThread {
advancedUnlockInfoView?.message = text
}
}
enum class Mode {
BIOMETRIC_UNAVAILABLE,
BIOMETRIC_SECURITY_UPDATE_REQUIRED,
BIOMETRIC_NOT_CONFIGURED,
KEY_MANAGER_UNAVAILABLE,
WAIT_CREDENTIAL,
STORE_CREDENTIAL,
EXTRACT_CREDENTIAL
}
companion object {
private val TAG = AdvancedUnlockedManager::class.java.name
}
}

View File

@@ -1,355 +0,0 @@
/*
* Copyright 2019 Jeremy Jamet / Kunzisoft.
*
* This file is part of KeePassDX.
*
* KeePassDX is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* KeePassDX is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.kunzisoft.keepass.biometric
import android.app.KeyguardManager
import android.content.Context
import android.os.Build
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyPermanentlyInvalidatedException
import android.security.keystore.KeyProperties
import android.util.Base64
import android.util.Log
import androidx.annotation.RequiresApi
import androidx.biometric.BiometricManager
import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG
import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_WEAK
import androidx.biometric.BiometricPrompt
import androidx.fragment.app.FragmentActivity
import com.kunzisoft.keepass.R
import java.security.KeyStore
import java.security.UnrecoverableKeyException
import java.util.concurrent.Executors
import javax.crypto.BadPaddingException
import javax.crypto.Cipher
import javax.crypto.KeyGenerator
import javax.crypto.SecretKey
import javax.crypto.spec.IvParameterSpec
@RequiresApi(api = Build.VERSION_CODES.M)
class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
private var biometricPrompt: BiometricPrompt? = null
private var keyStore: KeyStore? = null
private var keyGenerator: KeyGenerator? = null
private var cipher: Cipher? = null
private var keyguardManager: KeyguardManager? = null
private var cryptoObject: BiometricPrompt.CryptoObject? = null
private var isKeyManagerInit = false
var authenticationCallback: BiometricPrompt.AuthenticationCallback? = null
var biometricUnlockCallback: BiometricUnlockCallback? = null
private val promptInfoStoreCredential = BiometricPrompt.PromptInfo.Builder().apply {
setTitle(context.getString(R.string.biometric_prompt_store_credential_title))
setDescription(context.getString(R.string.biometric_prompt_store_credential_message))
setConfirmationRequired(true)
// TODO device credential #102 #152
/*
if (keyguardManager?.isDeviceSecure == true)
setDeviceCredentialAllowed(true)
else
*/
setNegativeButtonText(context.getString(android.R.string.cancel))
}.build()
private val promptInfoExtractCredential = BiometricPrompt.PromptInfo.Builder().apply {
setTitle(context.getString(R.string.biometric_prompt_extract_credential_title))
//setDescription(context.getString(R.string.biometric_prompt_extract_credential_message))
setConfirmationRequired(false)
// TODO device credential #102 #152
/*
if (keyguardManager?.isDeviceSecure == true)
setDeviceCredentialAllowed(true)
else
*/
setNegativeButtonText(context.getString(android.R.string.cancel))
}.build()
val isKeyManagerInitialized: Boolean
get() {
if (!isKeyManagerInit) {
biometricUnlockCallback?.onBiometricException(Exception("Biometric not initialized"))
}
return isKeyManagerInit
}
init {
if (allowInitKeyStore(context)) {
this.keyguardManager = context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager?
try {
this.keyStore = KeyStore.getInstance(BIOMETRIC_KEYSTORE)
this.keyGenerator = KeyGenerator.getInstance(BIOMETRIC_KEY_ALGORITHM, BIOMETRIC_KEYSTORE)
this.cipher = Cipher.getInstance(
BIOMETRIC_KEY_ALGORITHM + "/"
+ BIOMETRIC_BLOCKS_MODES + "/"
+ BIOMETRIC_ENCRYPTION_PADDING)
this.cryptoObject = BiometricPrompt.CryptoObject(cipher!!)
isKeyManagerInit = (keyStore != null
&& keyGenerator != null
&& cipher != null)
} catch (e: Exception) {
Log.e(TAG, "Unable to initialize the keystore", e)
isKeyManagerInit = false
biometricUnlockCallback?.onBiometricException(e)
}
} else {
// really not much to do when no fingerprint support found
isKeyManagerInit = false
}
}
private fun getSecretKey(): SecretKey? {
if (!isKeyManagerInitialized) {
return null
}
try {
// Create new key if needed
keyStore?.let { keyStore ->
keyStore.load(null)
try {
if (!keyStore.containsAlias(BIOMETRIC_KEYSTORE_KEY)) {
// Set the alias of the entry in Android KeyStore where the key will appear
// and the constrains (purposes) in the constructor of the Builder
keyGenerator?.init(
KeyGenParameterSpec.Builder(
BIOMETRIC_KEYSTORE_KEY,
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
// Require the user to authenticate with a fingerprint to authorize every use
// of the key
.setUserAuthenticationRequired(true)
.build())
keyGenerator?.generateKey()
}
} catch (e: Exception) {
Log.e(TAG, "Unable to create a key in keystore", e)
biometricUnlockCallback?.onBiometricException(e)
}
return keyStore.getKey(BIOMETRIC_KEYSTORE_KEY, null) as SecretKey?
}
} catch (e: Exception) {
Log.e(TAG, "Unable to retrieve the key in keystore", e)
biometricUnlockCallback?.onBiometricException(e)
}
return null
}
fun initEncryptData(actionIfCypherInit
: (biometricPrompt: BiometricPrompt?,
cryptoObject: BiometricPrompt.CryptoObject?,
promptInfo: BiometricPrompt.PromptInfo) -> Unit) {
if (!isKeyManagerInitialized) {
return
}
try {
getSecretKey()?.let { secretKey ->
cipher?.init(Cipher.ENCRYPT_MODE, secretKey)
initBiometricPrompt()
actionIfCypherInit.invoke(biometricPrompt, cryptoObject, promptInfoStoreCredential)
}
} catch (unrecoverableKeyException: UnrecoverableKeyException) {
Log.e(TAG, "Unable to initialize encrypt data", unrecoverableKeyException)
biometricUnlockCallback?.onInvalidKeyException(unrecoverableKeyException)
} catch (invalidKeyException: KeyPermanentlyInvalidatedException) {
Log.e(TAG, "Unable to initialize encrypt data", invalidKeyException)
biometricUnlockCallback?.onInvalidKeyException(invalidKeyException)
} catch (e: Exception) {
Log.e(TAG, "Unable to initialize encrypt data", e)
biometricUnlockCallback?.onBiometricException(e)
}
}
fun encryptData(value: String) {
if (!isKeyManagerInitialized) {
return
}
try {
val encrypted = cipher?.doFinal(value.toByteArray())
val encryptedBase64 = Base64.encodeToString(encrypted, Base64.NO_WRAP)
// passes updated iv spec on to callback so this can be stored for decryption
cipher?.parameters?.getParameterSpec(IvParameterSpec::class.java)?.let{ spec ->
val ivSpecValue = Base64.encodeToString(spec.iv, Base64.NO_WRAP)
biometricUnlockCallback?.handleEncryptedResult(encryptedBase64, ivSpecValue)
}
} catch (e: Exception) {
Log.e(TAG, "Unable to encrypt data", e)
biometricUnlockCallback?.onBiometricException(e)
}
}
fun initDecryptData(ivSpecValue: String, actionIfCypherInit
: (biometricPrompt: BiometricPrompt?,
cryptoObject: BiometricPrompt.CryptoObject?,
promptInfo: BiometricPrompt.PromptInfo) -> Unit) {
if (!isKeyManagerInitialized) {
return
}
try {
// important to restore spec here that was used for decryption
val iv = Base64.decode(ivSpecValue, Base64.NO_WRAP)
val spec = IvParameterSpec(iv)
getSecretKey()?.let { secretKey ->
cipher?.init(Cipher.DECRYPT_MODE, secretKey, spec)
initBiometricPrompt()
actionIfCypherInit.invoke(biometricPrompt, cryptoObject, promptInfoExtractCredential)
}
} catch (unrecoverableKeyException: UnrecoverableKeyException) {
Log.e(TAG, "Unable to initialize decrypt data", unrecoverableKeyException)
deleteEntryKey()
} catch (invalidKeyException: KeyPermanentlyInvalidatedException) {
Log.e(TAG, "Unable to initialize decrypt data", invalidKeyException)
biometricUnlockCallback?.onInvalidKeyException(invalidKeyException)
} catch (e: Exception) {
Log.e(TAG, "Unable to initialize decrypt data", e)
biometricUnlockCallback?.onBiometricException(e)
}
}
fun decryptData(encryptedValue: String) {
if (!isKeyManagerInitialized) {
return
}
try {
// actual decryption here
val encrypted = Base64.decode(encryptedValue, Base64.NO_WRAP)
cipher?.doFinal(encrypted)?.let { decrypted ->
biometricUnlockCallback?.handleDecryptedResult(String(decrypted))
}
} catch (badPaddingException: BadPaddingException) {
Log.e(TAG, "Unable to decrypt data", badPaddingException)
biometricUnlockCallback?.onInvalidKeyException(badPaddingException)
} catch (e: Exception) {
Log.e(TAG, "Unable to decrypt data", e)
biometricUnlockCallback?.onBiometricException(e)
}
}
fun deleteEntryKey() {
try {
keyStore?.load(null)
keyStore?.deleteEntry(BIOMETRIC_KEYSTORE_KEY)
} catch (e: Exception) {
Log.e(TAG, "Unable to delete entry key in keystore", e)
biometricUnlockCallback?.onBiometricException(e)
}
}
@Synchronized
fun initBiometricPrompt() {
if (biometricPrompt == null) {
authenticationCallback?.let {
biometricPrompt = BiometricPrompt(context, Executors.newSingleThreadExecutor(), it)
}
}
}
fun closeBiometricPrompt() {
biometricPrompt?.cancelAuthentication()
}
interface BiometricUnlockErrorCallback {
fun onInvalidKeyException(e: Exception)
fun onBiometricException(e: Exception)
}
interface BiometricUnlockCallback : BiometricUnlockErrorCallback {
fun handleEncryptedResult(encryptedValue: String, ivSpec: String)
fun handleDecryptedResult(decryptedValue: String)
}
companion object {
private val TAG = BiometricUnlockDatabaseHelper::class.java.name
private const val BIOMETRIC_KEYSTORE = "AndroidKeyStore"
private const val BIOMETRIC_KEYSTORE_KEY = "com.kunzisoft.keepass.biometric.key"
private const val BIOMETRIC_KEY_ALGORITHM = KeyProperties.KEY_ALGORITHM_AES
private const val BIOMETRIC_BLOCKS_MODES = KeyProperties.BLOCK_MODE_CBC
private const val BIOMETRIC_ENCRYPTION_PADDING = KeyProperties.ENCRYPTION_PADDING_PKCS7
fun canAuthenticate(context: Context): Int {
return try {
BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG)
} catch (e: Exception) {
Log.e(TAG, "Unable to authenticate with strong biometric.", e)
try {
BiometricManager.from(context).canAuthenticate(BIOMETRIC_WEAK)
} catch (e: Exception) {
Log.e(TAG, "Unable to authenticate with weak biometric.", e)
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE
}
}
}
fun allowInitKeyStore(context: Context): Boolean {
val biometricCanAuthenticate = canAuthenticate(context)
return ( biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN
)
}
fun unlockSupported(context: Context): Boolean {
val biometricCanAuthenticate = canAuthenticate(context)
return ( biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED
)
}
/**
* Remove entry key in keystore
*/
fun deleteEntryKeyInKeystoreForBiometric(context: FragmentActivity,
biometricCallback: BiometricUnlockErrorCallback) {
BiometricUnlockDatabaseHelper(context).apply {
biometricUnlockCallback = object : BiometricUnlockCallback {
override fun handleEncryptedResult(encryptedValue: String, ivSpec: String) {}
override fun handleDecryptedResult(decryptedValue: String) {}
override fun onInvalidKeyException(e: Exception) {
biometricCallback.onInvalidKeyException(e)
}
override fun onBiometricException(e: Exception) {
biometricCallback.onBiometricException(e)
}
}
deleteEntryKey()
}
}
}
}

View File

@@ -20,6 +20,7 @@
package com.kunzisoft.keepass.crypto.keyDerivation
import android.content.res.Resources
import androidx.annotation.StringRes
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.stream.bytes16ToUuid
import com.kunzisoft.keepass.utils.UnsignedInt
@@ -27,7 +28,11 @@ import java.io.IOException
import java.security.SecureRandom
import java.util.*
class Argon2Kdf internal constructor() : KdfEngine() {
class Argon2Kdf(private val type: Type) : KdfEngine() {
init {
uuid = type.CIPHER_UUID
}
override val defaultParameters: KdfParameters
get() {
@@ -45,12 +50,8 @@ class Argon2Kdf internal constructor() : KdfEngine() {
override val defaultKeyRounds: Long
get() = DEFAULT_ITERATIONS
init {
uuid = CIPHER_UUID
}
override fun getName(resources: Resources): String {
return resources.getString(R.string.kdf_Argon2)
return resources.getString(type.nameId)
}
@Throws(IOException::class)
@@ -72,7 +73,9 @@ class Argon2Kdf internal constructor() : KdfEngine() {
val secretKey = kdfParameters.getByteArray(PARAM_SECRET_KEY)
val assocData = kdfParameters.getByteArray(PARAM_ASSOC_DATA)
return Argon2Native.transformKey(masterKey,
return Argon2Native.transformKey(
type,
masterKey,
salt,
parallelism,
memory,
@@ -141,9 +144,8 @@ class Argon2Kdf internal constructor() : KdfEngine() {
override val maxParallelism: Long
get() = MAX_PARALLELISM
companion object {
val CIPHER_UUID: UUID = bytes16ToUuid(
enum class Type(val CIPHER_UUID: UUID, @StringRes val nameId: Int) {
ARGON2_D(bytes16ToUuid(
byteArrayOf(0xEF.toByte(),
0x63.toByte(),
0x6D.toByte(),
@@ -159,7 +161,27 @@ class Argon2Kdf internal constructor() : KdfEngine() {
0x03.toByte(),
0xE3.toByte(),
0x0A.toByte(),
0x0C.toByte()))
0x0C.toByte())), R.string.kdf_Argon2d),
ARGON2_ID(bytes16ToUuid(
byteArrayOf(0x9E.toByte(),
0x29.toByte(),
0x8B.toByte(),
0x19.toByte(),
0x56.toByte(),
0xDB.toByte(),
0x47.toByte(),
0x73.toByte(),
0xB2.toByte(),
0x3D.toByte(),
0xFC.toByte(),
0x3E.toByte(),
0xC6.toByte(),
0xF0.toByte(),
0xA1.toByte(),
0xE6.toByte())), R.string.kdf_Argon2id);
}
companion object {
private const val PARAM_SALT = "S" // byte[]
private const val PARAM_PARALLELISM = "P" // UInt32

View File

@@ -26,12 +26,29 @@ import java.io.IOException;
public class Argon2Native {
public static byte[] transformKey(byte[] password, byte[] salt, UnsignedInt parallelism,
enum CType {
ARGON2_D(0),
ARGON2_I(1),
ARGON2_ID(2);
int cValue = 0;
CType(int i) {
cValue = i;
}
}
public static byte[] transformKey(Argon2Kdf.Type type, byte[] password, byte[] salt, UnsignedInt parallelism,
UnsignedInt memory, UnsignedInt iterations, byte[] secretKey,
byte[] associatedData, UnsignedInt version) throws IOException {
NativeLib.INSTANCE.init();
CType cType = CType.ARGON2_D;
if (type.equals(Argon2Kdf.Type.ARGON2_ID))
cType = CType.ARGON2_ID;
return nTransformMasterKey(
cType.cValue,
password,
salt,
parallelism.toKotlinInt(),
@@ -42,7 +59,7 @@ public class Argon2Native {
version.toKotlinInt());
}
private static native byte[] nTransformMasterKey(byte[] password, byte[] salt, int parallelism,
private static native byte[] nTransformMasterKey(int type, byte[] password, byte[] salt, int parallelism,
int memory, int iterations, byte[] secretKey,
byte[] associatedData, int version) throws IOException;
}

View File

@@ -21,5 +21,6 @@ package com.kunzisoft.keepass.crypto.keyDerivation
object KdfFactory {
var aesKdf = AesKdf()
var argon2Kdf = Argon2Kdf()
var argon2dKdf = Argon2Kdf(Argon2Kdf.Type.ARGON2_D)
var argon2idKdf = Argon2Kdf(Argon2Kdf.Type.ARGON2_ID)
}

View File

@@ -113,7 +113,8 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
init {
kdfList.add(KdfFactory.aesKdf)
kdfList.add(KdfFactory.argon2Kdf)
kdfList.add(KdfFactory.argon2dKdf)
kdfList.add(KdfFactory.argon2idKdf)
}
constructor()

View File

@@ -958,7 +958,7 @@ class DatabaseInputKDBX(cacheDirectory: File,
// Create empty binary if not retrieved in pool
if (binaryRetrieve == null) {
binaryRetrieve = mDatabase.buildNewBinary(cacheDirectory,
compression = false, protection = true, binaryPoolId = id)
compression = false, protection = false, binaryPoolId = id)
}
return binaryRetrieve
}
@@ -1024,29 +1024,20 @@ class DatabaseInputKDBX(cacheDirectory: File,
return xpp.safeNextText()
}
@Throws(XmlPullParserException::class, IOException::class)
private fun readBase64String(xpp: XmlPullParser): ByteArray {
//readNextNode = false;
Base64.decode(xpp.safeNextText(), BASE_64_FLAG)?.let { data ->
val plainText = ByteArray(data.size)
randomStream?.processBytes(data, 0, data.size, plainText, 0)
return plainText
}
return ByteArray(0)
}
@Throws(XmlPullParserException::class, IOException::class)
private fun readProtectedBase64String(xpp: XmlPullParser): ByteArray? {
//(xpp.getEventType() == XmlPullParser.START_TAG);
if (xpp.attributeCount > 0) {
val protect = xpp.getAttributeValue(null, DatabaseKDBXXML.AttrProtected)
if (protect != null && protect.equals(DatabaseKDBXXML.ValTrue, ignoreCase = true)) {
return readBase64String(xpp)
Base64.decode(xpp.safeNextText(), BASE_64_FLAG)?.let { data ->
val plainText = ByteArray(data.size)
randomStream?.processBytes(data, 0, data.size, plainText, 0)
return plainText
}
return ByteArray(0)
}
}
return null
}

View File

@@ -38,7 +38,6 @@ import com.kunzisoft.keepass.database.element.entry.EntryKDBX
import com.kunzisoft.keepass.database.element.group.GroupKDBX
import com.kunzisoft.keepass.database.element.icon.IconImageCustom
import com.kunzisoft.keepass.database.element.node.NodeKDBXInterface
import com.kunzisoft.keepass.database.element.database.BinaryAttachment
import com.kunzisoft.keepass.database.element.security.MemoryProtectionConfig
import com.kunzisoft.keepass.database.element.security.ProtectedString
import com.kunzisoft.keepass.database.exception.DatabaseOutputException
@@ -420,41 +419,56 @@ class DatabaseOutputKDBX(private val mDatabaseKDBX: DatabaseKDBX,
writeObject(name, String(Base64.encode(data, BASE_64_FLAG)))
}
/*
// Normally used by a single entry but obsolete because binaries are in meta tag with kdbx3.1-
// or in file header with kdbx4
// binary.isProtected attribute is not used to create the XML
@Throws(IllegalArgumentException::class, IllegalStateException::class, IOException::class)
private fun writeBinary(binary : BinaryAttachment) {
val binaryLength = binary.length()
if (binaryLength > 0) {
private fun writeEntryBinary(binary : BinaryAttachment) {
if (binary.length() > 0) {
if (binary.isProtected) {
xml.attribute(null, DatabaseKDBXXML.AttrProtected, DatabaseKDBXXML.ValTrue)
binary.getInputDataStream().readBytes(BUFFER_SIZE_BYTES) { buffer ->
val encoded = ByteArray(buffer.size)
randomStream!!.processBytes(buffer, 0, encoded.size, encoded, 0)
val charArray = String(Base64.encode(encoded, BASE_64_FLAG)).toCharArray()
xml.text(charArray, 0, charArray.size)
binary.getInputDataStream().use { inputStream ->
inputStream.readBytes(BUFFER_SIZE_BYTES) { buffer ->
val encoded = ByteArray(buffer.size)
randomStream!!.processBytes(buffer, 0, encoded.size, encoded, 0)
xml.text(String(Base64.encode(encoded, BASE_64_FLAG)))
}
}
} else {
if (binary.isCompressed) {
xml.attribute(null, DatabaseKDBXXML.AttrCompressed, DatabaseKDBXXML.ValTrue)
}
// Write the XML
binary.getInputDataStream().readBytes(BUFFER_SIZE_BYTES) { buffer ->
val charArray = String(Base64.encode(buffer, BASE_64_FLAG)).toCharArray()
xml.text(charArray, 0, charArray.size)
binary.getInputDataStream().use { inputStream ->
inputStream.readBytes(BUFFER_SIZE_BYTES) { buffer ->
xml.text(String(Base64.encode(buffer, BASE_64_FLAG)))
}
}
}
}
}
*/
// Only uses with kdbx3.1 to write binaries in meta tag
// With kdbx4, don't use this method because binaries are in header file
@Throws(IllegalArgumentException::class, IllegalStateException::class, IOException::class)
private fun writeMetaBinaries() {
xml.startTag(null, DatabaseKDBXXML.ElemBinaries)
// Use indexes because necessarily in DatabaseV4 (binary header ref is the order)
// Use indexes because necessarily (binary header ref is the order)
mDatabaseKDBX.binaryPool.doForEachOrderedBinary { index, keyBinary ->
xml.startTag(null, DatabaseKDBXXML.ElemBinary)
xml.attribute(null, DatabaseKDBXXML.AttrId, index.toString())
writeBinary(keyBinary.binary)
val binary = keyBinary.binary
if (binary.length() > 0) {
if (binary.isCompressed) {
xml.attribute(null, DatabaseKDBXXML.AttrCompressed, DatabaseKDBXXML.ValTrue)
}
// Write the XML
binary.getInputDataStream().use { inputStream ->
inputStream.readBytes(BUFFER_SIZE_BYTES) { buffer ->
xml.text(String(Base64.encode(buffer, BASE_64_FLAG)))
}
}
}
xml.endTag(null, DatabaseKDBXXML.ElemBinary)
}
@@ -523,13 +537,11 @@ class DatabaseOutputKDBX(private val mDatabaseKDBX: DatabaseKDBX,
if (protect) {
xml.attribute(null, DatabaseKDBXXML.AttrProtected, DatabaseKDBXXML.ValTrue)
val data = value.toString().toByteArray(charset("UTF-8"))
val valLength = data.size
if (valLength > 0) {
val encoded = ByteArray(valLength)
randomStream!!.processBytes(data, 0, valLength, encoded, 0)
val data = value.toString().toByteArray()
val dataLength = data.size
if (data.isNotEmpty()) {
val encoded = ByteArray(dataLength)
randomStream!!.processBytes(data, 0, dataLength, encoded, 0)
xml.text(String(Base64.encode(encoded, BASE_64_FLAG)))
}
} else {

View File

@@ -86,8 +86,8 @@ class PasswordActivityEducation(activity: Activity)
onOuterViewClick: ((TapTargetView?) -> Unit)? = null): Boolean {
return checkAndPerformedEducation(!isEducationBiometricPerformed(activity),
TapTarget.forView(educationView,
activity.getString(R.string.education_biometric_title),
activity.getString(R.string.education_biometric_summary))
activity.getString(R.string.education_advanced_unlock_title),
activity.getString(R.string.education_advanced_unlock_summary))
.textColorInt(Color.WHITE)
.tintTarget(false)
.cancelable(true),

View File

@@ -42,6 +42,7 @@ import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.model.EntryInfo
import com.kunzisoft.keepass.model.Field
import com.kunzisoft.keepass.notifications.KeyboardEntryNotificationService
import com.kunzisoft.keepass.otp.OtpEntryFields.OTP_TOKEN_FIELD
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.utils.*
@@ -243,6 +244,14 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
if (entryInfoKey != null) {
currentInputConnection.commitText(entryInfoKey!!.password, 1)
}
val otpFieldExists = entryInfoKey?.containsCustomField(OTP_TOKEN_FIELD) ?: false
actionGoAutomatically(!otpFieldExists)
}
KEY_OTP -> {
if (entryInfoKey != null) {
currentInputConnection.commitText(
entryInfoKey!!.getGeneratedFieldValue(OTP_TOKEN_FIELD), 1)
}
actionGoAutomatically()
}
KEY_URL -> {
@@ -254,7 +263,7 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
KEY_FIELDS -> {
if (entryInfoKey != null) {
fieldsAdapter?.apply {
setFields(entryInfoKey!!.customFields)
setFields(entryInfoKey!!.customFields.filter { it.name != OTP_TOKEN_FIELD})
notifyDataSetChanged()
}
}
@@ -272,10 +281,11 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
currentInputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_TAB))
}
private fun actionGoAutomatically() {
private fun actionGoAutomatically(switchToPreviousKeyboardIfAllowed: Boolean = true) {
if (PreferencesUtil.isAutoGoActionEnable(this)) {
currentInputConnection.performEditorAction(EditorInfo.IME_ACTION_GO)
if (PreferencesUtil.isKeyboardPreviousFillInEnable(this)) {
if (switchToPreviousKeyboardIfAllowed
&& PreferencesUtil.isKeyboardPreviousFillInEnable(this)) {
switchToPreviousKeyboard()
}
}
@@ -326,6 +336,7 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
private const val KEY_ENTRY = 620
private const val KEY_USERNAME = 500
private const val KEY_PASSWORD = 510
private const val KEY_OTP = 515
private const val KEY_URL = 520
private const val KEY_FIELDS = 530

View File

@@ -91,13 +91,17 @@ class EntryInfo : Parcelable {
return customFields.any { !it.protectedValue.isProtected }
}
fun containsCustomField(label: String): Boolean {
return customFields.lastOrNull { it.name == label } != null
}
fun isAutoGeneratedField(field: Field): Boolean {
return field.name == OTP_TOKEN_FIELD
}
fun getGeneratedFieldValue(label: String): String {
otpModel?.let {
if (label == OTP_TOKEN_FIELD) {
if (label == OTP_TOKEN_FIELD) {
otpModel?.let {
return OtpElement(it).token
}
}

View File

@@ -0,0 +1,143 @@
package com.kunzisoft.keepass.notifications
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Binder
import android.os.IBinder
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.app.database.CipherDatabaseEntity
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.timeout.TimeoutHelper
import kotlinx.coroutines.*
class AdvancedUnlockNotificationService : NotificationService() {
private lateinit var mTempCipherDao: ArrayList<CipherDatabaseEntity>
private var mActionTaskBinder = AdvancedUnlockBinder()
private var notificationTimeoutMilliSecs: Long = 0
private var mTimerJob: Job? = null
inner class AdvancedUnlockBinder: Binder() {
fun getCipherDatabase(databaseUri: Uri): CipherDatabaseEntity? {
return mTempCipherDao.firstOrNull { it.databaseUri == databaseUri.toString()}
}
fun addOrUpdateCipherDatabase(cipherDatabaseEntity: CipherDatabaseEntity) {
val cipherDatabaseRetrieve = mTempCipherDao.firstOrNull { it.databaseUri == cipherDatabaseEntity.databaseUri }
cipherDatabaseRetrieve?.replaceContent(cipherDatabaseEntity)
?: mTempCipherDao.add(cipherDatabaseEntity)
}
fun deleteByDatabaseUri(databaseUri: Uri) {
mTempCipherDao.firstOrNull { it.databaseUri == databaseUri.toString() }?.let {
mTempCipherDao.remove(it)
}
}
fun deleteAll() {
mTempCipherDao.clear()
}
}
override val notificationId: Int = 593
override fun retrieveChannelId(): String {
return CHANNEL_ADVANCED_UNLOCK_ID
}
override fun retrieveChannelName(): String {
return getString(R.string.advanced_unlock)
}
override fun onBind(intent: Intent): IBinder? {
super.onBind(intent)
return mActionTaskBinder
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
super.onStartCommand(intent, flags, startId)
val deleteIntent = Intent(this, AdvancedUnlockNotificationService::class.java).apply {
action = ACTION_REMOVE_KEYS
}
val pendingDeleteIntent = PendingIntent.getService(this, 0, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val biometricUnlockEnabled = PreferencesUtil.isBiometricUnlockEnable(this)
val notificationBuilder = buildNewNotification().apply {
setSmallIcon(if (biometricUnlockEnabled) {
R.drawable.notification_ic_fingerprint_unlock_24dp
} else {
R.drawable.notification_ic_device_unlock_24dp
})
intent?.let {
setContentTitle(getString(R.string.advanced_unlock))
}
setContentText(getString(R.string.advanced_unlock_tap_delete))
setContentIntent(pendingDeleteIntent)
// Unfortunately swipe is disabled in lollipop+
setDeleteIntent(pendingDeleteIntent)
}
when (intent?.action) {
ACTION_TIMEOUT -> {
notificationTimeoutMilliSecs = PreferencesUtil.getAdvancedUnlockTimeout(this)
// Not necessarily a foreground service
if (mTimerJob == null && notificationTimeoutMilliSecs != TimeoutHelper.NEVER) {
mTimerJob = CoroutineScope(Dispatchers.Main).launch {
val maxPos = 100
val posDurationMills = notificationTimeoutMilliSecs / maxPos
for (pos in maxPos downTo 0) {
notificationBuilder.setProgress(maxPos, pos, false)
startForeground(notificationId, notificationBuilder.build())
delay(posDurationMills)
if (pos <= 0) {
stopSelf()
}
}
notificationManager?.cancel(notificationId)
mTimerJob = null
cancel()
}
} else {
startForeground(notificationId, notificationBuilder.build())
}
}
ACTION_REMOVE_KEYS -> {
stopSelf()
}
else -> {}
}
return START_STICKY
}
override fun onCreate() {
super.onCreate()
mTempCipherDao = ArrayList()
}
override fun onDestroy() {
mTempCipherDao.clear()
mTimerJob?.cancel()
super.onDestroy()
}
companion object {
private const val CHANNEL_ADVANCED_UNLOCK_ID = "com.kunzisoft.keepass.notification.channel.unlock"
private const val ACTION_TIMEOUT = "ACTION_TIMEOUT"
private const val ACTION_REMOVE_KEYS = "ACTION_REMOVE_KEYS"
fun startServiceForTimeout(context: Context) {
if (PreferencesUtil.isTempAdvancedUnlockEnable(context)) {
context.startService(Intent(context, AdvancedUnlockNotificationService::class.java).apply {
action = ACTION_TIMEOUT
})
}
}
fun stopService(context: Context) {
context.stopService(Intent(context, AdvancedUnlockNotificationService::class.java))
}
}
}

View File

@@ -30,7 +30,7 @@ import android.view.autofill.AutofillManager
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AlertDialog
import androidx.biometric.BiometricManager
import androidx.fragment.app.FragmentActivity
import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.SwitchPreference
@@ -41,15 +41,18 @@ import com.kunzisoft.keepass.activities.dialogs.UnavailableFeatureDialogFragment
import com.kunzisoft.keepass.activities.stylish.Stylish
import com.kunzisoft.keepass.app.database.CipherDatabaseAction
import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
import com.kunzisoft.keepass.biometric.BiometricUnlockDatabaseHelper
import com.kunzisoft.keepass.biometric.AdvancedUnlockManager
import com.kunzisoft.keepass.education.Education
import com.kunzisoft.keepass.icons.IconPackChooser
import com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService
import com.kunzisoft.keepass.settings.preference.IconPackListPreference
import com.kunzisoft.keepass.utils.UriUtil
class NestedAppSettingsFragment : NestedSettingsFragment() {
private var deleteKeysAlertDialog: AlertDialog? = null
override fun onCreateScreenPreference(screen: Screen, savedInstanceState: Bundle?, rootKey: String?) {
// Load the preferences from an XML resource
@@ -208,15 +211,18 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
setPreferencesFromResource(R.xml.preferences_advanced_unlock, rootKey)
activity?.let { activity ->
val biometricUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.biometric_unlock_enable_key))
val deleteKeysFingerprints: Preference? = findPreference(getString(R.string.biometric_delete_all_key_key))
// < M solve verifyError exception
val deviceCredentialUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.device_credential_unlock_enable_key))
val autoOpenPromptPreference: SwitchPreference? = findPreference(getString(R.string.biometric_auto_open_prompt_key))
val tempAdvancedUnlockPreference: SwitchPreference? = findPreference(getString(R.string.temp_advanced_unlock_enable_key))
val biometricUnlockSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
BiometricUnlockDatabaseHelper.unlockSupported(activity)
AdvancedUnlockManager.biometricUnlockSupported(activity)
} else false
if (!biometricUnlockSupported) {
biometricUnlockEnablePreference?.apply {
// False if under Marshmallow
biometricUnlockEnablePreference?.apply {
if (!biometricUnlockSupported) {
isChecked = false
setOnPreferenceClickListener { preference ->
(preference as SwitchPreference).isChecked = false
@@ -224,42 +230,98 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
.show(parentFragmentManager, "unavailableFeatureDialog")
false
}
}
deleteKeysFingerprints?.isEnabled = false
} else {
deleteKeysFingerprints?.setOnPreferenceClickListener {
context?.let { context ->
AlertDialog.Builder(context)
.setMessage(resources.getString(R.string.biometric_delete_all_key_warning))
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(resources.getString(android.R.string.ok)
) { _, _ ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
BiometricUnlockDatabaseHelper.deleteEntryKeyInKeystoreForBiometric(
activity,
object : BiometricUnlockDatabaseHelper.BiometricUnlockErrorCallback {
fun showException(e: Exception) {
Toast.makeText(context,
getString(R.string.biometric_scanning_error, e.localizedMessage),
Toast.LENGTH_SHORT).show()
}
override fun onInvalidKeyException(e: Exception) {
showException(e)
}
override fun onBiometricException(e: Exception) {
showException(e)
}
})
}
CipherDatabaseAction.getInstance(context.applicationContext).deleteAll()
} else {
setOnPreferenceClickListener {
val biometricChecked = biometricUnlockEnablePreference.isChecked
val deviceCredentialChecked = deviceCredentialUnlockEnablePreference?.isChecked ?: false
if (!biometricChecked) {
biometricUnlockEnablePreference.isChecked = true
deleteKeysMessage(activity) {
biometricUnlockEnablePreference.isChecked = false
autoOpenPromptPreference?.isEnabled = deviceCredentialChecked
tempAdvancedUnlockPreference?.isEnabled = deviceCredentialChecked
}
} else {
if (deviceCredentialChecked) {
biometricUnlockEnablePreference.isChecked = false
deleteKeysMessage(activity) {
biometricUnlockEnablePreference.isChecked = true
deviceCredentialUnlockEnablePreference?.isChecked = false
}
.setNegativeButton(resources.getString(android.R.string.cancel))
{ _, _ -> }.show()
} else {
autoOpenPromptPreference?.isEnabled = true
tempAdvancedUnlockPreference?.isEnabled = true
}
}
true
}
}
}
val deviceCredentialUnlockSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
AdvancedUnlockManager.deviceCredentialUnlockSupported(activity)
} else false
deviceCredentialUnlockEnablePreference?.apply {
// Biometric unlock already checked
if (biometricUnlockEnablePreference?.isChecked == true)
isChecked = false
if (!deviceCredentialUnlockSupported) {
isChecked = false
setOnPreferenceClickListener { preference ->
(preference as SwitchPreference).isChecked = false
UnavailableFeatureDialogFragment.getInstance(Build.VERSION_CODES.M)
.show(parentFragmentManager, "unavailableFeatureDialog")
false
}
} else {
setOnPreferenceClickListener {
val deviceCredentialChecked = deviceCredentialUnlockEnablePreference.isChecked
val biometricChecked = biometricUnlockEnablePreference?.isChecked ?: false
if (!deviceCredentialChecked) {
deviceCredentialUnlockEnablePreference.isChecked = true
deleteKeysMessage(activity) {
deviceCredentialUnlockEnablePreference.isChecked = false
autoOpenPromptPreference?.isEnabled = biometricChecked
tempAdvancedUnlockPreference?.isEnabled = biometricChecked
}
} else {
if (biometricChecked) {
deviceCredentialUnlockEnablePreference.isChecked = false
deleteKeysMessage(activity) {
deviceCredentialUnlockEnablePreference.isChecked = true
biometricUnlockEnablePreference?.isChecked = false
}
} else {
autoOpenPromptPreference?.isEnabled = true
tempAdvancedUnlockPreference?.isEnabled = true
}
}
true
}
}
}
autoOpenPromptPreference?.isEnabled = biometricUnlockEnablePreference?.isChecked == true
|| deviceCredentialUnlockEnablePreference?.isChecked == true
tempAdvancedUnlockPreference?.isEnabled = biometricUnlockEnablePreference?.isChecked == true
|| deviceCredentialUnlockEnablePreference?.isChecked == true
tempAdvancedUnlockPreference?.setOnPreferenceClickListener {
tempAdvancedUnlockPreference.isChecked = !tempAdvancedUnlockPreference.isChecked
deleteKeysMessage(activity) {
tempAdvancedUnlockPreference.isChecked = !tempAdvancedUnlockPreference.isChecked
}
true
}
val deleteKeysFingerprints: Preference? = findPreference(getString(R.string.biometric_delete_all_key_key))
if (biometricUnlockSupported || deviceCredentialUnlockSupported) {
deleteKeysFingerprints?.setOnPreferenceClickListener {
deleteKeysMessage(activity)
false
}
} else {
deleteKeysFingerprints?.isEnabled = false
}
}
@@ -269,6 +331,42 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
}
}
private fun deleteKeysMessage(activity: FragmentActivity, validate: (()->Unit)? = null) {
deleteKeysAlertDialog = AlertDialog.Builder(activity)
.setMessage(resources.getString(R.string.advanced_unlock_delete_all_key_warning))
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(resources.getString(android.R.string.ok)
) { _, _ ->
validate?.invoke()
deleteKeysAlertDialog?.setOnDismissListener(null)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
AdvancedUnlockManager.deleteEntryKeyInKeystoreForBiometric(
activity,
object : AdvancedUnlockManager.AdvancedUnlockErrorCallback {
fun showException(e: Exception) {
Toast.makeText(context,
getString(R.string.advanced_unlock_scanning_error, e.localizedMessage),
Toast.LENGTH_SHORT).show()
}
override fun onInvalidKeyException(e: Exception) {
showException(e)
}
override fun onGenericException(e: Exception) {
showException(e)
}
})
}
AdvancedUnlockNotificationService.stopService(activity.applicationContext)
CipherDatabaseAction.getInstance(activity.applicationContext).deleteAll()
}
.setNegativeButton(resources.getString(android.R.string.cancel)
) { _, _ ->}
.create()
deleteKeysAlertDialog?.show()
}
private fun onCreateAppearancePreferences(rootKey: String?) {
setPreferencesFromResource(R.xml.preferences_appearance, rootKey)
@@ -328,7 +426,6 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
override fun onResume() {
super.onResume()
activity?.let { activity ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
findPreference<SwitchPreference?>(getString(R.string.settings_autofill_enable_key))?.let { autoFillEnablePreference ->
@@ -340,6 +437,11 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
}
}
override fun onPause() {
deleteKeysAlertDialog?.dismiss()
super.onPause()
}
private var mCount = 0
override fun onStop() {
super.onStop()

View File

@@ -19,12 +19,14 @@
*/
package com.kunzisoft.keepass.settings
import android.app.backup.BackupManager
import android.content.Context
import android.content.res.Resources
import android.net.Uri
import androidx.preference.PreferenceManager
import com.kunzisoft.keepass.BuildConfig
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.biometric.AdvancedUnlockManager
import com.kunzisoft.keepass.database.element.SortNodeEnum
import com.kunzisoft.keepass.timeout.TimeoutHelper
import java.util.*
@@ -43,6 +45,7 @@ object PreferencesUtil {
}
apply()
}
BackupManager(context).dataChanged()
}
fun getDefaultDatabasePath(context: Context): String? {
@@ -201,6 +204,13 @@ object PreferencesUtil {
?: TimeoutHelper.DEFAULT_TIMEOUT
}
fun getAdvancedUnlockTimeout(context: Context): Long {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return prefs.getString(context.getString(R.string.temp_advanced_unlock_timeout_key),
context.getString(R.string.temp_advanced_unlock_timeout_default))?.toLong()
?: TimeoutHelper.DEFAULT_TIMEOUT
}
fun isLockDatabaseWhenScreenShutOffEnable(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return prefs.getBoolean(context.getString(R.string.lock_database_screen_off_key),
@@ -225,13 +235,38 @@ object PreferencesUtil {
context.resources.getBoolean(R.bool.enable_auto_save_database_default))
}
fun isBiometricUnlockEnable(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return prefs.getBoolean(context.getString(R.string.biometric_unlock_enable_key),
context.resources.getBoolean(R.bool.biometric_unlock_enable_default))
fun isAdvancedUnlockEnable(context: Context): Boolean {
return isBiometricUnlockEnable(context) || isDeviceCredentialUnlockEnable(context)
}
fun isBiometricPromptAutoOpenEnable(context: Context): Boolean {
fun isBiometricUnlockEnable(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
val biometricSupported = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
AdvancedUnlockManager.biometricUnlockSupported(context)
} else {
false
}
return prefs.getBoolean(context.getString(R.string.biometric_unlock_enable_key),
context.resources.getBoolean(R.bool.biometric_unlock_enable_default))
&& biometricSupported
}
fun isDeviceCredentialUnlockEnable(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
// Priority to biometric unlock
val biometricAlreadySupported = isBiometricUnlockEnable(context)
return prefs.getBoolean(context.getString(R.string.device_credential_unlock_enable_key),
context.resources.getBoolean(R.bool.device_credential_unlock_enable_default))
&& !biometricAlreadySupported
}
fun isTempAdvancedUnlockEnable(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return prefs.getBoolean(context.getString(R.string.temp_advanced_unlock_enable_key),
context.resources.getBoolean(R.bool.temp_advanced_unlock_enable_default))
}
fun isAdvancedUnlockPromptAutoOpenEnable(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return prefs.getBoolean(context.getString(R.string.biometric_auto_open_prompt_key),
context.resources.getBoolean(R.bool.biometric_auto_open_prompt_default))

View File

@@ -35,6 +35,7 @@ import com.kunzisoft.keepass.activities.dialogs.AssignMasterKeyDialogFragment
import com.kunzisoft.keepass.activities.dialogs.PasswordEncodingDialogFragment
import com.kunzisoft.keepass.activities.helpers.ReadOnlyHelper
import com.kunzisoft.keepass.activities.lock.LockingActivity
import com.kunzisoft.keepass.activities.lock.resetAppTimeoutWhenViewFocusedOrChanged
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.timeout.TimeoutHelper
import com.kunzisoft.keepass.view.showActionError
@@ -81,7 +82,7 @@ open class SettingsActivity
}
// Focus view to reinitialize timeout
resetAppTimeoutWhenViewFocusedOrChanged(coordinatorLayout)
coordinatorLayout?.resetAppTimeoutWhenViewFocusedOrChanged(this)
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()

View File

@@ -53,23 +53,19 @@ object MenuUtil {
fun onDefaultMenuOptionsItemSelected(activity: Activity,
item: MenuItem,
readOnly: Boolean = READ_ONLY_DEFAULT,
timeoutEnable: Boolean = false): Boolean {
timeoutEnable: Boolean = false) {
when (item.itemId) {
R.id.menu_contribute -> {
onContributionItemSelected(activity)
return true
}
R.id.menu_app_settings -> {
// To avoid flickering when launch settings in a LockingActivity
SettingsActivity.launch(activity, readOnly, timeoutEnable)
return true
}
R.id.menu_about -> {
val intent = Intent(activity, AboutActivity::class.java)
activity.startActivity(intent)
return true
}
else -> return true
}
}
}

View File

@@ -27,10 +27,12 @@ import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.annotation.RequiresApi
import androidx.annotation.StringRes
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.biometric.FingerPrintAnimatedVector
@RequiresApi(api = Build.VERSION_CODES.M)
class AdvancedUnlockInfoView @JvmOverloads constructor(context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0)
@@ -48,25 +50,25 @@ class AdvancedUnlockInfoView @JvmOverloads constructor(context: Context,
inflater?.inflate(R.layout.view_advanced_unlock, this)
unlockContainerView = findViewById(R.id.fingerprint_container)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
unlockTitleTextView = findViewById(R.id.biometric_title)
unlockMessageTextView = findViewById(R.id.biometric_message)
unlockIconImageView = findViewById(R.id.biometric_image)
// Init the fingerprint animation
unlockAnimatedVector = FingerPrintAnimatedVector(context, unlockIconImageView!!)
}
unlockTitleTextView = findViewById(R.id.biometric_title)
unlockMessageTextView = findViewById(R.id.biometric_message)
unlockIconImageView = findViewById(R.id.biometric_image)
}
fun startIconViewAnimation() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
unlockAnimatedVector?.startScan()
}
private fun startIconViewAnimation() {
unlockAnimatedVector?.startScan()
}
fun stopIconViewAnimation() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
unlockAnimatedVector?.stopScan()
private fun stopIconViewAnimation() {
unlockAnimatedVector?.stopScan()
}
fun setIconResource(iconId: Int) {
unlockIconImageView?.setImageResource(iconId)
// Init the fingerprint animation
unlockAnimatedVector = when (iconId) {
R.drawable.fingerprint -> FingerPrintAnimatedVector(context, unlockIconImageView!!)
else -> null
}
}

View File

@@ -48,8 +48,8 @@ import java.util.*
class EntryContentsView @JvmOverloads constructor(context: Context,
var attrs: AttributeSet? = null,
var defStyle: Int = 0)
attrs: AttributeSet? = null,
defStyle: Int = 0)
: LinearLayout(context, attrs, defStyle) {
private var fontInVisibility: Boolean = false
@@ -306,7 +306,7 @@ class EntryContentsView @JvmOverloads constructor(context: Context,
allowCopy: Boolean,
onCopyButtonClickListener: OnClickListener?) {
val entryCustomField: EntryField? = EntryField(context, attrs, defStyle)
val entryCustomField: EntryField? = EntryField(context)
entryCustomField?.apply {
setLabel(title)
setValue(value.toString(), value.isProtected)

View File

@@ -4,8 +4,12 @@ import android.app.Application
import android.net.Uri
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.MutableLiveData
import com.kunzisoft.keepass.app.App
import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
import com.kunzisoft.keepass.app.database.IOActionTask
import com.kunzisoft.keepass.model.DatabaseFile
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.utils.UriUtil
class DatabaseFileViewModel(application: Application) : AndroidViewModel(application) {
@@ -15,6 +19,33 @@ class DatabaseFileViewModel(application: Application) : AndroidViewModel(applica
mFileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(application.applicationContext)
}
val isDefaultDatabase: MutableLiveData<Boolean> by lazy {
MutableLiveData<Boolean>()
}
fun checkIfIsDefaultDatabase(databaseUri: Uri) {
IOActionTask(
{
(UriUtil.parse(PreferencesUtil.getDefaultDatabasePath(getApplication<App>().applicationContext))
== databaseUri)
},
{
isDefaultDatabase.value = it
}
).execute()
}
fun removeDefaultDatabase() {
IOActionTask(
{
PreferencesUtil.saveDefaultDatabasePath(getApplication<App>().applicationContext,
null)
},
{
}
).execute()
}
val databaseFileLoaded: MutableLiveData<DatabaseFile> by lazy {
MutableLiveData<DatabaseFile>()
}

View File

@@ -1,7 +1,6 @@
package com.kunzisoft.keepass.viewmodels
import android.app.Application
import android.app.backup.BackupManager
import android.net.Uri
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.MutableLiveData
@@ -42,11 +41,8 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic
fun setDefaultDatabase(databaseFile: DatabaseFile?) {
IOActionTask(
{
val context = getApplication<App>().applicationContext
UriUtil.parse(PreferencesUtil.getDefaultDatabasePath(context))
PreferencesUtil.saveDefaultDatabasePath(context, databaseFile?.databaseUri)
val backupManager = BackupManager(context)
backupManager.dataChanged()
PreferencesUtil.saveDefaultDatabasePath(getApplication<App>().applicationContext,
databaseFile?.databaseUri)
},
{
checkDefaultDatabase()

View File

@@ -129,7 +129,7 @@ void throwExceptionF(JNIEnv *env, jclass exception, const char *format, ...) {
JNIEXPORT jbyteArray
JNICALL Java_com_kunzisoft_keepass_crypto_keyDerivation_Argon2Native_nTransformMasterKey(JNIEnv *env,
jobject this, jbyteArray password, jbyteArray salt, jint parallelism, jint memory,
jobject this, jint type, jbyteArray password, jbyteArray salt, jint parallelism, jint memory,
jint iterations, jbyteArray secretKey, jbyteArray associatedData, jint version) {
argon2_context context;
@@ -169,7 +169,7 @@ JNICALL Java_com_kunzisoft_keepass_crypto_keyDerivation_Argon2Native_nTransformM
context.flags = ARGON2_DEFAULT_FLAGS;
context.version = (uint32_t) version;
int argonResult = argon2_ctx(&context, Argon2_d);
int argonResult = argon2_ctx(&context, (argon2_type) type);
jbyteArray result;
if (argonResult != ARGON2_OK) {

View File

@@ -25,6 +25,7 @@
const char *argon2_type2string(argon2_type type, int uppercase) {
switch (type) {
default:
case Argon2_d:
return uppercase ? "Argon2d" : "argon2d";
case Argon2_i:

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="@dimen/advanced_unlock_size"
android:height="@dimen/advanced_unlock_size"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<path
android:fillColor="#fffbfb"
android:strokeWidth="1"
android:pathData="M 13 4 L 8 13 L 11.777344 13 L 11 20 L 16 11 L 12.222656 11 L 13 4 z" />
</group>
</vector>

View File

@@ -15,8 +15,8 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="@dimen/fingerprint_width"
android:height="@dimen/fingerprint_height"
android:width="@dimen/advanced_unlock_size"
android:height="@dimen/advanced_unlock_size"
android:viewportWidth="@integer/fingerprint_viewport_width"
android:viewportHeight="@integer/fingerprint_viewport_height">

View File

@@ -15,8 +15,8 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="@dimen/fingerprint_width"
android:height="@dimen/fingerprint_height"
android:width="@dimen/advanced_unlock_size"
android:height="@dimen/advanced_unlock_size"
android:viewportWidth="@integer/fingerprint_viewport_width"
android:viewportHeight="@integer/fingerprint_viewport_height">

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<group>
<path
android:fillColor="#f5f0f0"
android:strokeWidth="1"
android:pathData="M 12.099609 2 C 9.9496186 2 7.9107813 2.5192969 6.0507812 3.5292969 C 5.8107813 3.6592969 5.7196538 3.9709375 5.8496094 4.2109375 C 5.9896094 4.4509375 6.2892969 4.5401474 6.5292969 4.4101562 C 8.239288 3.4701563 10.119609 3 12.099609 3 C 13.817565 3 15.298631 3.3380125 16.904297 4.0605469 L 17.658203 3.3066406 C 15.801889 2.4224054 14.062357 2 12.099609 2 z M 20.630859 2.7929688 C 20.353595 2.7923499 20.076963 2.8957023 19.869141 3.1035156 L 3.6054688 19.367188 C 3.1898243 19.782837 3.1898065 20.478878 3.6054688 20.894531 C 4.0211132 21.310172 4.7171681 21.310181 5.1328125 20.894531 L 21.396484 4.6308594 C 21.812129 4.2152078 21.809482 3.5211096 21.394531 3.1054688 C 21.1867 2.8976421 20.908124 2.7935876 20.630859 2.7929688 z M 12.082031 4.4394531 C 10.290782 4.4419476 8.4996875 4.8501572 6.9296875 5.6601562 C 5.4296875 6.4301563 4.1696964 7.5296875 3.1796875 8.9296875 C 3.0196875 9.1596875 3.0707902 9.4708594 3.3007812 9.6308594 C 3.3907901 9.6908772 3.4897549 9.7207031 3.5898438 9.7207031 C 3.7498437 9.7207031 3.9004687 9.6497656 3.9804688 9.5097656 C 4.8804687 8.2497656 6.0208594 7.2507813 7.3808594 6.5507812 C 9.702879 5.3492128 12.551839 5.1405673 15.080078 5.8847656 L 15.886719 5.078125 C 14.672134 4.6548553 13.378189 4.4376481 12.082031 4.4394531 z M 12.050781 6.8203125 C 8.8207726 6.8203125 5.8690714 8.6299217 4.5390625 11.419922 C 4.0890714 12.369922 3.859375 13.460156 3.859375 14.660156 C 3.859375 15.410156 3.9419325 16.143623 4.0917969 16.873047 L 4.9453125 16.019531 C 4.8716574 15.480855 4.8496094 15.017564 4.8496094 14.660156 C 4.8496094 13.620156 5.049462 12.669375 5.4394531 11.859375 C 6.609462 9.409375 9.2107815 7.8300781 12.050781 7.8300781 C 12.394543 7.8300781 12.729451 7.8605876 13.060547 7.9042969 L 13.931641 7.0332031 C 13.326222 6.8985547 12.698935 6.8203125 12.050781 6.8203125 z M 20.158203 7.8769531 L 19.451172 8.5859375 C 19.705703 8.8667188 19.944922 9.1654687 20.169922 9.4804688 C 20.329922 9.7104775 20.639132 9.7596094 20.869141 9.5996094 C 21.099185 9.4396094 21.150234 9.1203906 20.990234 8.9003906 C 20.732029 8.5378633 20.452607 8.1983122 20.158203 7.8769531 z M 11.673828 9.2910156 C 8.7939582 9.4920753 6.5090655 11.751686 6.4375 14.527344 L 7.6914062 13.273438 C 8.128702 12.047606 9.1093977 11.060938 10.378906 10.585938 L 11.673828 9.2910156 z M 18.388672 9.6464844 L 17.675781 10.359375 C 18.68916 11.534094 19.300781 13.029838 19.300781 14.660156 C 19.300781 15.730156 18.370712 16.599609 17.220703 16.599609 C 16.070712 16.599609 15.140625 15.730156 15.140625 14.660156 C 15.140625 14.156975 14.994276 13.690121 14.759766 13.275391 L 14.017578 14.017578 C 14.091568 14.216693 14.140625 14.427975 14.140625 14.650391 C 14.140625 16.270391 15.520703 17.589844 17.220703 17.589844 C 18.920703 17.589844 20.300781 16.270391 20.300781 14.650391 C 20.300781 12.747816 19.580533 11.0042 18.388672 9.6464844 z M 16.607422 11.427734 L 15.894531 12.140625 C 16.429255 12.855101 16.75 13.721687 16.75 14.660156 C 16.75 14.940156 16.97 15.160156 17.25 15.160156 C 17.53 15.160156 17.75 14.940156 17.75 14.660156 C 17.75 13.447471 17.320928 12.329733 16.607422 11.427734 z M 12.609375 15.425781 L 11.791016 16.244141 C 12.154172 17.361118 12.886314 18.356772 13.910156 19.050781 C 14.770156 19.640781 15.819757 19.939453 17.009766 19.939453 C 17.149766 19.939453 17.650712 19.930321 18.220703 19.820312 C 18.500756 19.770313 18.680815 19.510234 18.630859 19.240234 C 18.58085 18.960243 18.320772 18.780087 18.050781 18.830078 C 17.650781 18.900087 17.249766 18.929687 17.009766 18.929688 C 16.009766 18.929688 15.180694 18.700703 14.470703 18.220703 C 13.475364 17.551704 12.819631 16.540198 12.609375 15.425781 z M 10.615234 17.419922 L 9.8652344 18.169922 C 10.203152 18.79111 10.634087 19.368244 11.150391 19.880859 C 12.240382 20.950859 13.279132 21.540469 14.869141 21.980469 C 14.909141 21.990513 14.96 22 15 22 C 15.210009 22 15.420748 21.849141 15.470703 21.619141 C 15.540694 21.359141 15.38915 21.079757 15.119141 21.009766 C 13.709149 20.619766 12.7996 20.100156 11.849609 19.160156 C 11.332157 18.646984 10.922915 18.056717 10.615234 17.419922 z M 8.796875 19.238281 L 8.0703125 19.964844 C 8.484727 20.580638 8.8928845 21.043281 9.4902344 21.640625 C 9.5802255 21.740643 9.7098882 21.789062 9.8398438 21.789062 C 9.9698525 21.789062 10.100893 21.740625 10.210938 21.640625 C 10.400928 21.440625 10.400928 21.129687 10.210938 20.929688 C 9.6271185 20.338294 9.2322832 19.910321 8.796875 19.238281 z" />
</group>
</group>
</vector>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<path
android:fillColor="#ffffff"
android:strokeWidth="1"
android:pathData="M 20.630859 2.7929688 C 20.353595 2.7923499 20.076963 2.8957023 19.869141 3.1035156 L 3.6054688 19.367188 C 3.1898243 19.782836 3.1898065 20.478878 3.6054688 20.894531 C 4.0211131 21.310172 4.7171681 21.310181 5.1328125 20.894531 L 21.396484 4.6308594 C 21.812129 4.2152078 21.809529 3.5211095 21.394531 3.1054688 C 21.1867 2.8976421 20.908124 2.7935875 20.630859 2.7929688 z M 7.3476562 7.0878906 C 5.9187852 7.0878906 4.6995509 7.5934125 3.6894531 8.6035156 C 2.6793376 9.613617 2.1738281 10.832842 2.1738281 12.261719 C 2.1738281 13.690597 2.6793376 14.909822 3.6894531 15.919922 C 3.9044307 16.134901 4.1332804 16.315077 4.3671875 16.484375 L 6.9179688 13.933594 C 6.6374532 13.856562 6.382535 13.708063 6.15625 13.472656 C 5.8188811 13.121739 5.6484375 12.715365 5.6484375 12.257812 C 5.6484375 11.798322 5.8188633 11.395839 6.15625 11.044922 C 6.4935833 10.694003 6.8901097 10.519531 7.3476562 10.519531 C 7.8071585 10.519531 8.2115844 10.69399 8.5625 11.044922 C 8.7983688 11.280792 8.9465641 11.543693 9.0234375 11.828125 L 11.59375 9.2578125 C 11.268148 8.7936982 10.868281 8.3824011 10.380859 8.0351562 C 9.4909753 7.4011759 8.4799229 7.0878906 7.3476562 7.0878906 z M 17.626953 10.521484 L 14.148438 14 L 16 14 L 16 17.433594 L 19.435547 17.433594 L 19.435547 13.998047 L 21.173828 13.998047 L 21.173828 10.521484 L 17.626953 10.521484 z" />
</group>
</vector>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<path
android:fillColor="#ffffff"
android:strokeWidth="1"
android:pathData="M 13 2 L 8 11 L 11.777344 11 L 11.427734 14.140625 C 11.493169 14.182534 11.563348 14.214452 11.626953 14.259766 C 11.988993 14.517689 12.304 14.824694 12.576172 15.164062 L 16 9 L 12.222656 9 L 13 2 z M 8.8125 14.375 C 7.7596432 14.375 6.861473 14.747902 6.1171875 15.492188 C 5.372902 16.236473 5 17.134643 5 18.1875 C 5 19.240357 5.372902 20.138527 6.1171875 20.882812 C 6.861473 21.627098 7.7596432 22 8.8125 22 C 9.6467855 22 10.391161 21.767924 11.046875 21.300781 C 11.702589 20.835067 12.159397 20.223035 12.417969 19.46875 L 15.1875 19.46875 L 15.1875 21.998047 L 17.71875 21.998047 L 17.71875 19.466797 L 19 19.466797 L 19 16.90625 L 12.417969 16.90625 C 12.159397 16.151965 11.702589 15.541361 11.046875 15.074219 C 10.391161 14.607076 9.6467855 14.375 8.8125 14.375 z M 8.8125 16.904297 C 9.1510713 16.904297 9.4484599 17.032444 9.7070312 17.291016 C 9.9656026 17.549587 10.09375 17.848404 10.09375 18.185547 C 10.09375 18.524118 9.9656026 18.821507 9.7070312 19.080078 C 9.4484599 19.338649 9.1496428 19.466797 8.8125 19.466797 C 8.4753572 19.466797 8.1821651 19.338649 7.9335938 19.080078 C 7.6850224 18.821507 7.5605469 18.52269 7.5605469 18.185547 C 7.5605469 17.846976 7.6850224 17.549587 7.9335938 17.291016 C 8.1821651 17.032444 8.4753572 16.904297 8.8125 16.904297 z" />
</group>
</vector>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<path
android:fillColor="#ffffff"
android:strokeWidth="4"
android:pathData="M 12.013672 2 C 9.8636722 2 7.8228902 2.5192969 5.9628906 3.5292969 C 5.7228906 3.6592969 5.6336719 3.9709375 5.7636719 4.2109375 C 5.9036719 4.4509375 6.2033598 4.5401564 6.4433594 4.4101562 C 8.1533594 3.4701563 10.033672 3 12.013672 3 C 14.003672 3 15.663984 3.4201562 17.583984 4.4101562 C 17.653984 4.4501563 17.7325 4.4707031 17.8125 4.4707031 C 17.9925 4.4707031 18.163906 4.3694531 18.253906 4.1894531 C 18.383906 3.9494531 18.292966 3.6495314 18.042969 3.5195312 C 16.002969 2.4695312 14.143672 2 12.013672 2 z M 11.994141 4.4394531 C 10.202891 4.4419531 8.41375 4.8501563 6.84375 5.6601562 C 5.3437504 6.4301562 4.08375 7.5296875 3.09375 8.9296875 C 2.93375 9.1596875 2.9828906 9.4708594 3.2128906 9.6308594 C 3.3028906 9.6908594 3.4039062 9.7207031 3.5039062 9.7207031 C 3.6639063 9.7207031 3.8125781 9.6497661 3.8925781 9.5097656 C 4.7925781 8.2497656 5.9329691 7.2507813 7.2929688 6.5507812 C 10.152968 5.0707812 13.823359 5.0690628 16.693359 6.5390625 C 18.043359 7.2290625 19.183984 8.2204686 20.083984 9.4804688 C 20.243984 9.7104688 20.553203 9.7596094 20.783203 9.5996094 C 21.013203 9.4396094 21.062344 9.1203906 20.902344 8.9003906 C 19.912344 7.5103906 18.652344 6.4203906 17.152344 5.6503906 C 15.577344 4.8403906 13.785391 4.4369531 11.994141 4.4394531 z M 11.962891 6.8203125 C 8.7328906 6.8203125 5.783125 8.6299218 4.453125 11.419922 C 4.003125 12.369922 3.7734375 13.460156 3.7734375 14.660156 C 3.7734375 15.178762 3.8211765 15.688064 3.8925781 16.195312 C 4.1040664 15.673217 4.3977156 15.185736 4.765625 14.751953 C 4.7654412 14.724103 4.7636719 14.686946 4.7636719 14.660156 C 4.7636719 13.620156 4.9635156 12.669375 5.3535156 11.859375 C 6.5235152 9.409375 9.1228906 7.8300781 11.962891 7.8300781 C 15.962891 7.8300781 19.212891 10.890156 19.212891 14.660156 C 19.212891 14.924852 19.155811 15.176176 19.052734 15.40625 L 20.097656 15.40625 C 20.165726 15.163649 20.212891 14.913124 20.212891 14.650391 C 20.212891 10.330391 16.512891 6.8203125 11.962891 6.8203125 z M 12.003906 9.2695312 C 9.3367169 9.2695312 7.098881 11.041343 6.5039062 13.410156 C 6.8827574 13.227092 7.280825 13.087302 7.6933594 12.998047 C 8.3905548 11.400109 10.058802 10.269531 12.003906 10.269531 C 14.573906 10.269531 16.664062 12.240156 16.664062 14.660156 C 16.664062 14.940156 16.884062 15.160156 17.164062 15.160156 C 17.444063 15.160156 17.664062 14.940156 17.664062 14.660156 C 17.664062 11.690156 15.123906 9.2695312 12.003906 9.2695312 z M 11.972656 11.720703 C 10.954724 11.720703 10.058942 12.198213 9.4980469 12.925781 C 9.880498 12.973891 10.253824 13.064358 10.615234 13.191406 C 10.980214 12.895424 11.45052 12.710937 11.972656 12.710938 C 13.122656 12.710938 14.052734 13.580391 14.052734 14.650391 C 14.052734 14.913124 14.099894 15.163649 14.167969 15.40625 L 15.214844 15.40625 C 15.111767 15.176176 15.052734 14.924852 15.052734 14.660156 C 15.052734 13.040156 13.672656 11.720703 11.972656 11.720703 z M 8.8125 14.375 C 7.7596432 14.375 6.861473 14.747902 6.1171875 15.492188 C 5.372902 16.236473 5 17.134643 5 18.1875 C 5 19.240357 5.372902 20.138527 6.1171875 20.882812 C 6.861473 21.627098 7.7596432 22 8.8125 22 C 9.6467855 22 10.391161 21.767924 11.046875 21.300781 C 11.702589 20.835067 12.159397 20.223035 12.417969 19.46875 L 15.1875 19.46875 L 15.1875 21.998047 L 17.71875 21.998047 L 17.71875 19.466797 L 19 19.466797 L 19 16.90625 L 12.417969 16.90625 C 12.159397 16.151965 11.702589 15.541361 11.046875 15.074219 C 10.391161 14.607076 9.6467855 14.375 8.8125 14.375 z M 8.8125 16.904297 C 9.1510713 16.904297 9.4484599 17.032444 9.7070312 17.291016 C 9.9656026 17.549587 10.09375 17.848404 10.09375 18.185547 C 10.09375 18.524118 9.9656026 18.821507 9.7070312 19.080078 C 9.4484599 19.338649 9.1496428 19.466797 8.8125 19.466797 C 8.4753572 19.466797 8.1821651 19.338649 7.9335938 19.080078 C 7.6850224 18.821507 7.5605469 18.52269 7.5605469 18.185547 C 7.5605469 17.846976 7.6850224 17.549587 7.9335938 17.291016 C 8.1821651 17.032444 8.4753572 16.904297 8.8125 16.904297 z" />
</group>
</vector>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<group>
<path
android:fillColor="#7D7D7D"
android:strokeWidth="1"
android:pathData="M 13 4 L 8 13 L 11.777344 13 L 11 20 L 16 11 L 12.222656 11 L 13 4 z" />
</group>
</vector>

View File

@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#7D7D7D"
android:pathData="M17.81,4.47c-0.08,0 -0.16,-0.02 -0.23,-0.06C15.66,3.42 14,3 12.01,3c-1.98,0 -3.86,0.47 -5.57,1.41 -0.24,0.13 -0.54,0.04 -0.68,-0.2 -0.13,-0.24 -0.04,-0.55 0.2,-0.68C7.82,2.52 9.86,2 12.01,2c2.13,0 3.99,0.47 6.03,1.52 0.25,0.13 0.34,0.43 0.21,0.67 -0.09,0.18 -0.26,0.28 -0.44,0.28zM3.5,9.72c-0.1,0 -0.2,-0.03 -0.29,-0.09 -0.23,-0.16 -0.28,-0.47 -0.12,-0.7 0.99,-1.4 2.25,-2.5 3.75,-3.27C9.98,4.04 14,4.03 17.15,5.65c1.5,0.77 2.76,1.86 3.75,3.25 0.16,0.22 0.11,0.54 -0.12,0.7 -0.23,0.16 -0.54,0.11 -0.7,-0.12 -0.9,-1.26 -2.04,-2.25 -3.39,-2.94 -2.87,-1.47 -6.54,-1.47 -9.4,0.01 -1.36,0.7 -2.5,1.7 -3.4,2.96 -0.08,0.14 -0.23,0.21 -0.39,0.21zM9.75,21.79c-0.13,0 -0.26,-0.05 -0.35,-0.15 -0.87,-0.87 -1.34,-1.43 -2.01,-2.64 -0.69,-1.23 -1.05,-2.73 -1.05,-4.34 0,-2.97 2.54,-5.39 5.66,-5.39s5.66,2.42 5.66,5.39c0,0.28 -0.22,0.5 -0.5,0.5s-0.5,-0.22 -0.5,-0.5c0,-2.42 -2.09,-4.39 -4.66,-4.39 -2.57,0 -4.66,1.97 -4.66,4.39 0,1.44 0.32,2.77 0.93,3.85 0.64,1.15 1.08,1.64 1.85,2.42 0.19,0.2 0.19,0.51 0,0.71 -0.11,0.1 -0.24,0.15 -0.37,0.15zM16.92,19.94c-1.19,0 -2.24,-0.3 -3.1,-0.89 -1.49,-1.01 -2.38,-2.65 -2.38,-4.39 0,-0.28 0.22,-0.5 0.5,-0.5s0.5,0.22 0.5,0.5c0,1.41 0.72,2.74 1.94,3.56 0.71,0.48 1.54,0.71 2.54,0.71 0.24,0 0.64,-0.03 1.04,-0.1 0.27,-0.05 0.53,0.13 0.58,0.41 0.05,0.27 -0.13,0.53 -0.41,0.58 -0.57,0.11 -1.07,0.12 -1.21,0.12zM14.91,22c-0.04,0 -0.09,-0.01 -0.13,-0.02 -1.59,-0.44 -2.63,-1.03 -3.72,-2.1 -1.4,-1.39 -2.17,-3.24 -2.17,-5.22 0,-1.62 1.38,-2.94 3.08,-2.94 1.7,0 3.08,1.32 3.08,2.94 0,1.07 0.93,1.94 2.08,1.94s2.08,-0.87 2.08,-1.94c0,-3.77 -3.25,-6.83 -7.25,-6.83 -2.84,0 -5.44,1.58 -6.61,4.03 -0.39,0.81 -0.59,1.76 -0.59,2.8 0,0.78 0.07,2.01 0.67,3.61 0.1,0.26 -0.03,0.55 -0.29,0.64 -0.26,0.1 -0.55,-0.04 -0.64,-0.29 -0.49,-1.31 -0.73,-2.61 -0.73,-3.96 0,-1.2 0.23,-2.29 0.68,-3.24 1.33,-2.79 4.28,-4.6 7.51,-4.6 4.55,0 8.25,3.51 8.25,7.83 0,1.62 -1.38,2.94 -3.08,2.94s-3.08,-1.32 -3.08,-2.94c0,-1.07 -0.93,-1.94 -2.08,-1.94s-2.08,0.87 -2.08,1.94c0,1.71 0.66,3.31 1.87,4.51 0.95,0.94 1.86,1.46 3.27,1.85 0.27,0.07 0.42,0.35 0.35,0.61 -0.05,0.23 -0.26,0.38 -0.47,0.38z" />
</vector>

View File

@@ -51,7 +51,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/biometric_message"
tools:text="@string/biometric_prompt_store_credential_title"
tools:text="@string/advanced_unlock_prompt_store_credential_title"
style="@style/KeepassDXStyle.TextAppearance.Default.TextOnPrimary"
android:textSize="14sp"
android:gravity="center" />

View File

@@ -68,17 +68,10 @@
android:padding="0dp"
android:contentDescription="@string/about"
android:src="@drawable/ic_launcher_foreground"/>
<FrameLayout
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_advanced_unlock_container_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.kunzisoft.keepass.view.AdvancedUnlockInfoView
android:id="@+id/biometric_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="?attr/colorPrimary"
android:visibility="gone"/>
</FrameLayout>
android:layout_height="match_parent" />
</FrameLayout>
<androidx.appcompat.widget.Toolbar

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.kunzisoft.keepass.view.AdvancedUnlockInfoView
android:id="@+id/advanced_unlock_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="?attr/colorPrimary"
android:visibility="gone"/>
</FrameLayout>

View File

@@ -19,9 +19,9 @@
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_biometric_remove_key"
android:icon="@drawable/ic_fingerprint_remove_white_24dp"
android:title="@string/menu_biometric_remove_key"
<item android:id="@+id/menu_keystore_remove_key"
android:icon="@drawable/ic_keystore_remove_white_24dp"
android:title="@string/menu_keystore_remove_key"
android:orderInCategory="85"
app:showAsAction="ifRoom" />
</menu>

View File

@@ -73,7 +73,6 @@
<string name="menu_lock">اقفل قاعدة البيانات</string>
<string name="menu_open">فتح</string>
<string name="menu_search">البحث</string>
<string name="menu_biometric_remove_key">إزالة بصمة المفتاح</string>
<string name="minus">ناقص</string>
<string name="never">أبداً</string>
<string name="no_results">لا توجد نتائج للبحث</string>
@@ -104,7 +103,6 @@
<string name="warning_no_encryption_key">هل أنت متأكد من أنك لا تريد استخدام أي مفتاح تشفير ؟</string>
<string name="version_label">الإصدار %1$s</string>
<string name="education_new_node_title">أضف عناصر جديدة إلى قاعدتك</string>
<string name="education_biometric_title">قم بفتح قاعدة بياناتك ببصمتك</string>
<string name="education_entry_new_field_title">إضافة حقول مخصصة</string>
<string name="education_field_copy_title">نسخ حقل</string>
<string name="education_lock_title">تأمين قاعدة البيانات</string>
@@ -115,7 +113,7 @@
<string name="key_derivation_function">وظيفة اشتقاق المفتاح</string>
<string name="app_timeout">مهلة التطبيق</string>
<string name="app_timeout_summary">مدة الانتظار قبل إقفال قاعدة البيانات</string>
<string name="file_manager_install_description">تصفَّح الملفات بتثبيت مدير الملفات OpenIntents</string>
<string name="file_manager_install_description">المحرر الذي يقبل هاذا الفعل ACTION_CREATE_DOCUMENT و ACTION_OPEN_DOCUMENT ضروري لانتاج, فتح وحفض ملفات قاعدة البيانات.</string>
<string name="clipboard_error">بعض الأجهزة لا تسمح للتطبيقات باستعمال الحافظة.</string>
<string name="clipboard_timeout">مهلة الحافظة</string>
<string name="clipboard_timeout_summary">مدة التخزين في الحافظة(إذا كان جهازك يدعمها)</string>
@@ -189,11 +187,7 @@
<string name="unavailable_feature_version">نسخة الاندرويد %1$s لا تحقق ادنى متطلبات السنخة %2$s.</string>
<string name="file_name">اسم الملف</string>
<string name="path">مسار</string>
<string name="open_biometric_prompt_unlock_database">فحص البصمة</string>
<string name="biometric_invalid_key">لا يمكن قراءة مفتاح البصمة.
\nاستعد كلمة السر.</string>
<string name="biometric_not_recognized">لم يتعرّف على البصمة</string>
<string name="open_biometric_prompt_store_credential">استخدم البصمة لحفظ كلمة السر</string>
<string name="database_history">تأريخ</string>
<string name="clipboard_notifications_summary">مكن اشعارات الحافظة لنسخ الحقول</string>
<string name="advanced_unlock">البصمة</string>
@@ -291,7 +285,7 @@
<string name="otp_algorithm">الخوارزمية</string>
<string name="otp_digits">أرقام</string>
<string name="otp_counter">العداد</string>
<string name="entry_setup_otp">عين كلمة المرور للمرة الواحدة</string>
<string name="entry_setup_otp">كلمة المرور للمرة الواحدة</string>
<string name="entry_UUID">UUID</string>
<string name="html_about_contribution">من أجل &lt;strong&gt;حماية خصوصيتا&lt;/strong&gt;٫&lt;strong&gt; إصلاح العلل&lt;/strong&gt;٫ &lt;strong&gt;إضافة مميزات&lt;/strong&gt; &lt;strong&gt;وجعلنا نشطاء دائما&lt;/strong&gt;٫ نحن نعتمد على &lt;strong&gt;مساهمتك&lt;/strong&gt;.</string>
<string name="content_description_keyfile_checkbox">خانة تأشير الملف المفتاحي</string>
@@ -326,10 +320,6 @@
<string name="contribution">مساهمة</string>
<string name="contact">"‮تواصل معنا "</string>
<string name="biometric">البصمة</string>
<string name="credential_before_click_biometric_button">اكتب كلمة السر ، ثم انقر زر \"البصمة\".</string>
<string name="biometric_scanning_error">خطأ بالبصمة: %1$s</string>
<string name="biometric_prompt_extract_credential_title">افتح قاعدة البيانات بالبصمة</string>
<string name="biometric_prompt_store_credential_title">احفظ البصمة</string>
<string name="warning_empty_keyfile_explanation">يجب ألا تغير محتوى ملف المفتاح، في أحسن الحالات يجب أن يحتوي بيانات مولدة عشوائيا.</string>
<string name="warning_empty_keyfile">من غير المستحسن اضافة ملف مفتاح فارغ.</string>
<string name="warning_sure_remove_data">أزل هذه البيانات عل أي حال؟</string>
@@ -350,7 +340,6 @@
<string name="database_data_compression_title">ضغط البيانات</string>
<string name="data">البيانات</string>
<string name="unavailable_feature_hardware">تعذر العثور على ماسح البصمة.</string>
<string name="biometric_delete_all_key_warning">هل تريد حذف كل مفاتيح التشفير المرتبطة بالبصمة؟</string>
<string name="biometric_delete_all_key_summary">احذف كل مفاتيح التشفير المرتبطة بالبصمة</string>
<string name="advanced_unlock_explanation_summary">استخدم إلغاء القفل المتقدم لفتح قاعدة البيانات بسهولة</string>
<string name="lock_database_show_button_summary">يعرض زر القَفل في الواجهة</string>
@@ -361,7 +350,7 @@
<string name="database_opened">قاعدة البيانات مفتوحة</string>
<string name="autofill_preference_title">إعدادات الملء التلقائي</string>
<string name="education_entry_edit_title">حرر المدخلة</string>
<string name="education_biometric_summary">لفتح قاعدة البيانات بسرعة اربط كلمة المرور بالبصمة.</string>
<string name="education_advanced_unlock_summary">لفتح قاعدة البيانات بسرعة اربط كلمة المرور بالبصمة.</string>
<string name="education_search_summary">لإيجاد كلمة المرور، أدخل العنوان أو اسم المستخدم أو محتوى أحد الحقول.</string>
<string name="education_new_node_summary">المدخلات لإدارة معرفاتك الرقمية.
\n
@@ -394,8 +383,6 @@
<string name="magic_keyboard_explanation_summary">نشِّط لوحة مفاتيح مخصصة لملأ كلمة السر وحقول معرّفك</string>
<string name="biometric_auto_open_prompt_summary">اطلب فحص البصمة ان كانت قاعدة البيانات معدّة لذلك</string>
<string name="biometric_auto_open_prompt_title">افتح محث البصمة تلقائيا</string>
<string name="biometric_prompt_extract_credential_message">استخرج بيانات الاعتماد لقاعدة البيانات بالبصمة</string>
<string name="biometric_prompt_store_credential_message">تحذير: مازلت بحاجة لتذكر المفتاح الرئيسي عند استخدامك للبصمة.</string>
<string name="keystore_not_accessible">لم يُهيأ مخزن المفاتيح بشكل صحيح.</string>
<string name="warning_remove_unlinked_attachment">حذف البيانات سيقلل من حجم قاعدة البيانات لكن احذر أن تكون إحدى هذه البيانات ملحقة لكي-باس.</string>
<string name="subdomain_search_summary">ابحث عن النطاقات في النطاقات الفرعية</string>

View File

@@ -24,7 +24,6 @@
<string name="menu_open_file_read_and_write">Izmenjivo</string>
<string name="menu_file_selection_read_only">Zaštićeno od upisivanja</string>
<string name="menu_url">Idi na URL adresu</string>
<string name="menu_biometric_remove_key">Izbriši sačuvani biometrijski ključ</string>
<string name="menu_showpass">Prikaži lozinku</string>
<string name="menu_search">Traži</string>
<string name="menu_open">Otvori</string>
@@ -194,7 +193,6 @@
<string name="unavailable_feature_hardware">Nije moguće pronaći odgovarajući hardver.</string>
<string name="unavailable_feature_version">Uređaj koristi Android verziju %1$s, ali potrebana verzija je %2$s ili novija.</string>
<string name="unavailable_feature_text">Nije moguće pokrenuti ovu funkciju.</string>
<string name="biometric_delete_all_key_warning">Izbriši sve ključeve za šifrovanje koji se odnose na biometrijsko prepoznavanje\?</string>
<string name="biometric_delete_all_key_summary">Izbriši sve ključeve za šifrovanje koji se odnose na biometrijsko prepoznavanje</string>
<string name="biometric_delete_all_key_title">Brisanje ključeva za šifrovanje</string>
<string name="biometric_auto_open_prompt_summary">Automatski zatraži biometriju ako je baza podataka podešena da je koristi</string>

View File

@@ -193,10 +193,7 @@
<string name="biometric">Biomètric</string>
<string name="menu_appearance_settings">Apariència</string>
<string name="database_history">Història</string>
<string name="credential_before_click_biometric_button">Escriviu la contrasenya abans de fer clic en el botó biomètric.</string>
<string name="encrypted_value_stored">Contrasenya xifrada desada</string>
<string name="biometric_prompt_extract_credential_title">Obri la base de dades amb reconeixement biomètric</string>
<string name="biometric_prompt_store_credential_message">Alerta: Heu de recordar la vostra contrasenya mestra encara que feu servir el reconeixement biomètrica.</string>
<string name="warning_permanently_delete_nodes">Voleu suprimir definitivament els nodes seleccionats\?</string>
<string name="warning_no_encryption_key">Voleu continuar sense contrasenya de xifrat\?</string>
<string name="warning_database_link_revoked">L\'accés al fitxer ha estat revocat pel gestor de fitxers</string>
@@ -232,7 +229,6 @@
<string name="menu_empty_recycle_bin">Buida la paperera</string>
<string name="menu_open_file_read_and_write">Modificable</string>
<string name="menu_file_selection_read_only">Protegit contra escriptura</string>
<string name="menu_biometric_remove_key">Suprimeix la clau biomètrica desada</string>
<string name="menu_save_database">Desa la base de dades</string>
<string name="menu_cancel">Cancel·la</string>
<string name="menu_paste">Enganxa</string>

View File

@@ -69,7 +69,7 @@
<string name="error_pass_match">Zadaná hesla se neshodují.</string>
<string name="error_rounds_too_large">Příliš vysoký „Počet průchodů“. Nastavuji na 2147483648.</string>
<string name="error_string_key">Je třeba, aby každý řetězec měl název kolonky.</string>
<string name="error_wrong_length">Do nastavení „Délka“ zadejte celé kladné číslo.</string>
<string name="error_wrong_length">Do pole „Délka“ zadejte celé kladné číslo.</string>
<string name="field_name">Název pole</string>
<string name="field_value">Hodnota pole</string>
<string name="file_browser">Správce souborů</string>
@@ -169,7 +169,6 @@
<string name="menu_move">Přesunout</string>
<string name="menu_paste">Vložit</string>
<string name="menu_cancel">Storno</string>
<string name="menu_biometric_remove_key">Smazat uložený biometrický klíč</string>
<string name="menu_file_selection_read_only">Chráněno před zápisem</string>
<string name="menu_open_file_read_and_write">Čtení a zápis</string>
<string name="read_only">Chráněno před zápisem</string>
@@ -192,12 +191,7 @@
<string name="warning_password_encoding">Nepoužívejte v hesle pro databázový soubor znaky mimo znakovou sadu Latin-1 (nepoužívejte znaky s diakritikou).</string>
<string name="warning_empty_password">Pokračovat bez ochrany odemknutím heslem\?</string>
<string name="warning_no_encryption_key">Pokračovat bez šifrovacího klíče\?</string>
<string name="open_biometric_prompt_unlock_database">Otevřít biometrickou pobídku k otevření databáze</string>
<string name="encrypted_value_stored">Šifrované heslo uloženo</string>
<string name="biometric_invalid_key">Nelze načíst biometrický klíč. Prosím, smažte jej a opakujte proceduru biometrického rozpoznání.</string>
<string name="biometric_not_recognized">Biometrický prvek nerozpoznán</string>
<string name="biometric_scanning_error">Chyba s biometrickým prvkem: %1$s</string>
<string name="open_biometric_prompt_store_credential">Otevři biometrickou pobídku k uložení hesel</string>
<string name="no_credentials_stored">Tato databáze zatím nemá uložené heslo.</string>
<string name="database_history">Historie</string>
<string name="menu_appearance_settings">Vzhled</string>
@@ -218,12 +212,11 @@
<string name="lock">Zamknout</string>
<string name="lock_database_screen_off_title">Zámek obrazovky</string>
<string name="lock_database_screen_off_summary">Při zhasnutí obrazovky uzamknout databázi</string>
<string name="advanced_unlock">Pokročilé odemčení</string>
<string name="advanced_unlock">Rozšířené odemknutí</string>
<string name="biometric_unlock_enable_title">Biometrické odemčení</string>
<string name="biometric_unlock_enable_summary">Nechá otevřít databázi snímáním biometrického údaje</string>
<string name="biometric_delete_all_key_title">Smazat šifrovací klíče</string>
<string name="biometric_delete_all_key_summary">Smazat všechny šifrovací klíče související s biometrickým rozlišením</string>
<string name="biometric_delete_all_key_warning">Smazat všechny šifrovací klíče související s biometrickým rozlišením\?</string>
<string name="biometric_delete_all_key_summary">Smazat všechny šifrovací klíče související s rozpoznáním rozšířeného odemknutí</string>
<string name="unavailable_feature_text">Tuto funkci se nedaří spustit.</string>
<string name="unavailable_feature_version">V zařízení je instalován Android %1$s, ale potřebná je verze %2$s a novější.</string>
<string name="unavailable_feature_hardware">Hardware nebyl rozpoznán.</string>
@@ -242,7 +235,7 @@
<string name="database_description_title">Popis databáze</string>
<string name="database_version_title">Verze databáze</string>
<string name="text_appearance">Text</string>
<string name="application_appearance">Aplikace</string>
<string name="application_appearance">Rozhraní</string>
<string name="other">Ostatní</string>
<string name="keyboard">Klávesnice</string>
<string name="magic_keyboard_title">Magikeyboard</string>
@@ -266,8 +259,6 @@
\nSkupiny (ekvivalent složek) organizují záznamy v databázi.</string>
<string name="education_search_title">Hledejte v položkách</string>
<string name="education_search_summary">Zadejte název, uživatelské jméno nebo jiné položky k nalezení svých hesel.</string>
<string name="education_biometric_title">Odemknutí databáze biometricky</string>
<string name="education_biometric_summary">Propojte své heslo s načtenou biometrikou pro rychlé odemknutí databáze.</string>
<string name="education_entry_edit_title">Upravit položku</string>
<string name="education_entry_edit_summary">Přidejte ke své položce vlastní kolonky. Společná data mohou být sdílena mezi více různými kolonkami.</string>
<string name="education_generate_password_title">Vytvořit silné heslo</string>
@@ -276,10 +267,10 @@
<string name="education_entry_new_field_summary">Registrovat další kolonku, zadat hodnotu a volitelně ji ochránit.</string>
<string name="education_unlock_title">Odemknout databázi</string>
<string name="education_read_only_title">Ochraňte svou databázi před zápisem</string>
<string name="education_read_only_summary">Změnit režim otevírání pro dané sezení.
\n
\nV režimu pouze pro čtení zabráníte nechtěným změnám do databáze.
\n V režimu zápisu je možné přidávat, mazat nebo měnit všechny prvky dle libosti.</string>
<string name="education_read_only_summary">Změnit režim otevírání pro dané sezení.
\n
\nV režimu \"pouze pro čtení\" zabráníte nechtěným změnám do databáze.
\nV režimu \"zápisu\" je možné přidávat, mazat nebo měnit všechny prvky podle libosti.</string>
<string name="education_field_copy_title">Zkopírujte kolonku</string>
<string name="education_field_copy_summary">Zkopírované kolonky lze vkládat kam chcete
\n
@@ -300,12 +291,11 @@
<string name="html_text_dev_feature_encourage">povzbudíte vývojáře k přidávání &lt;strong&gt;nových funkcí&lt;/strong&gt; a &lt;strong&gt;opravování chyb&lt;/strong&gt; dle vašich připomínek.</string>
<string name="html_text_dev_feature_thanks">Mnohé díky za vaše přispění.</string>
<string name="html_text_dev_feature_work_hard">Tvrdě pracujeme na brzkém vydání této funkce.</string>
<string name="html_text_dev_feature_upgrade">Nezapomeňte aplikaci aktualizovat instalováním nových verzí.</string>
<string name="html_text_dev_feature_upgrade">Pamatujte na aktualizaci aplikace instalováním nových verzí.</string>
<string name="download">Stáhnout</string>
<string name="contribute">Zapojit se</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Vzhled aplikace</string>
<string name="style_choose_summary">Motiv vzhledu aplikace</string>
<string name="icon_pack_choose_title">Sada ikon</string>
@@ -363,14 +353,10 @@
<string name="content_description_update_from_list">Aktualizovat</string>
<string name="content_description_keyboard_close_fields">Zavři kolonky</string>
<string name="error_create_database_file">Nelze vytvořit databázi s tímto heslem a klíčem ze souboru.</string>
<string name="menu_advanced_unlock_settings">Pokročilé odemčení</string>
<string name="biometric_prompt_store_credential_title">Uložit biometrické rozlišení</string>
<string name="biometric_prompt_store_credential_message">VAROVÁNÍ: I s použitím biometrického rozlišení budete muset znát své hlavní heslo.</string>
<string name="biometric_prompt_extract_credential_title">Otevřít databázi skrze biometrické rozlišení</string>
<string name="biometric_prompt_extract_credential_message">Vytáhnout heslo databáze biometrickými daty</string>
<string name="menu_advanced_unlock_settings">Rozšířené odemknutí</string>
<string name="biometric">Biometrika</string>
<string name="biometric_auto_open_prompt_title">Automaticky otevřít biometrickou pobídku</string>
<string name="biometric_auto_open_prompt_summary">Automaticky žádat biometriku, je-li databáze nastavena k jejímu použití</string>
<string name="biometric_auto_open_prompt_title">Automaticky otevřít pobídku</string>
<string name="biometric_auto_open_prompt_summary">Automaticky žádat rozšířené odemknutí, je-li databáze nastavena k jejímu použití</string>
<string name="enable">Zapnout</string>
<string name="disable">Vypnout</string>
<string name="master_key">Hlavní klíč</string>
@@ -399,7 +385,7 @@
<string name="contains_duplicate_uuid_procedure">Opravit chybu založením nového UUID pro duplikáty a pokračovat\?</string>
<string name="database_opened">Databáze otevřena</string>
<string name="clipboard_explanation_summary">Kopírujte pole záznamů pomocí schránky Vašeho zařízení</string>
<string name="advanced_unlock_explanation_summary">K snadnějšímu otevření databáze použijte pokročilé odemknutí</string>
<string name="advanced_unlock_explanation_summary">K snadnějšímu otevření databáze použijte rozšířené odemknutí</string>
<string name="database_data_compression_title">Komprese dat</string>
<string name="database_data_compression_summary">Komprese dat snižuje velikost databáze</string>
<string name="max_history_items_title">Maximální počet</string>
@@ -424,7 +410,6 @@
<string name="command_execution">Provádím příkaz…</string>
<string name="warning_permanently_delete_nodes">Natrvalo smazat vybrané uzly\?</string>
<string name="keystore_not_accessible">Úložiště klíčů není řádně inicializováno.</string>
<string name="credential_before_click_biometric_button">Zadejte heslo a pak klikněte na tlačítko \"Biometrika\".</string>
<string name="recycle_bin_group_title">Skupina Koš</string>
<string name="enable_auto_save_database_title">Uložit databázi automaticky</string>
<string name="enable_auto_save_database_summary">Uložit databázi po každé důležité akci (v režimu \"Zápis\")</string>
@@ -505,4 +490,58 @@
<string name="database_data_remove_unlinked_attachments_summary">Odstraní přílohy obsažené v databázi, ale nikoli přílohy propojené se záznamem</string>
<string name="education_add_attachment_title">Přidat přílohu</string>
<string name="education_add_attachment_summary">Nahrát přílohu k záznamu pro uložení důležitých externích dat.</string>
<string name="show_uuid_summary">Ukáže UUID propojené se záznamem</string>
<string name="show_uuid_title">Ukázat UUID</string>
<string name="autofill_read_only_save">Uložení dat není povoleno, je-li databáze v režimu pouze pro čtení.</string>
<string name="autofill_ask_to_save_data_summary">Zeptat se na uložení dat, jakmile byl formulář přezkoušen</string>
<string name="autofill_ask_to_save_data_title">Zeptat se před uložením</string>
<string name="autofill_save_search_info_summary">Pokuste se uložit údaje hledání, když manuálně vybíráte položku</string>
<string name="autofill_save_search_info_title">Uložit info hledání</string>
<string name="autofill_close_database_summary">Zavřít databázi po samodoplnění polí</string>
<string name="autofill_close_database_title">Zavřít databázi</string>
<string name="keyboard_previous_lock_summary">Po uzamknutí databáze automaticky přepnout zpět na předchozí klávesnici</string>
<string name="keyboard_previous_lock_title">Uzamknout databázi</string>
<string name="keyboard_save_search_info_summary">Pokuste se uložit sdílené info, když manuálné vybíráte položku</string>
<string name="keyboard_save_search_info_title">Uložit sdílené info</string>
<string name="notification">Oznámení</string>
<string name="biometric_security_update_required">Vyžadována aktualizace biometrického zabezpečení.</string>
<string name="configure_biometric">Žádné přihlašovací ani biometrické údaje nejsou registrovány.</string>
<string name="warning_empty_recycle_bin">Trvale odstranit všechny položky z koše\?</string>
<string name="registration_mode">Režim registrace</string>
<string name="save_mode">Režim ukládání</string>
<string name="search_mode">Režim vyhledávání</string>
<string name="error_field_name_already_exists">Jméno položky již existuje.</string>
<string name="error_registration_read_only">Uložení nové položky v režimu databáze pouze pro čtení není povoleno</string>
<string name="enter">Enter</string>
<string name="backspace">Backspace</string>
<string name="select_entry">Vybrat záznam</string>
<string name="back_to_previous_keyboard">Zpět na předchozí klávesnici</string>
<string name="custom_fields">Vlastní položky</string>
<string name="advanced_unlock_delete_all_key_warning">Smazat všechny šifrovací klíče související s rozpoznáním rozšířeného odemknutí\?</string>
<string name="device_credential_unlock_enable_summary">Dovolí pro otevření databáze použít heslo Vašeho zařízení</string>
<string name="device_credential_unlock_enable_title">Odemknutí heslem zařízení</string>
<string name="device_credential">Heslo zařízení</string>
<string name="credential_before_click_advanced_unlock_button">Zadejte heslo a klikněte na tlačítko \"Rozšířené odemknutí\".</string>
<string name="advanced_unlock_prompt_not_initialized">Nelze inicializovat pobídku pro rozšířené odemknutí.</string>
<string name="advanced_unlock_scanning_error">Chyba při rozšířeném odemknutí: %1$s</string>
<string name="advanced_unlock_not_recognized">Otisk pro rozšířené odemknutí nebyl rozpoznán</string>
<string name="advanced_unlock_invalid_key">Nelze načíst klíč rozšířeného odemknutí. Prosím, smažte jej a opakujte proces rozpoznání odemknutí.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Načíst důvěrný údaj pomocí dat rozšířeného odemknutí</string>
<string name="advanced_unlock_prompt_extract_credential_title">Otevřít databázi pomocí rozpoznání rozšířeného odemknutí</string>
<string name="advanced_unlock_prompt_store_credential_message">Varování: Pokud použijete rozpoznání rozšířeného odemknutí, musíte si i nadále pamatovat hlavní heslo.</string>
<string name="advanced_unlock_prompt_store_credential_title">Rozpoznání rozšířeného odemknutí</string>
<string name="open_advanced_unlock_prompt_store_credential">Pro uložení důvěrných údajů otevřete pobídku rozšířeného odemknutí</string>
<string name="open_advanced_unlock_prompt_unlock_database">Pro odemknutí databáze otevřete pobídku rozšířeného odemknutí</string>
<string name="menu_keystore_remove_key">Smazat klíč rozšířeného odemknutí</string>
<string name="education_advanced_unlock_title">Rozšířené odemknutí databáze</string>
<string name="advanced_unlock_timeout">Timeout rozšířeného odemknutí</string>
<string name="temp_advanced_unlock_timeout_summary">Trvání použití rozšířeného odemknutí než bude obsah téhož smazán</string>
<string name="temp_advanced_unlock_enable_summary">Za účelem rozšířeného odemknutí neukládat žádný šifrovaný obsah</string>
<string name="temp_advanced_unlock_enable_title">Přechodné rozšířené odemknutí</string>
<string name="advanced_unlock_tap_delete">Pro odstranění klíčů rozšířeného odemknutí klepnout</string>
<string name="kdf_Argon2id">Argon2id</string>
<string name="kdf_Argon2d">Argon2d</string>
<string name="education_advanced_unlock_summary">Abyste rychle odemknuli databázi, propojte své heslo s naskenovanou biometrikou nebo údaji zámku zařízení.</string>
<string name="temp_advanced_unlock_timeout_title">Vypršení pokročilého odemknutí</string>
<string name="content">Obsah</string>
</resources>

View File

@@ -35,7 +35,7 @@
<string name="clipboard_error">Nogle enheder, vil ikke lade programmer bruge udklipsholderen.</string>
<string name="clipboard_error_clear">Kunne ikke rydde udklipsholderen</string>
<string name="clipboard_timeout">Udklipsholder timeout</string>
<string name="clipboard_timeout_summary">Varighed af opbevaring i udklipsholder</string>
<string name="clipboard_timeout_summary">Varighed af opbevaring i udklipsholder (hvis det understøttes)</string>
<string name="select_to_copy">Vælg for at kopiere %1$s til udklipsholder</string>
<string name="retrieving_db_key">Opretter databasenøgle…</string>
<string name="database">Database</string>
@@ -168,7 +168,6 @@
<string name="menu_move">Flyt</string>
<string name="menu_paste">Indsæt</string>
<string name="menu_cancel">Annuller</string>
<string name="menu_biometric_remove_key">Slet gemt fingeraftryk</string>
<string name="menu_file_selection_read_only">Skrivebeskyttet</string>
<string name="menu_open_file_read_and_write">Modificerbar</string>
<string name="read_only">Skrivebeskyttet</string>
@@ -191,12 +190,7 @@
<string name="warning_password_encoding">Undgå adgangskodetegn uden for tekstkodningsformatet i databasefilen (ukendte tegn konverteres til samme bogstav).</string>
<string name="warning_empty_password">Bekræft brug af ingen adgangskode til beskyttelse mod oplåsning\?</string>
<string name="warning_no_encryption_key">Fortsæt uden krypteringsnøgle\?</string>
<string name="open_biometric_prompt_unlock_database">Åbn biometriske forespørgsel for at låse databasen op</string>
<string name="encrypted_value_stored">Krypteret adgangskode er gemt</string>
<string name="biometric_invalid_key">Kan ikke læse den biometriske nøgle. Slet den og gentag den biometriske genkendelsesprocedure.</string>
<string name="biometric_not_recognized">Kunne ikke genkende biometrisk</string>
<string name="biometric_scanning_error">Biometrisk fejl: %1$s</string>
<string name="open_biometric_prompt_store_credential">Åbn den biometriske prompt for at gemme legitimationsoplysninger</string>
<string name="no_credentials_stored">Databasen har endnu ikke en adgangskode.</string>
<string name="database_history">Historik</string>
<string name="menu_appearance_settings">Udseende</string>
@@ -212,7 +206,7 @@
<string name="list_password_generator_options_summary">Angiv tilladte tegn for adgangskodegenerator</string>
<string name="clipboard">Udklipsholder</string>
<string name="clipboard_notifications_title">Udklipsholdermeddelelser</string>
<string name="clipboard_notifications_summary">Aktivér udklipsholder for at kopiere felter når en post vises</string>
<string name="clipboard_notifications_summary">Vis udklipsholder for at kopiere felter når en post vises</string>
<string name="clipboard_warning">Hvis automatisk sletning af udklipsholder mislykkes, slet historikken manuelt.</string>
<string name="lock">Lås</string>
<string name="lock_database_screen_off_title">Skærmlås</string>
@@ -222,9 +216,8 @@
<string name="biometric_unlock_enable_summary">Giver mulighed for at scanne biometriske for at åbne databasen</string>
<string name="biometric_delete_all_key_title">Slet krypteringsnøgler</string>
<string name="biometric_delete_all_key_summary">Slet alle krypteringsnøgler, der er relateret til biometrisk genkendelse</string>
<string name="biometric_delete_all_key_warning">Slet alle krypteringsnøgler, der er relateret til biometrisk genkendelse\?</string>
<string name="unavailable_feature_text">Funktionen kunne ikke startes.</string>
<string name="unavailable_feature_version">Android-version %1$s opfylder ikke minimum versionskrav %2$s.</string>
<string name="unavailable_feature_version">Enheden kører Android %1$s, men har brug for %2$s eller nyere.</string>
<string name="unavailable_feature_hardware">Kunne ikke finde den tilsvarende hardware.</string>
<string name="file_name">Filnavn</string>
<string name="path">Sti</string>
@@ -247,13 +240,13 @@
<string name="magic_keyboard_title">Magikeyboard</string>
<string name="magic_keyboard_explanation_summary">Aktiver et brugerdefineret tastatur, der udfylder adgangskoder og alle identitetsfelter</string>
<string name="allow_no_password_title">Tillad ingen hovednøgle</string>
<string name="allow_no_password_summary">Aktiver knappen \"Åbn\", hvis der ikke er valgt nogen legitimationsoplysninger</string>
<string name="allow_no_password_summary">Tillader at trykke på knappen \"Åbn\", hvis der ikke er valgt nogen legitimationsoplysninger</string>
<string name="enable_read_only_title">Skrivebeskyttet</string>
<string name="enable_read_only_summary">Åbn database skrivebeskyttet som standard</string>
<string name="enable_education_screens_title">Pædagogiske tips</string>
<string name="enable_education_screens_summary">Fremhæv elementer for at lære, hvordan programmet fungerer</string>
<string name="reset_education_screens_title">Nulstil pædagogiske tip</string>
<string name="reset_education_screens_summary">Vis alle pædagogiske info igen</string>
<string name="reset_education_screens_summary">Vis al uddannelsesinformation igen</string>
<string name="reset_education_screens_text">Nulstilling af pædagogiske tips</string>
<string name="education_create_database_title">Opret databasefilen</string>
<string name="education_create_database_summary">Opret den første adgangskodeadministrationsfil.</string>
@@ -265,8 +258,6 @@
\nGrupper (~mapper) organiserer poster i databasen.</string>
<string name="education_search_title">Søg i poster</string>
<string name="education_search_summary">Indtast titel, brugernavn eller indhold af andre felter for at hente adgangskoder.</string>
<string name="education_biometric_title">Biometrisk oplåsning af databasen</string>
<string name="education_biometric_summary">Knyt adgangskoden til det scannede biometri for hurtigt at låse databasen op.</string>
<string name="education_entry_edit_title">Rediger posten</string>
<string name="education_entry_edit_summary">Rediger post med brugerdefinerede felter. Pool data kan refereres mellem forskellige indtastningsfelter.</string>
<string name="education_generate_password_title">Opret en stærk adgangskode</string>
@@ -304,7 +295,6 @@
<string name="contribute">Bidrag</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Tema</string>
<string name="style_choose_summary">Tema, der bruges i programmet</string>
<string name="icon_pack_choose_title">Ikonpakke</string>
@@ -364,10 +354,6 @@
<string name="content_description_keyboard_close_fields">Luk felter</string>
<string name="error_create_database_file">Kan ikke oprette database med denne adgangskode og nøglefil.</string>
<string name="menu_advanced_unlock_settings">Avanceret oplåsning</string>
<string name="biometric_prompt_store_credential_title">Gem biometrisk genkendelse</string>
<string name="biometric_prompt_store_credential_message">Advarsel: hovedadgangskoden skal stadig huskes, hvis der bruges biometrisk genkendelse.</string>
<string name="biometric_prompt_extract_credential_title">Åbn database med biometrisk genkendelse</string>
<string name="biometric_prompt_extract_credential_message">Uddrag databasens legitimationsoplysninger med biometriske data</string>
<string name="biometric">Biometrisk</string>
<string name="biometric_auto_open_prompt_title">Åbn automatisk biometrisk prompt</string>
<string name="biometric_auto_open_prompt_summary">Spørg automatisk efter biometri, hvis databasen er konfigureret til at bruge den</string>
@@ -424,7 +410,6 @@
<string name="command_execution">Udfører kommandoen…</string>
<string name="warning_permanently_delete_nodes">Slet markerede noder permanent\?</string>
<string name="keystore_not_accessible">Nøglelageret er ikke korrekt initialiseret.</string>
<string name="credential_before_click_biometric_button">Indtast adgangskoden, og klik derefter på knappen \"Biometrisk\".</string>
<string name="recycle_bin_group_title">Papirkurvsgruppe</string>
<string name="enable_auto_save_database_title">Gem automatisk database</string>
<string name="enable_auto_save_database_summary">Gem databasen efter hver en vigtig handling (i tilstanden \"Modificerbar\")</string>
@@ -448,10 +433,10 @@
<string name="html_about_contribution">For at &lt;strong&gt;holde vores frihed&lt;/strong&gt;, &lt;strong&gt;rette fejl&lt;/strong&gt;, &lt;strong&gt;tilføje funktioner&lt;/strong&gt; og &lt;strong&gt;at være altid aktiv&lt;/strong&gt;, regner vi med &lt;strong&gt;bidrag&lt;/strong&gt;.</string>
<string name="auto_focus_search_title">Hurtig søgning</string>
<string name="auto_focus_search_summary">Anmod om en søgning når en database åbnes</string>
<string name="remember_database_locations_title">Gem placering af databaser</string>
<string name="remember_database_locations_summary">Husk placeringen af databaser</string>
<string name="remember_keyfile_locations_title">Gem placering af nøglefiler</string>
<string name="remember_keyfile_locations_summary">Husker placeringen af databasernøglefiler</string>
<string name="remember_database_locations_title">Husk placeringer af databaser</string>
<string name="remember_database_locations_summary">Holder styr på, hvor databaserne gemmes</string>
<string name="remember_keyfile_locations_title">Husk placering af nøglefiler</string>
<string name="remember_keyfile_locations_summary">Holder styr på, hvor nøglefiler gemmes</string>
<string name="show_recent_files_title">Vis seneste filer</string>
<string name="show_recent_files_summary">Vis placeringer af de seneste databaser</string>
<string name="hide_broken_locations_title">Skjule brudte databaselinks</string>
@@ -464,7 +449,7 @@
<string name="discard">Kassér</string>
<string name="discard_changes">Kasser ændringer\?</string>
<string name="validate">Valider</string>
<string name="autofill_auto_search_summary">Foreslår automatisk søgeresultater fra webdomænet eller applikationsId</string>
<string name="autofill_auto_search_summary">Foreslår automatisk søgeresultater fra webdomænet eller applikations-id</string>
<string name="autofill_auto_search_title">Automatisk søgning</string>
<string name="lock_database_show_button_summary">Viser låseknappen i brugergrænsefladen</string>
<string name="lock_database_show_button_title">Vis låseknap</string>
@@ -479,10 +464,10 @@
<string name="autofill_web_domain_blocklist_title">Blokeringsliste for webdomæne</string>
<string name="autofill_application_id_blocklist_summary">Blokeringsliste der forhindrer automatisk udfyldning af programmer</string>
<string name="autofill_application_id_blocklist_title">Blokeringsliste for program</string>
<string name="keyboard_previous_fill_in_summary">Skift automatisk tilbage til det forrige tastatur efter udførelse af automatisk tastehandling</string>
<string name="keyboard_previous_fill_in_summary">Skift automatisk tilbage til det forrige tastatur efter udførelse af \"Automatisk tastehandling\"</string>
<string name="keyboard_previous_fill_in_title">Auto nøglehandling</string>
<string name="keyboard_previous_database_credentials_summary">Skift automatisk tilbage til det forrige tastatur på databasens legitimationsskærm</string>
<string name="keyboard_previous_database_credentials_title">Database legitimationsoplysninger skærm</string>
<string name="keyboard_previous_database_credentials_title">Skærmbilledet til databaselegitimationsoplysninger</string>
<string name="keyboard_change">Skifte tastatur</string>
<string name="filter">Filter</string>
<string name="subdomain_search_summary">Søg på webdomæner med begrænsninger på underdomæner</string>
@@ -506,8 +491,6 @@
<string name="database_data_remove_unlinked_attachments_summary">Fjerner vedhæftede filer indeholdt i databasen, men ikke knyttet til en post</string>
<string name="database_data_remove_unlinked_attachments_title">Fjern ikke-sammenkædede data</string>
<string name="data">Data</string>
<string name="crypto_object_not_initialized">Kryptoobjektet kunne ikke hentes.</string>
<string name="biometric_prompt_not_initialized">Biometrisk prompt kunne ikke initialiseres.</string>
<string name="biometric_security_update_required">Biometrisk sikkerhedsopdatering påkrævet.</string>
<string name="warning_empty_keyfile_explanation">Indholdet af nøglefilen bør aldrig ændres og bør i bedste fald indeholde tilfældigt genererede data.</string>
<string name="warning_empty_keyfile">Det anbefales ikke at tilføje en tom nøglefil.</string>
@@ -524,4 +507,9 @@
<string name="search_mode">Søgetilstand</string>
<string name="error_registration_read_only">Det er ikke tilladt at gemme et nyt element i en skrivebeskyttet database</string>
<string name="content_description_credentials_information">Oplysninger om legitimationsoplysninger</string>
<string name="configure_biometric">Der er ikke tilmeldt biometriske legitimationsoplysninger eller enhedsoplysninger.</string>
<string name="education_add_attachment_summary">Overfør en vedhæftet fil til posten for at gemme vigtige eksterne data.</string>
<string name="autofill_save_search_info_summary">Forsøger at gemme delte oplysninger, når der foretages et manuelt indtastningsvalg</string>
<string name="keyboard_save_search_info_summary">Forsøger at gemme delte oplysninger, når der foretages et manuelt indtastningsvalg</string>
<string name="error_field_name_already_exists">Feltnavnet findes allerede.</string>
</resources>

View File

@@ -22,7 +22,7 @@
Translations from David Ramiro
--><resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="contact">Kontakt</string>
<string name="contribution">Beitrag</string>
<string name="contribution">Beiträge</string>
<string name="feedback">Rückmeldung</string>
<string name="homepage">Webseite</string>
<string name="about_description">Android-Implementierung des Passwortmanagers KeePass</string>
@@ -43,9 +43,9 @@
<string name="clipboard_timeout">Zwischenablage-Timeout</string>
<string name="clipboard_timeout_summary">Dauer der Speicherung in der Zwischenablage (falls vom Gerät unterstützt)</string>
<string name="select_to_copy">%1$s in die Zwischenablage kopieren</string>
<string name="retrieving_db_key">Datenbank-Schlüsseldatei erzeugen…</string>
<string name="retrieving_db_key">Datenbank-Schlüsseldatei erzeugen </string>
<string name="database">Datenbank</string>
<string name="decrypting_db">Entschlüsselung der Datenbankinhalte…</string>
<string name="decrypting_db">Entschlüsselung der Datenbankinhalte </string>
<string name="default_checkbox">Als Standard-Datenbank verwenden</string>
<string name="digits">Zahlen</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft ist &lt;strong&gt;quelloffen&lt;/strong&gt; und &lt;strong&gt;ohne Werbung&lt;/strong&gt;.\nDie Nutzung der Software erfolgt auf eigene Verantwortung und ohne jegliche Garantie. Die Applikation wird unter den Bedingungen der &lt;strong&gt;GPLv3&lt;/strong&gt; lizenziert.</string>
@@ -97,7 +97,7 @@
<string name="length">Länge</string>
<string name="list_size_title">Größe der Listenelemente</string>
<string name="list_size_summary">Schriftgröße der Listenelemente</string>
<string name="loading_database">Datenbank wird geladen…</string>
<string name="loading_database">Datenbank wird geladen </string>
<string name="lowercase">Kleinbuchstaben</string>
<string name="hide_password_title">Passwort verstecken</string>
<string name="hide_password_summary">Passwörter standardmäßig mit (***) maskieren</string>
@@ -118,12 +118,12 @@
<string name="never">Nie</string>
<string name="no_results">Keine Suchergebnisse</string>
<string name="no_url_handler">Bitte einen Webbrowser installieren, um diese URL zu öffnen.</string>
<string name="omit_backup_search_title">Papierkorb/Backup nicht durchsuchen</string>
<string name="omit_backup_search_summary">Die Gruppen „Backup“ und „Papierkorb“ werden bei der Suche nicht berücksichtigt</string>
<string name="omit_backup_search_title">Recycle bin und Backup nicht durchsuchen</string>
<string name="omit_backup_search_summary">Die Gruppen „Backup“ und „Recycle bin“ werden bei der Suche nicht berücksichtigt</string>
<string name="auto_focus_search_title">Schnellsuche</string>
<string name="auto_focus_search_summary">Beim Öffnen einer Datenbank eine Suche veranlassen</string>
<string name="progress_create">Neue Datenbank anlegen…</string>
<string name="progress_title">Ausführen…</string>
<string name="progress_create">Neue Datenbank anlegen </string>
<string name="progress_title">Ausführen </string>
<string name="protection">Sicherheit</string>
<string name="read_only">Schreibgeschützt</string>
<string name="read_only_warning">KeePassDX benötigt Schreibrechte, um etwas an der Datenbank zu ändern.</string>
@@ -132,7 +132,7 @@
<string name="root">Start</string>
<string name="rounds">Schlüsseltransformationen</string>
<string name="rounds_explanation">Zusätzliche Schlüsseltransformationen bieten einen besseren Schutz gegen Wörterbuch- oder Brute-Force-Angriffe. Allerdings dauert dann auch das Laden und Speichern der Datenbank entsprechend länger.</string>
<string name="saving_database">Datenbank wird gespeichert…</string>
<string name="saving_database">Datenbank wird gespeichert </string>
<string name="space">Leerzeichen</string>
<string name="search_label">Suchen</string>
<string name="sort_db">Natürliche Sortierung</string>
@@ -185,13 +185,9 @@
<string name="lock">Sperren</string>
<string name="list_password_generator_options_summary">Erlaubte Zeichen für Passwortgenerator festlegen</string>
<string name="list_password_generator_options_title">Passwortzeichen</string>
<string name="open_biometric_prompt_unlock_database">Biometrie-Abfrage öffnen, um die Datenbank zu entsperren</string>
<string name="encrypted_value_stored">Verschlüsseltes Passwort wurde gespeichert</string>
<string name="biometric_invalid_key">Der biometrische Schlüssel kann nicht gelesen werden. Bitte löschen Sie ihn und wiederholen Sie den biometrischen Erkennungsprozess.</string>
<string name="biometric_scanning_error">Biometrischer Fehler: %1$s</string>
<string name="database_history">Verlauf</string>
<string name="general">Allgemein</string>
<string name="open_biometric_prompt_store_credential">Biometrische Abfrage öffnen, um Anmeldedaten zu speichern.</string>
<string name="no_credentials_stored">Diese Datenbank hat noch kein Passwort.</string>
<string name="encryption">Verschlüsselung</string>
<string name="key_derivation_function">Schlüsselableitungsfunktion</string>
@@ -200,7 +196,6 @@
<string name="error_autofill_enable_service">Dienst für automatisches Ausfüllen kann nicht aktiviert werden.</string>
<string name="copy_field">Kopie von %1$s</string>
<string name="menu_form_filling_settings">Formularausfüllung</string>
<string name="menu_biometric_remove_key">Gespeicherten biometrischen Schlüssel löschen</string>
<string name="encryption_explanation">Verschlüsselungsalgorithmus der Datenbank wird für sämtliche Daten verwendet.</string>
<string name="kdf_explanation">Um den Schlüssel für den Verschlüsselungsalgorithmus zu generieren, wird der Hauptschlüssel umgewandelt, wobei ein zufälliger Salt in der Schlüsselberechnung verwendet wird.</string>
<string name="memory_usage">Speichernutzung</string>
@@ -216,7 +211,6 @@
<string name="sort_creation_time">Erstelldatum</string>
<string name="sort_last_modify_time">Änderungsdatum</string>
<string name="sort_last_access_time">Zugriffsdatum</string>
<string name="biometric_not_recognized">Biometrische Daten nicht erkannt</string>
<string name="autofill">Automatisches Ausfüllen</string>
<string name="autofill_service_name">KeePassDX autom. Formularausfüllung</string>
<string name="autofill_sign_in_prompt">Mit KeePassDX anmelden</string>
@@ -224,8 +218,7 @@
<string name="autofill_explanation_summary">Automatisches Ausfüllen aktivieren, um schnell Formulare in anderen Apps auszufüllen</string>
<string name="clipboard">Zwischenablage</string>
<string name="biometric_delete_all_key_title">Verschlüsselungsschlüssel löschen</string>
<string name="biometric_delete_all_key_summary">Alle mit der biometrischen Erkennung verbundenen Verschlüsselungsschlüssel löschen.</string>
<string name="biometric_delete_all_key_warning">Sind Sie sicher, dass Sie alle mit der biometrischen Erkennung verknüpften Schlüssel löschen möchten\?</string>
<string name="biometric_delete_all_key_summary">Lösche alle Verschlüsselungsschlüssel, die mit der erweiterten Entsperrerkennung zusammenhängen</string>
<string name="unavailable_feature_version">Auf dem Gerät läuft Android %1$s, eine Version ab %2$s wäre aber nötig.</string>
<string name="unavailable_feature_hardware">Keine entsprechende Hardware.</string>
<string name="recycle_bin_title">Papierkorb-Nutzung</string>
@@ -238,7 +231,7 @@
<string name="database_description_title">Datenbankbeschreibung</string>
<string name="database_version_title">Datenbankversion</string>
<string name="text_appearance">Text</string>
<string name="application_appearance">App</string>
<string name="application_appearance">Interface</string>
<string name="other">Andere</string>
<string name="keyboard">Tastatur</string>
<string name="magic_keyboard_title">Magikeyboard</string>
@@ -256,8 +249,6 @@
\nGruppen (wie Ordner) helfen, Einträge in der Datenbank zu ordnen.</string>
<string name="education_search_title">Einträge durchsuchen</string>
<string name="education_search_summary">Titel, Benutzernamen oder Inhalte anderer Feldern eingeben, um die Passwörter wiederzufinden.</string>
<string name="education_biometric_title">Biometrische Datenbank-Entsperrung</string>
<string name="education_biometric_summary">Verknüpft Ihr Passwort mit Ihrer gescannten Biometrie, um Ihre Datenbank schnell zu entsperren.</string>
<string name="education_entry_edit_title">Eintrag bearbeiten</string>
<string name="education_entry_edit_summary">Bearbeiten Sie Ihren Eintrag mit persönlichen Feldern. Persönliche Felder können mit Querverweisen aus anderen Einträgen ergänzt werden.</string>
<string name="education_generate_password_title">Ein starkes Passwort erstellen</string>
@@ -276,7 +267,7 @@
<string name="education_donation_title">Mitmachen</string>
<string name="education_donation_summary">Mithelfen, um Stabilität und Sicherheit zu verbessern und weitere Funktionen zu ermöglichen.</string>
<string name="html_text_ad_free">Anders als viele andere Passwortmanager ist dieser &lt;strong&gt;werbefrei&lt;/strong&gt;, &lt;strong&gt;quelloffen&lt;/strong&gt; und unter einer &lt;strong&gt;Copyleft-Lizenz&lt;/strong&gt;. Es werden keine persönlichen Daten gesammelt, in welcher Form auch immer, unabhängig von der verwendeten Version (kostenlos oder Pro).</string>
<string name="html_text_buy_pro">Mit dem Kauf der Pro-Version erhält man Zugang zu diesem &lt;strong&gt;visuellen Stil&lt;/strong&gt; und unterstützt insbesondere &lt;strong&gt;die Umsetzung gemeinschaftlicher Projektarbeiten.&lt;/strong&gt;</string>
<string name="html_text_buy_pro">Mit dem Kauf der Pro-Version erhalten Sie Zugriff auf diesen &lt;strong&gt;visuellen Stil&lt;/strong&gt; und unterstützen insbesondere &lt;strong&gt;die Umsetzung gemeinschaftlicher Projekte.&lt;/strong&gt;</string>
<string name="html_text_feature_generosity">Dieser &lt;strong&gt;visuelle Stil&lt;/strong&gt; wurde wegen Ihrer Großzügigkeit freigeschaltet.</string>
<string name="html_text_donation">Um unsere Freiheit zu bewahren und immer aktiv zu bleiben, zählen wir auf Ihren &lt;strong&gt;Beitrag.&lt;/strong&gt;</string>
<string name="html_text_dev_feature">Diese Funktion ist &lt;strong&gt;in Entwicklung&lt;/strong&gt; und erfordert &lt;strong&gt;Ihren Beitrag&lt;/strong&gt;, um bald verfügbar zu sein.</string>
@@ -285,12 +276,11 @@
<string name="html_text_dev_feature_encourage">Sie ermutigen die Entwickler:innen, &lt;strong&gt;neue Funktionen&lt;/strong&gt; einzuführen und gemäß Ihren Anmerkungen &lt;strong&gt;Fehler zu beheben&lt;/strong&gt;.</string>
<string name="html_text_dev_feature_thanks">Vielen Dank für Ihre Unterstützung.</string>
<string name="html_text_dev_feature_work_hard">Wir bemühen uns, diese Funktion bald zu veröffentlichen.</string>
<string name="html_text_dev_feature_upgrade">Vergessen Sie nicht, Ihre App aktuell zu halten, indem Sie neue Versionen installieren.</string>
<string name="html_text_dev_feature_upgrade">Denken Sie daran, Ihre App auf dem neuesten Stand zu halten, indem Sie neue Versionen installieren.</string>
<string name="download">Download</string>
<string name="contribute">Unterstützen</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="icon_pack_choose_title">Symbolpaket</string>
<string name="icon_pack_choose_summary">In der App verwendetes Symbolpaket</string>
<string name="error_move_folder_in_itself">Eine Gruppe kann nicht in sich selbst verschoben werden.</string>
@@ -309,10 +299,10 @@
<string name="enable_read_only_title">Schreibgeschützt</string>
<string name="education_read_only_title">Schreibschutz der Datenbank aktivieren</string>
<string name="enable_read_only_summary">Datenbank standardmäßig schreibgeschützt öffnen</string>
<string name="education_read_only_summary">Den Öffnungsmodus für die Sitzung ändern.
\n
\n„Schreibgeschützt“ verhindert unbeabsichtigte Änderungen an der Datenbank.
\nMit „Änderbar“ können alle Elemente hinzugefügt, gelöscht oder geändert werden.</string>
<string name="education_read_only_summary">Den Öffnungsmodus für die Sitzung ändern.
\n
\n„Schreibgeschützt“ verhindert unbeabsichtigte Änderungen an der Datenbank.
\nMit „Änderbar“ können Sie alle Elemente nach Belieben hinzufügen, löschen oder ändern.</string>
<string name="edit_entry">Eintrag bearbeiten</string>
<string name="error_load_database">Datenbank kann nicht geladen werden.</string>
<string name="error_load_database_KDF_memory">Laden des Schlüssels fehlgeschlagen. Bitte versuchen, die „Speicherplatznutzung“ von KDF zu verringern.</string>
@@ -346,7 +336,7 @@
<string name="show_recent_files_summary">Speicherort zuletzt verwendeter Datenbanken anzeigen</string>
<string name="hide_broken_locations_title">Defekte Datenbankverknüpfungen ausblenden</string>
<string name="hide_broken_locations_summary">Nicht funktionierende Verknüpfungen in der Liste der zuletzt verwendeten Datenbanken ausblenden</string>
<string name="do_not_kill_app">Nicht die App beenden…</string>
<string name="do_not_kill_app">App nicht beenden </string>
<string name="lock_database_back_root_summary">Datenbank sperren, wenn auf dem Hauptbildschirm der Zurück-Button gedrückt wird</string>
<string name="clear_clipboard_notification_title">Beim Schließen löschen</string>
<string name="recycle_bin">Papierkorb</string>
@@ -357,7 +347,7 @@
<string name="content_description_open_file">Datei öffnen</string>
<string name="content_description_add_entry">Eintrag hinzufügen</string>
<string name="content_description_add_group">Gruppe hinzufügen</string>
<string name="content_description_file_information">Datei-Info</string>
<string name="content_description_file_information">Dateiinformationen</string>
<string name="content_description_entry_icon">Symbol für den Eintrag</string>
<string name="entry_password_generator">Passwort-Generator</string>
<string name="content_description_password_length">Passwortlänge</string>
@@ -380,15 +370,11 @@
<string name="content_description_keyboard_close_fields">Felder schließen</string>
<string name="error_create_database_file">Es ist nicht möglich, eine Datenbank mit diesem Passwort und dieser Schlüsseldatei zu erstellen.</string>
<string name="menu_advanced_unlock_settings">Erweitertes Entsperren</string>
<string name="biometric_prompt_store_credential_title">Biometrische Erkennung speichern</string>
<string name="biometric_prompt_extract_credential_title">Datenbank mit biometrischer Erkennung öffnen</string>
<string name="biometric">Biometrisch</string>
<string name="enable">Aktivieren</string>
<string name="disable">Deaktivieren</string>
<string name="biometric_prompt_store_credential_message">Achtung: Wenn Sie die biometrische Erkennung verwenden, müssen Sie sich trotzdem Ihr Master-Passwort merken.</string>
<string name="biometric_prompt_extract_credential_message">Datenbank-Anmeldeinformationen aus biometrischen Daten extrahieren</string>
<string name="biometric_auto_open_prompt_title">Biometrische Abfrage automatisch öffnen</string>
<string name="biometric_auto_open_prompt_summary">Automatisch nach Biometrie fragen, wenn die Datenbank dafür eingerichtet ist</string>
<string name="biometric_auto_open_prompt_title">Abfrage automatisch öffnen</string>
<string name="biometric_auto_open_prompt_summary">Automatisch nach der erweiterten Entsperrung fragen, wenn die Datenbank dafür eingerichtet ist</string>
<string name="master_key">Hauptschlüssel</string>
<string name="security">Sicherheit</string>
<string name="entry_history">Verlauf</string>
@@ -408,7 +394,7 @@
<string name="error_otp_period">Zeitraum muss zwischen %1$d und %2$d Sekunden liegen.</string>
<string name="error_otp_digits">Token muss %1$d bis %2$d Stellen enthalten.</string>
<string name="invalid_db_same_uuid">%1$s mit derselben UUID %2$s existiert bereits.</string>
<string name="creating_database">Datenbank wird erstellt…</string>
<string name="creating_database">Datenbank wird erstellt </string>
<string name="menu_security_settings">Sicherheits-Einstellungen</string>
<string name="menu_master_key_settings">Hauptschlüssel-Einstellungen</string>
<string name="contains_duplicate_uuid">Die Datenbank enthält UUID-Duplikate.</string>
@@ -437,22 +423,21 @@
<string name="error_save_database">Die Datenbank konnte nicht gespeichert werden.</string>
<string name="menu_save_database">Datenbank speichern</string>
<string name="menu_empty_recycle_bin">Papierkorb leeren</string>
<string name="command_execution">Befehl ausführen…</string>
<string name="command_execution">Befehl ausführen </string>
<string name="warning_permanently_delete_nodes">Sollen die ausgewählten Knoten wirklich gelöscht werden\?</string>
<string name="keystore_not_accessible">Der Schlüsselspeicher ist nicht richtig initialisiert.</string>
<string name="credential_before_click_biometric_button">Geben Sie das Passwort ein und klicken Sie auf die Biometrie-Schaltfläche.</string>
<string name="recycle_bin_group_title">Papierkorb-Gruppe</string>
<string name="enable_auto_save_database_title">Datenbank automatisch speichern</string>
<string name="enable_auto_save_database_summary">Automatisches Speichern der Datenbank nach einer wichtigen Aktion (im Modus \"Bearbeiten\")</string>
<string name="enable_auto_save_database_summary">Automatisches Speichern der Datenbank nach einer wichtigen Aktion (im Modus Bearbeiten)</string>
<string name="entry_attachments">Anhänge</string>
<string name="menu_restore_entry_history">Historie wiederherstellen</string>
<string name="menu_delete_entry_history">Historie löschen</string>
<string name="keyboard_auto_go_action_title">Auto-Key-Aktion</string>
<string name="keyboard_auto_go_action_summary">Aktion der Go-Taste, die automatisch nach dem Drücken einer Feldtaste ausgeführt wird</string>
<string name="download_attachment">%1$s herunterladen</string>
<string name="download_initialization">Initialisieren…</string>
<string name="download_initialization">Initialisieren </string>
<string name="download_progression">Fortschritt: %1$d%%</string>
<string name="download_finalization">Fertigstellen…</string>
<string name="download_finalization">Fertigstellen </string>
<string name="download_complete">Vollständig!</string>
<string name="hide_expired_entries_title">Abgelaufene Einträge ausblenden</string>
<string name="hide_expired_entries_summary">Abgelaufene Einträge werden nicht angezeigt</string>
@@ -486,9 +471,9 @@
<string name="keyboard_search_share_title">Gemeinsame Infos durchsuchen</string>
<string name="autofill_block_restart">Starten Sie die Anwendung, die das Formular enthält, neu, um die Sperrung zu aktivieren.</string>
<string name="autofill_block">Automatisches Ausfüllen sperren</string>
<string name="autofill_web_domain_blocklist_summary">Liste der Domains, auf denen ein automatisches Ausfüllen unterbunden wird</string>
<string name="autofill_web_domain_blocklist_summary">Liste der Domains, auf denen ein automatisches Ausfüllen unterlassen wird</string>
<string name="autofill_web_domain_blocklist_title">Liste gesperrter Web-Domains</string>
<string name="autofill_application_id_blocklist_summary">Liste der Apps, in denen ein automatisches Ausfüllen unterbunden wird</string>
<string name="autofill_application_id_blocklist_summary">Liste der Apps, in denen ein automatisches Ausfüllen verhindert wird</string>
<string name="autofill_application_id_blocklist_title">Liste gesperrter Anwendungen</string>
<string name="subdomain_search_summary">Suche Web-Domains mit Subdomain-Beschränkungen</string>
<string name="subdomain_search_title">Subdomain-Suche</string>
@@ -498,7 +483,7 @@
<string name="keyboard_change">Tastatur wechseln</string>
<string name="keyboard_previous_fill_in_title">Auto-Key-Aktion</string>
<string name="keyboard_previous_database_credentials_title">Datenbank-Anmeldebildschirm</string>
<string name="keyboard_previous_fill_in_summary">Automatisches Zurückschalten auf die vorherige Tastatur nach Ausführung der automatischen Tastenaktion</string>
<string name="keyboard_previous_fill_in_summary">Nach Ausführung der automatischen Tastenaktion automatisch zur vorherigen Tastatur wechseln</string>
<string name="keyboard_previous_database_credentials_summary">Automatisches Zurückschalten zur vorherigen Tastatur auf dem Datenbank-Anmeldebildschirm</string>
<string name="education_add_attachment_summary">Laden Sie einen Anhang für Ihren Eintrag hoch, um wichtige externe Daten zu speichern.</string>
<string name="content_description_credentials_information">Anmeldeinformationen</string>
@@ -515,7 +500,7 @@
<string name="upload_attachment">%1$s hochladen</string>
<string name="education_add_attachment_title">Anhang hinzufügen</string>
<string name="database_data_remove_unlinked_attachments_summary">Entfernt Anhänge die in der Datenbank enthalten, aber keinem Eintrag zugeordnet sind</string>
<string name="warning_sure_add_file">Die Datei trotzdem hinzufügen\?</string>
<string name="warning_sure_add_file">Soll die Datei trotzdem hinzugefügt werden\?</string>
<string name="show_uuid_summary">Zeigt die mit einem Eintrag verknüpfte UUID an</string>
<string name="show_uuid_title">UUID anzeigen</string>
<string name="autofill_read_only_save">Das Speichern von Daten ist für eine als schreibgeschützt geöffnete Datenbank nicht zulässig.</string>
@@ -523,8 +508,6 @@
<string name="keyboard_previous_lock_summary">Automatisches Zurückschalten zur vorherigen Tastatur nach dem Sperren der Datenbank</string>
<string name="keyboard_previous_lock_title">Datenbank sperren</string>
<string name="notification">Benachrichtigung</string>
<string name="crypto_object_not_initialized">Kryptoobjekt kann nicht abgerufen werden.</string>
<string name="biometric_prompt_not_initialized">Biometrische Eingabeaufforderung kann nicht initialisiert werden.</string>
<string name="biometric_security_update_required">Biometrisches Sicherheitsupdate erforderlich.</string>
<string name="configure_biometric">Es sind keine biometrischen oder Geräteanmeldeinformationen registriert.</string>
<string name="registration_mode">Registrierungsmodus</string>
@@ -539,4 +522,37 @@
<string name="keyboard_save_search_info_summary">Versuche bei manueller Eingabeauswahl gemeinsam genutzte Informationen zu speichern</string>
<string name="keyboard_save_search_info_title">Gemeinsam genutzte Informationen speichern</string>
<string name="warning_empty_recycle_bin">Sollen alle ausgewählten Knoten wirklich aus dem Papierkorb gelöscht werden\?</string>
</resources>
<string name="error_field_name_already_exists">Der Feldname existiert bereits.</string>
<string name="advanced_unlock_prompt_store_credential_message">Warnung: Sie müssen sich immer noch an ihr Masterpasswort erinnern, wenn sie die erweiterte Entsperrerkennung verwenden.</string>
<string name="open_advanced_unlock_prompt_store_credential">Öffne den erweiterten Entsperrdialog zum Speichern von Anmeldeinformationen</string>
<string name="open_advanced_unlock_prompt_unlock_database">Öffnen des erweiterten Entsperrdialogs zum Entsperren der Datenbank</string>
<string name="menu_keystore_remove_key">Löschen des Schlüssels zum erweiterten Entsperren</string>
<string name="advanced_unlock_prompt_store_credential_title">Erweiterte Entsperrerkennung</string>
<string name="education_advanced_unlock_summary">Ihr Passwort verbinden mit Ihrem gescannten biometrischen oder berechtigen Gerät um schnell Ihre Datenbank zu entsperren.</string>
<string name="education_advanced_unlock_title">Erweiterte Entsperrung der Datenbank</string>
<string name="advanced_unlock_timeout">Verfallzeit der erweiterten Entsperrung</string>
<string name="temp_advanced_unlock_timeout_summary">Dauer der erweiterten Entsperrung bevor sein Inhalt gelöscht wird</string>
<string name="temp_advanced_unlock_timeout_title">Verfall der erweiterten Entsperrung</string>
<string name="temp_advanced_unlock_enable_summary">Keinen verschlüsselten Inhalt speichern, um erweiterte Entsperrung zu benutzen</string>
<string name="temp_advanced_unlock_enable_title">Temporäre erweiterte Entsperrung</string>
<string name="device_credential_unlock_enable_summary">Erlaubt Ihn die Geräteanmeldedaten zum Öffnen der Datenbank zu verwenden</string>
<string name="advanced_unlock_tap_delete">Drücken um erweiterte Entsperrschlüssel zu löschen</string>
<string name="content">Inhalt</string>
<string name="advanced_unlock_prompt_extract_credential_title">Öffne Datenbank mit erweiterter Entsperrerkennung</string>
<string name="enter">Eingabetaste</string>
<string name="backspace">Rücktaste</string>
<string name="select_entry">Wähle Eintrag</string>
<string name="back_to_previous_keyboard">Zurück zur vorherigen Tastatur</string>
<string name="custom_fields">Benutzerdefinierte Felder</string>
<string name="advanced_unlock_delete_all_key_warning">Alle Verschlüsselungsschlüssel, die mit der erweiterten Entsperrerkennung zusammenhängen, löschen\?</string>
<string name="device_credential_unlock_enable_title">Geräteanmeldedaten entsperren</string>
<string name="device_credential">Geräteanmeldedaten</string>
<string name="credential_before_click_advanced_unlock_button">Geben sie das Passwort ein, und dann klicken sie den \"Erweitertes Entsperren\" Knopf.</string>
<string name="advanced_unlock_prompt_not_initialized">Initialisieren des erweitertes Entsperren Dialogs fehlgeschlagen.</string>
<string name="advanced_unlock_scanning_error">Erweitertes Entsperren Fehler: %1$s</string>
<string name="advanced_unlock_not_recognized">Konnte den Abdruck des erweiterten Entsperrens nicht erkennen</string>
<string name="advanced_unlock_invalid_key">Kann den Schlüssel zum erweiterten Entsperren nicht lesen. Bitte löschen sie ihn und wiederholen sie Prozedur zum Erkennen des Entsperrens.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Extrahiere Datenbankanmeldedaten mit Daten aus erweitertem Entsperren</string>
<string name="kdf_Argon2id">Argon2id</string>
<string name="kdf_Argon2d">Argon2d</string>
</resources>

View File

@@ -213,7 +213,7 @@
<string name="database_description_title">Περιγραφή Βάσης Δεδομένων</string>
<string name="database_version_title">Έκδοση Βάσης Δεδομένων</string>
<string name="text_appearance">Κείμενο</string>
<string name="application_appearance">Εφαρμογή</string>
<string name="application_appearance">Διεπαφή</string>
<string name="other">Άλλα</string>
<string name="keyboard">Πληκτρολόγιο</string>
<string name="magic_keyboard_title">Magikeyboard</string>
@@ -257,12 +257,11 @@
<string name="html_text_dev_feature_encourage">ενθαρρύνετε τους προγραμματιστές να δημιουργούν &lt;strong&gt;νέες λειτουργίες&lt;/strong&gt; και να &lt;strong&gt;διορθώνουν σφάλματα&lt;/strong&gt; σύμφωνα με τις παρατηρήσεις σας.</string>
<string name="html_text_dev_feature_thanks">Ευχαριστούμε πολύ για τη συνεισφορά σας.</string>
<string name="html_text_dev_feature_work_hard">Εργαζόμαστε σκληρά για να διαθέσουμε αυτό το χαρακτηριστικό γρήγορα.</string>
<string name="html_text_dev_feature_upgrade">Μην ξεχνάτε να ενημερώνετε την εφαρμογή σας, εγκαθιστώντας νέες εκδόσεις.</string>
<string name="html_text_dev_feature_upgrade">Θυμηθείτε να ενημερώνετε την εφαρμογή σας, εγκαθιστώντας νέες εκδόσεις.</string>
<string name="download">Download</string>
<string name="contribute">Συνεισφορά</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Θέμα Εφαρμογής</string>
<string name="style_choose_summary">Θέμα που χρησιμοποιείται στην εφαρμογή</string>
<string name="icon_pack_choose_title">Πακέτο Εικονιδίων</string>
@@ -286,7 +285,7 @@
<string name="education_read_only_summary">Αλλάξτε τη λειτουργία ανοίγματος για το session.
\n
\nΤο \"Προστατευμένο από εγγραφή\" αποτρέπει τυχόν μη επιθυμητές αλλαγές στη βάση δεδομένων.
\nΤο \"Τροποποιητικό\" σάς επιτρέπει να προσθέσετε, να διαγράψετε ή να τροποποιήσετε όλα τα στοιχεία.</string>
\nΤο \"Τροποποιητικό\" σάς επιτρέπει να προσθέσετε, να διαγράψετε ή να τροποποιήσετε όλα τα στοιχεία όπως επιθυμείτε.</string>
<string name="edit_entry">Επεξεργασία καταχώρησης</string>
<string name="error_load_database">Δεν ήταν δυνατή η φόρτωση της βάσης δεδομένων σας.</string>
<string name="error_load_database_KDF_memory">Δεν ήταν δυνατή η φόρτωση του κλειδιού. Προσπαθήστε να μειώσετε την KDF \"Χρήση μνήμης\".</string>
@@ -315,7 +314,7 @@
<string name="selection_mode">Λειτουργία επιλογής</string>
<string name="do_not_kill_app">Μη κλείσιμο της εφαρμογής …</string>
<string name="lock_database_back_root_title">Πατήστε \'Πίσω\' για να κλειδώσετε</string>
<string name="lock_database_back_root_summary">Κλείδωμα της βάσης δεδομένων όταν ο χρήστης κάνει κλικ στο κουμπί \"πίσω\" στη αρχική οθόνη</string>
<string name="lock_database_back_root_summary">Κλείδωμα της βάσης δεδομένων όταν ο χρήστης κάνει κλικ στο κουμπί \"πίσω\" στην οθόνη προέλευσης</string>
<string name="clear_clipboard_notification_title">Καθαρισμός στο κλείσιμο</string>
<string name="clear_clipboard_notification_summary">Κλείδωμα της βάσης δεδομένων όταν λήξει η διάρκεια του προχείρου ή η ειδοποίηση κλείσει αφού αρχίσετε να την χρησιμοποιείτε</string>
<string name="recycle_bin">Κάδος ανακύκλωσης</string>
@@ -347,27 +346,16 @@
<string name="content_description_keyboard_close_fields">Κλείσιμο πεδίων</string>
<string name="error_create_database_file">Δεν είναι δυνατή η δημιουργία βάσης δεδομένων με αυτόν τον κωδικό πρόσβασης και το αρχείο κλειδί.</string>
<string name="menu_advanced_unlock_settings">Προηγμένο ξεκλείδωμα</string>
<string name="menu_biometric_remove_key">Διαγράψτε το αποθηκευμένο βιομετρικό κλειδί</string>
<string name="open_biometric_prompt_unlock_database">Ανοίξτε τη βιομετρική προτροπή για να ξεκλειδώσετε τη βάση δεδομένων</string>
<string name="open_biometric_prompt_store_credential">Ανοίξτε τη βιομετρική προτροπή για την αποθήκευση διαπιστευτηρίων</string>
<string name="biometric_prompt_store_credential_title">Αποθήκευση βιομετρικής αναγνώρισης</string>
<string name="biometric_prompt_store_credential_message">Προειδοποίηση: Πρέπει ακόμα να θυμάστε τον κύριο κωδικό πρόσβασης σας εάν χρησιμοποιείτε βιομετρική αναγνώριση.</string>
<string name="biometric_prompt_extract_credential_title">Άνοιγμα βάσης δεδομένων με βιομετρική αναγνώριση</string>
<string name="biometric_prompt_extract_credential_message">Εξαγωγή της πιστοποίησης βάσης δεδομένων με βιομετρικά δεδομένα</string>
<string name="biometric_invalid_key">Δεν είναι δυνατή η ανάγνωση του βιομετρικού κλειδιού. Διαγράψτε το και επαναλάβετε τη διαδικασία βιομετρικής αναγνώρισης.</string>
<string name="biometric_not_recognized">Δεν ήταν δυνατή η αναγνώριση βιομετρικών στοιχείων</string>
<string name="biometric_scanning_error">Βιομετρικό σφάλμα: %1$s</string>
<string name="no_credentials_stored">Αυτή η βάση δεδομένων δεν έχει αποθηκευμένα διαπιστευτήρια ακόμα.</string>
<string name="menu_appearance_settings">Εμφάνιση</string>
<string name="biometric">Βιομετρία</string>
<string name="advanced_unlock">Προηγμένο ξεκλείδωμα</string>
<string name="biometric_unlock_enable_title">Βιομετρικό ξεκλείδωμα</string>
<string name="biometric_unlock_enable_summary">Σας επιτρέπει να σαρώσετε το βιομετρικό σας για να ανοίξετε τη βάση δεδομένων</string>
<string name="biometric_auto_open_prompt_title">Αυτόματο άνοιγμα βιομετρικής προτροπής</string>
<string name="biometric_auto_open_prompt_summary">Ζητήστε αυτόματα βιομετρία εάν η βάση δεδομένων έχει ρυθμιστεί για να τη χρησιμοποιήσει</string>
<string name="biometric_auto_open_prompt_title">Αυτόματο άνοιγμα προτροπής</string>
<string name="biometric_auto_open_prompt_summary">Ζητήστε αυτόματα προηγμένο ξεκλείδωμα εάν η βάση δεδομένων έχει ρυθμιστεί για να το χρησιμοποιήσει</string>
<string name="biometric_delete_all_key_title">Διαγράψτε τα κλειδιά κρυπτογράφησης</string>
<string name="biometric_delete_all_key_summary">Διαγράψτε όλα τα κλειδιά κρυπτογράφησης που σχετίζονται με τη βιομετρική αναγνώριση</string>
<string name="biometric_delete_all_key_warning">Διαγραφή όλων των κλειδιών κρυπτογράφησης που σχετίζονται με τη βιομετρική αναγνώριση;</string>
<string name="biometric_delete_all_key_summary">Διαγράψτε όλα τα κλειδιά κρυπτογράφησης που σχετίζονται με το προηγμένο ξεκλείδωμα</string>
<string name="enable">Ενεργοποίηση</string>
<string name="disable">Απενεργοποίηση</string>
<string name="master_key">Κύριο κλειδί</string>
@@ -418,15 +406,12 @@
<string name="compression_gzip">Gzip</string>
<string name="magic_keyboard_explanation_summary">Ενεργοποιώντας ένα προσαρμοσμένο πληκτρολόγιο συγκεντρώνει τους κωδικούς πρόσβασής σας και όλα τα πεδία ταυτότητας</string>
<string name="device_keyboard_setting_title">Ρυθμίσεις πληκτρολογίου συσκευής</string>
<string name="education_biometric_title">Βιομετρικό ξεκλείδωμα βάσης δεδομένων</string>
<string name="education_biometric_summary">Συνδέστε τον κωδικό πρόσβασής σας στο σαρωμένο βιομετρικό σας για να ξεκλειδώσετε γρήγορα τη βάση δεδομένων σας.</string>
<string name="error_save_database">Δεν ήταν δυνατή η αποθήκευση της βάσης δεδομένων.</string>
<string name="menu_save_database">Αποθήκευση βάσης δεδομένων</string>
<string name="menu_empty_recycle_bin">Αδειάστε τον κάδο ανακύκλωσης</string>
<string name="command_execution">Εκτέλεση της εντολής…</string>
<string name="warning_permanently_delete_nodes">Οριστική διαγραφή επιλεγμένων κόμβων;</string>
<string name="keystore_not_accessible">Η κλειδοθήκη δεν έχει προετοιμαστεί σωστά.</string>
<string name="credential_before_click_biometric_button">Πληκτρολογήστε τον κωδικό πρόσβασης και στη συνέχεια κάντε κλικ στο κουμπί \"Biometric\".</string>
<string name="recycle_bin_group_title">Ομάδα Κάδου Ανακύκλωσης</string>
<string name="enable_auto_save_database_title">Αυτόματη αποθήκευση βάσης δεδομένων</string>
<string name="enable_auto_save_database_summary">Αποθήκευση της βάσης δεδομένων μετά από κάθε σημαντική ενέργεια (σε λειτουργία \"Τροποποιήσιμο\")</string>
@@ -480,7 +465,7 @@
<string name="autofill_application_id_blocklist_title">Λίστα αποκλεισμού Εφαρμογών</string>
<string name="autofill_application_id_blocklist_summary">Λίστα αποκλεισμού που αποτρέπει την αυτόματη συμπλήρωση εφαρμογών</string>
<string name="keyboard_previous_fill_in_title">Αυτόματη ενέργεια πλήκτρου</string>
<string name="keyboard_previous_fill_in_summary">Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο μετά την εκτέλεση της ενέργειας του αυτόματου πλήκτρου</string>
<string name="keyboard_previous_fill_in_summary">Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο μετά την εκτέλεση της ενέργειας του \"Αυτόματου πλήκτρου\"</string>
<string name="keyboard_previous_database_credentials_summary">Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο στην οθόνη διαπιστευτηρίων βάσης δεδομένων</string>
<string name="keyboard_previous_database_credentials_title">Οθόνη διαπιστευτηρίων βάσης δεδομένων</string>
<string name="keyboard_change">Εναλλαγή πληκτρολογίου</string>
@@ -518,8 +503,6 @@
<string name="keyboard_save_search_info_summary">Προσπαθήστε να αποθηκεύσετε κοινόχρηστες πληροφορίες όταν κάνετε μια χειροκίνητη επιλογή καταχώρησης</string>
<string name="keyboard_save_search_info_title">Αποθήκευση κοινόχρηστων πληροφοριών</string>
<string name="notification">Ειδοποίηση</string>
<string name="crypto_object_not_initialized">Δεν είναι δυνατή η ανάκτηση κρυπτογραφικού αντικειμένου.</string>
<string name="biometric_prompt_not_initialized">Δεν είναι δυνατή η προετοιμασία της βιομετρικής προτροπής.</string>
<string name="biometric_security_update_required">Απαιτείται ενημέρωση βιομετρικής ασφάλειας.</string>
<string name="configure_biometric">Κανένα πιστοποιητικό βιομετρίας ή συσκευής δεν είναι εγγεγραμμένο.</string>
<string name="warning_empty_recycle_bin">Να διαγραφούν οριστικά όλοι οι κόμβοι από τον κάδο ανακύκλωσης;</string>
@@ -527,4 +510,37 @@
<string name="save_mode">Λειτουργία αποθήκευσης</string>
<string name="search_mode">Λειτουργία αναζήτησης</string>
<string name="error_registration_read_only">Η αποθήκευση ενός νέου αντικειμένου δεν επιτρέπεται σε μια βάση δεδομένων μόνο για ανάγνωση</string>
<string name="error_field_name_already_exists">Το όνομα πεδίου υπάρχει ήδη.</string>
<string name="advanced_unlock_prompt_store_credential_title">Προηγμένο ξεκλείδωμα αναγνώρισης</string>
<string name="advanced_unlock_prompt_store_credential_message">Προειδοποίηση: Θα πρέπει να θυμάστε τον κύριο κωδικό πρόσβασης εάν χρησιμοποιείτε προηγμένο ξεκλείδωμα αναγνώρισης.</string>
<string name="advanced_unlock_prompt_extract_credential_title">Ανοίξτε τη βάση δεδομένων με προηγμένο ξεκλείδωμα αναγνώρισης</string>
<string name="open_advanced_unlock_prompt_store_credential">Ανοίξτε τη προηγμένη προτροπή ξεκλειδώματος για αποθήκευση διαπιστευτηρίων</string>
<string name="open_advanced_unlock_prompt_unlock_database">Ανοίξτε τη προηγμένη προτροπή ξεκλειδώματος για να ξεκλείιδώσετε τη βάση δεδομένων</string>
<string name="menu_keystore_remove_key">Διαγραφή προηγμένου κλειδιού ξεκλειδώματος</string>
<string name="enter">Enter</string>
<string name="backspace">Backspace</string>
<string name="select_entry">Επιλέξτε καταχώριση</string>
<string name="back_to_previous_keyboard">Επιστροφή στο προηγούμενο πληκτρολόγιο</string>
<string name="custom_fields">Προσαρμοσμένα πεδία</string>
<string name="advanced_unlock_delete_all_key_warning">Διαγραφή όλων των κλειδιών κρυπτογράφησης που σχετίζονται με το προηγμένο ξεκλείδωμα αναγνώρισης;</string>
<string name="device_credential_unlock_enable_summary">Σας επιτρέπει να χρησιμοποιήσετε τα διαπιστευτήρια της συσκευής σας για να ανοίξετε τη βάση δεδομένων</string>
<string name="device_credential_unlock_enable_title">Ξεκλείδωμα διαπιστευτηρίων συσκευής</string>
<string name="device_credential">Διαπιστευτήρια συσκευής</string>
<string name="credential_before_click_advanced_unlock_button">Πληκτρολογήστε τον κωδικό πρόσβασης, και στη συνέχεια κάντε κλικ στο κουμπί \"Προηγμένο ξεκλείδωμα\".</string>
<string name="advanced_unlock_prompt_not_initialized">Δεν είναι δυνατή η προετοιμασία προτροπής προηγμένου ξεκλειδώματος.</string>
<string name="advanced_unlock_not_recognized">Δεν ήταν δυνατή η αναγνώριση αποτυπώματος προηγμένου ξεκλειδώματος</string>
<string name="advanced_unlock_scanning_error">Προηγμένο ξεκλείδωμα σφάλμα: %1$s</string>
<string name="advanced_unlock_invalid_key">Δεν είναι δυνατή η ανάγνωση του προηγμένου κλειδιού ξεκλειδώματος. Διαγράψτε το και επαναλάβετε τη διαδικασία αναγνώρισης ξεκλειδώματος.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Εξαγωγή διαπιστευτηρίων βάσης δεδομένων με προηγμένο ξεκλείδωμα δεδομένων</string>
<string name="education_advanced_unlock_summary">Συνδέστε τον κωδικό πρόσβασής σας με το σαρωμένο βιομετρικό ή τα διαπιστευτήρια της συσκευής σας για να ξεκλειδώσετε γρήγορα τη βάση δεδομένων σας.</string>
<string name="education_advanced_unlock_title">Προηγμένο ξεκλείδωμα βάσης δεδομένων</string>
<string name="advanced_unlock_timeout">Χρονικό όριο προηγμένου ξεκλειδώματος</string>
<string name="temp_advanced_unlock_enable_title">Προσωρινό προηγμένο ξεκλείδωμα</string>
<string name="temp_advanced_unlock_enable_summary">Μην αποθηκεύετε κανένα κρυπτογραφημένο περιεχόμενο για να χρησιμοποιήσετε προηγμένο ξεκλείδωμα</string>
<string name="temp_advanced_unlock_timeout_summary">Διάρκεια της χρήσης προηγμένου ξεκλειδώματος πριν την διαγραφή του περιεχομένου</string>
<string name="temp_advanced_unlock_timeout_title">Λήξη προηγμένου ξεκλειδώματος</string>
<string name="advanced_unlock_tap_delete">Πατήστε για διαγραφή προηγμένων κλειδιών ξεκλειδώματος</string>
<string name="content">Περιεχόμενα</string>
<string name="kdf_Argon2id">Argon2id</string>
<string name="kdf_Argon2d">Argon2d</string>
</resources>

View File

@@ -19,9 +19,9 @@
Spanish translation by José I. Paños. Updated by David García-Abad (23-09-2013)
--><resources>
<string name="feedback">Commentario</string>
<string name="feedback">Comentarios</string>
<string name="homepage">Página de inicio</string>
<string name="about_description">Implementación para Android del gestor de contraseñas KeePass</string>
<string name="about_description">Implementación en Android del gestor de contraseñas KeePass</string>
<string name="accept">Aceptar</string>
<string name="add_entry">Añadir entrada</string>
<string name="add_group">Añadir grupo</string>
@@ -31,30 +31,30 @@
<string name="application">Aplicación</string>
<string name="menu_app_settings">Configuración de la aplicación</string>
<string name="brackets">Paréntesis</string>
<string name="file_manager_install_description">Explora ficheros con OpenIntents File Manager</string>
<string name="file_manager_install_description">Se requiere un administrador de archivos que acepte la acciones de intención ACTION_CREATE_DOCUMENT y ACTION_OPEN_DOCUMENT para crear, abrir y guardar los archivos de la base de datos.</string>
<string name="clipboard_cleared">Portapapeles limpiado</string>
<string name="clipboard_timeout">Portapapeles caducado</string>
<string name="clipboard_timeout_summary">Duración del almacenamiento en el portapapeles (si lo admite el dispositivo)</string>
<string name="clipboard_timeout_summary">Duración del almacenamiento en el portapapeles (si lo admite su dispositivo)</string>
<string name="select_to_copy">Seleccionar para copiar %1$s en el portapapeles</string>
<string name="retrieving_db_key">Creando clave de la base de datos…</string>
<string name="retrieving_db_key">Recuperando la clave de la base de datos…</string>
<string name="database">Base de datos</string>
<string name="decrypting_db">Descifrando el contenido de la base de datos…</string>
<string name="default_checkbox">Utilice como base de datos por defecto</string>
<string name="default_checkbox">Utilizar como base de datos por defecto</string>
<string name="digits">Dígitos</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft es \u0020de &lt;strong&gt;código abierto&lt;/strong&gt; y &lt;strong&gt;sin publicidad&lt;/strong&gt;.
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft es de &lt;strong&gt;código abierto&lt;/strong&gt; y &lt;strong&gt;sin publicidad&lt;/strong&gt;.
\nSe proporciona tal cual, bajo licencia &lt;strong&gt;GPLv3&lt;/strong&gt;, sin ninguna garantía.</string>
<string name="select_database_file">Abrir base de datos existente</string>
<string name="entry_accessed">Acceso</string>
<string name="entry_accessed">Accedido</string>
<string name="entry_cancel">Cancelar</string>
<string name="entry_notes">Notas</string>
<string name="entry_confpassword">Confirmar contraseña</string>
<string name="entry_created">Creación</string>
<string name="entry_expires">Caducidad</string>
<string name="entry_created">Creado</string>
<string name="entry_expires">Caduca</string>
<string name="entry_keyfile">Archivo de clave</string>
<string name="entry_modified">Modificación</string>
<string name="entry_modified">Modificada</string>
<string name="entry_password">Contraseña</string>
<string name="save">Guardar</string>
<string name="entry_title">Nombre</string>
<string name="entry_title">Título</string>
<string name="entry_url">URL</string>
<string name="entry_user_name">Nombre de usuario</string>
<string name="error_arc4">No se admite el cifrador de flujo Arcfour.</string>
@@ -64,11 +64,11 @@
<string name="error_invalid_path">Asegúrese de que la ruta sea correcta.</string>
<string name="error_no_name">Proporcione un nombre.</string>
<string name="error_nokeyfile">Seleccione un archivo de clave.</string>
<string name="error_out_of_memory">No queda memoria para cargar toda la base de datos.</string>
<string name="error_out_of_memory">No hay memoria para cargar toda la base de datos.</string>
<string name="error_pass_gen_type">Debe seleccionar al menos un tipo de generación de contraseñas.</string>
<string name="error_pass_match">Las contraseñas no coinciden.</string>
<string name="error_rounds_too_large">Pasadas demasiado grande. Establecido a 2147483648.</string>
<string name="error_wrong_length">Proporcione un número entero positivo en el campo «Longitud».</string>
<string name="error_wrong_length">Introduzca un número entero positivo en el campo \"Longitud\".</string>
<string name="file_browser">Explorador de archivos</string>
<string name="generate_password">Generar contraseña</string>
<string name="hint_conf_pass">Confirmar contraseña</string>
@@ -78,7 +78,7 @@
<string name="hint_length">Longitud</string>
<string name="password">Contraseña</string>
<string name="hint_pass">Contraseña</string>
<string name="invalid_credentials">Contraseña o archivo de clave no válido.</string>
<string name="invalid_credentials">No se pudieron leer las credenciales.</string>
<string name="invalid_db_sig">No se pudo reconocer el formato de la base de datos.</string>
<string name="length">Longitud</string>
<string name="list_size_title">Tamaño de los elementos de la lista</string>
@@ -103,7 +103,7 @@
<string name="minus">Menos</string>
<string name="never">Nunca</string>
<string name="no_results">Sin resultado de búsqueda</string>
<string name="no_url_handler">Instale un navegador web para abrir este URL.</string>
<string name="no_url_handler">Instale un navegador web para abrir esta URL.</string>
<string name="omit_backup_search_title">No buscar en las entradas de respaldo</string>
<string name="omit_backup_search_summary">Omite los grupos «Respaldo» y «Papelera de reciclaje» de los resultados de búsqueda</string>
<string name="progress_create">Creando nueva base de datos…</string>
@@ -124,7 +124,9 @@
<string name="unsupported_db_version">No se admite esta versión de la base de datos.</string>
<string name="uppercase">Mayúsculas</string>
<string name="version_label">Versión %1$s</string>
<string name="education_unlock_summary">Introduzca una contraseña y/o un archivo de clave para desbloquear su base de datos.</string>
<string name="education_unlock_summary">Introduzca la contraseña y/o el archivo clave para desbloquear su base de datos.
\n
\nHaga una copia de seguridad de su archivo de base de datos en un lugar seguro después de cada cambio.</string>
<string-array name="timeout_options">
<item>5 segundos</item>
<item>10 segundos</item>
@@ -146,29 +148,28 @@
<string name="extended_ASCII">ASCII extendido</string>
<string name="allow">Permitir</string>
<string name="clipboard_error_title">Error del portapapeles</string>
<string name="clipboard_error">Algunos dispositivos Android tienen un error en la implementación del portapapeles que provoca fallos al copiar desde las aplicaciones.</string>
<string name="clipboard_error_clear">Falló la limpieza del portapapeles</string>
<string name="clipboard_error">Algunos dispositivos no permiten que las aplicaciones usen el portapapeles.</string>
<string name="clipboard_error_clear">No se pudo limpiar el portapapeles</string>
<string name="error_string_key">Cada cadena debe tener un nombre de campo.</string>
<string name="error_autofill_enable_service">El servicio de autocompletado no se ha podido habilitar.</string>
<string name="field_name">Nombre del campo</string>
<string name="field_value">Valor del campo</string>
<string name="file_not_found_content">No se pudo encontrar el archivo. Intente volver a abrirlo en el explorador de archivos.</string>
<string name="invalid_algorithm">El algoritmo es incorrecto.</string>
<string name="invalid_algorithm">Algoritmo incorrecto.</string>
<string name="keyfile_is_empty">El archivo de clave está vacío.</string>
<string name="copy_field">Copia de %1$s</string>
<string name="menu_form_filling_settings">Llenado de formulario</string>
<string name="menu_biometric_remove_key">Quite la clave de huella dactilar</string>
<string name="protection">Protección</string>
<string name="read_only">Protegida contra escritura</string>
<string name="read_only_warning">KeePassDX necesita permiso de escritura para modificar la base de datos.</string>
<string name="encryption_explanation">Algoritmo de cifrado utilizado en todos los datos.</string>
<string name="read_only_warning">Dependiendo del administrador de archivos, puede que KeePassDX no permita escribir en su almacenamiento.</string>
<string name="encryption_explanation">Algoritmo de cifrado utilizado para todos los datos.</string>
<string name="kdf_explanation">Para generar la clave del algoritmo de cifrado, la clave maestra se transforma mediante una función de derivación de claves con una sal aleatoria.</string>
<string name="memory_usage">Uso de memoria</string>
<string name="memory_usage_explanation">Cantidad de memoria (en bytes) que usará la función de derivación de clave.</string>
<string name="parallelism">Paralelismo</string>
<string name="parallelism_explanation">Grado de paralelismo (p. ej. número de hilos) usados por la función de derivación de clave.</string>
<string name="sort_menu">Ordenar</string>
<string name="sort_ascending">Inferiores primero ↓</string>
<string name="sort_ascending">Más bajo primero ↓</string>
<string name="sort_groups_before">Agrupar antes</string>
<string name="sort_recycle_bin_bottom">Papelera debajo</string>
<string name="sort_title">Título</string>
@@ -178,18 +179,13 @@
<string name="sort_last_access_time">Acceso</string>
<string name="search_results">Resultados de búsqueda</string>
<string name="warning">Atención</string>
<string name="entry_not_found">Datos de entrada no encontrados.</string>
<string name="warning_password_encoding">Evite emplear en la base de datos caracteres que no pertenezcan al formato de codificación del texto (los caracteres no reconocidos se convierten a la misma letra).</string>
<string name="entry_not_found">No se pudieron encontrar los datos de entrada.</string>
<string name="warning_password_encoding">Evite los caracteres de la contraseña fuera del formato de codificación de texto en el archivo de la base de datos (los caracteres no reconocidos se convierten a la misma letra).</string>
<string name="warning_empty_password">¿Continuar sin la protección de desbloqueo de contraseña\?</string>
<string name="warning_no_encryption_key">¿Continuar sin clave de cifrado\?</string>
<string name="open_biometric_prompt_unlock_database">Abra la petición de datos biométricos para desbloquear la base de datos</string>
<string name="encrypted_value_stored">Contraseña cifrada almacenada</string>
<string name="biometric_invalid_key">No se puede leer la clave biométrica. Bórrela y repita el procedimiento de reconocimiento biométrico.</string>
<string name="biometric_not_recognized">No fue posible identificar los datos biométricos</string>
<string name="biometric_scanning_error">Error de biometría: %1$s</string>
<string name="database_history">Historial</string>
<string name="autofill_explanation_summary">Habilite el servicio para completar formularios fácilmente desde otras aplicaciones</string>
<string name="open_biometric_prompt_store_credential">Abra la petición de datos biométricos para almacenar credenciales</string>
<string name="no_credentials_stored">Esta base de datos aún no tiene credenciales almacenadas.</string>
<string name="menu_appearance_settings">Apariencia</string>
<string name="general">General</string>
@@ -203,26 +199,25 @@
<string name="list_password_generator_options_summary">Establecer los caracteres permitidos del generador de contraseñas</string>
<string name="clipboard">Portapapeles</string>
<string name="clipboard_notifications_title">Notificaciones del portapapeles</string>
<string name="clipboard_notifications_summary">Mostrar notificaciones del portapapeles para copiar campos al examinar una entrada</string>
<string name="clipboard_notifications_summary">Mostrar las notificaciones del portapapeles para copiar campos al examinar una entrada</string>
<string name="lock">Bloquear</string>
<string name="lock_database_screen_off_title">Bloqueo de pantalla</string>
<string name="lock_database_screen_off_summary">Bloquear la base de datos cuando la pantalla esté apagada</string>
<string name="advanced_unlock">Desbloqueo avanzado</string>
<string name="biometric_unlock_enable_title">Desbloqueo biométrico</string>
<string name="biometric_unlock_enable_summary">Le permite escanear su huella dactilar u otro dato biométrico para abrir la base de datos</string>
<string name="biometric_unlock_enable_summary">Le permite escanear sus datos biométricos para abrir la base de datos</string>
<string name="biometric_delete_all_key_title">Eliminar claves de cifrado</string>
<string name="biometric_delete_all_key_summary">Eliminar todas las claves de cifrado relacionadas con el reconocimiento biométrico</string>
<string name="biometric_delete_all_key_warning">¿Confirma que quiere eliminar todas las claves relativas al reconocimiento biométrico\?</string>
<string name="biometric_delete_all_key_summary">Eliminar todas las claves de cifrado relacionadas con el reconocimiento de desbloqueo avanzado</string>
<string name="unavailable_feature_text">No se pudo iniciar esta funcionalidad.</string>
<string name="unavailable_feature_version">La versión de Android del dispositivo es %1$s, pero es necesaria la %2$s o posterior.</string>
<string name="unavailable_feature_hardware">No se encontró el hardware correspondiente.</string>
<string name="unavailable_feature_version">El dispositivo funciona con Android %1$s, pero necesita %2$s o posterior.</string>
<string name="unavailable_feature_hardware">No se pudo encontrar el hardware correspondiente.</string>
<string name="file_name">Nombre del archivo</string>
<string name="path">Ruta</string>
<string name="assign_master_key">Asignar una clave maestra</string>
<string name="create_keepass_file">Crear base de datos nueva</string>
<string name="create_keepass_file">Crear una base de datos nueva</string>
<string name="recycle_bin_title">Uso de la papelera de reciclaje</string>
<string name="recycle_bin_summary">Mueve los grupos y las entradas al grupo \"Papelera de reciclaje\" antes de eliminarlos</string>
<string name="monospace_font_fields_enable_title">Fuente de los campos</string>
<string name="monospace_font_fields_enable_title">Tipografía del campo</string>
<string name="monospace_font_fields_enable_summary">Cambiar la fuente de los campos para una mejor visibilidad del carácter</string>
<string name="allow_copy_password_title">Portapapeles de confianza</string>
<string name="allow_copy_password_summary">Permitir copiar la contraseña de entrada y los campos protegidos al portapapeles</string>
@@ -230,11 +225,11 @@
<string name="database_description_title">Descripción de la base de datos</string>
<string name="database_version_title">Versión de la base de datos</string>
<string name="text_appearance">Texto</string>
<string name="application_appearance">Aplicación</string>
<string name="application_appearance">Interfaz</string>
<string name="other">Otro</string>
<string name="keyboard">Teclado</string>
<string name="magic_keyboard_title">Teclado mágico</string>
<string name="magic_keyboard_explanation_summary">Active un teclado personalizado que llene sus contraseñas y todos los campos de identidad fácilmente.</string>
<string name="magic_keyboard_explanation_summary">Active un teclado personalizado que llene sus contraseñas y todos los campos de identidad fácilmente</string>
<string name="reset_education_screens_title">Restablecer sugerencias didácticas</string>
<string name="reset_education_screens_summary">Mostrar de nuevo toda la información didáctica</string>
<string name="reset_education_screens_text">Se restablecieron las sugerencias didácticas</string>
@@ -248,8 +243,6 @@
\nLos grupos (~carpetas) organizan las entradas en su base de datos.</string>
<string name="education_search_title">Busque registros fácilmente</string>
<string name="education_search_summary">Busque entradas por título, nombre de usuario u otros campos para recuperar fácilmente sus contraseñas.</string>
<string name="education_biometric_title">Desbloquee su base de datos con su huella digital</string>
<string name="education_biometric_summary">Vincule la contraseña a su escaneo biométrico para desbloquear rápidamente la base de datos.</string>
<string name="education_entry_edit_title">Editar la entrada</string>
<string name="education_entry_edit_summary">Edite la entrada con campos personalizados, puede agregar referencias a los datos de la agrupación entre campos de diferentes entradas.</string>
<string name="education_generate_password_title">Crear una contraseña segura</string>
@@ -268,21 +261,20 @@
<string name="education_donation_title">Participar</string>
<string name="education_donation_summary">Participe para aumentar la estabilidad, la seguridad y agregar más funciones.</string>
<string name="html_text_ad_free">A diferencia de muchas aplicaciones de administración de contraseñas, esta es &lt;strong&gt;sin publicidad&lt;/strong&gt;, &lt;strong&gt;software libre con copyleft&lt;/strong&gt; y no recopila datos personales en sus servidores, sin importar la versión que use.</string>
<string name="html_text_buy_pro">Al comprar la versión pro, tendrá acceso a &lt;strong&gt;la característica visual &lt;/strong&gt;y usted ayudará especialmente a &lt;strong&gt;la realización de proyectos comunitarios.&lt;/strong&gt;</string>
<string name="html_text_feature_generosity">Esta &lt;strong&gt;característica visual &lt;/strong&gt;está disponible gracias a tu generosidad.</string>
<string name="html_text_buy_pro">Al comprar la versión pro, tendrá acceso al &lt;strong&gt;estilo visual &lt;/strong&gt;y ayudará especialmente a &lt;strong&gt;la realización de proyectos comunitarios.&lt;/strong&gt;</string>
<string name="html_text_feature_generosity">Este &lt;strong&gt;estilo visual &lt;/strong&gt;está disponible gracias a tu generosidad.</string>
<string name="html_text_donation">Para mantener nuestra libertad y estar siempre vigente, contamos con tu &lt;strong&gt;contribución.&lt;/strong&gt;</string>
<string name="html_text_dev_feature">Esta función está &lt;strong&gt;en desarrollo&lt;/strong&gt; y requiere de tu &lt;strong&gt;contribución&lt;/strong&gt; para estar disponible dentro de poco.</string>
<string name="html_text_dev_feature_buy_pro">Al comprar la versión &lt;strong&gt;pro&lt;/strong&gt;,</string>
<string name="html_text_dev_feature_contibute">Al &lt;strong&gt;contribuir&lt;/strong&gt;,</string>
<string name="html_text_dev_feature_encourage">usted alienta a los desarrolladores a crear &lt;strong&gt;nuevas funciones&lt;/strong&gt; y a &lt;strong&gt;errores de configuración&lt;/strong&gt; de acuerdo con tus comentarios.</string>
<string name="html_text_dev_feature_encourage">anima a los desarrolladores a crear &lt;strong&gt;nuevas funciones&lt;/strong&gt; y a &lt;strong&gt;corregir errores&lt;/strong&gt; de acuerdo con sus comentarios.</string>
<string name="html_text_dev_feature_thanks">Muchas gracias por tu contribución.</string>
<string name="html_text_dev_feature_work_hard">Estamos trabajando duro para lanzar esta característica rápidamente.</string>
<string name="html_text_dev_feature_upgrade">No olvide mantener su aplicación actualizada.</string>
<string name="html_text_dev_feature_upgrade">Recuerde mantener su aplicación actualizada instalando nuevas versiones.</string>
<string name="download">Descargar</string>
<string name="contribute">Contribuir</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES-KDF</string>
<string name="kdf_Argon2">Argon2</string>
<string name="kdf_AES">AES</string>
<string name="style_choose_title">Tema de aplicación</string>
<string name="style_choose_summary">Tema utilizado en la aplicación</string>
<string name="icon_pack_choose_title">Seleccione un paquete de iconos</string>
@@ -290,7 +282,7 @@
<string name="edit_entry">Editar entrada</string>
<string name="error_load_database">No se pudo cargar la base de datos.</string>
<string name="error_load_database_KDF_memory">No se pudo cargar la clave. Intente disminuir el uso de memoria de KDF.</string>
<string name="error_move_folder_in_itself">No se puede mover un grupo dentro de sí mismo.</string>
<string name="error_move_folder_in_itself">No puede mover un grupo dentro de sí mismo.</string>
<string name="list_entries_show_username_title">Enseña nombres de usuario</string>
<string name="list_entries_show_username_summary">Enseña nombres de usuador en las listras de entradas</string>
<string name="menu_copy">Copiar</string>
@@ -301,13 +293,13 @@
<string name="menu_open_file_read_and_write">Modificable</string>
<string name="build_label">Compilación %1$s</string>
<string name="clipboard_warning">Si la eliminación del cortapapeles falla, elimine su historial manualmente.</string>
<string name="allow_copy_password_warning">ATENCIÓN: todas las aplicaciones comparten el portapapeles. Si copia datos confidenciales, otros programas podrían recuperarlos.</string>
<string name="allow_copy_password_warning">Advertencia: El portapapeles es compartido por todas las aplicaciones. Si se copian datos sensibles, otros programas pueden recuperarlos.</string>
<string name="allow_no_password_title">No permitir claves maestras</string>
<string name="allow_no_password_summary">Activar el botón «Abrir» si no se selecciona ninguna credencial</string>
<string name="enable_education_screens_title">Pantallas didácticas</string>
<string name="enable_education_screens_summary">Resaltar los elementos para conocer cómo funciona la aplicación</string>
<string name="allow_no_password_summary">Permite pulsar el botón \"Abrir\" si no se seleccionan credenciales</string>
<string name="enable_education_screens_title">Sugerencias educativas</string>
<string name="enable_education_screens_summary">Destacar elementos para aprender cómo funciona la aplicación</string>
<string name="enable_read_only_title">Protegida contra escritura</string>
<string name="enable_read_only_summary">Abrir su base de datos protegida contra escritura de manera predeterminada</string>
<string name="enable_read_only_summary">Abrir la base de datos de solo lectura por defecto</string>
<string name="education_read_only_title">Proteja la base de datos contra escritura</string>
<string name="keyboard_name">Teclado mágico</string>
<string name="keyboard_label">Teclado mágico (KeePassDX)</string>
@@ -325,60 +317,56 @@
<string name="keyboard_appearance_category">Apariencia</string>
<string name="keyboard_theme_title">Tema del teclado</string>
<string name="keyboard_keys_category">Teclas</string>
<string name="keyboard_key_vibrate_title">Vibrar al pulsar</string>
<string name="keyboard_key_sound_title">Emitir sonido al pulsar</string>
<string name="keyboard_key_vibrate_title">Vibrar al pulsar tecla</string>
<string name="keyboard_key_sound_title">Sonar al pulsar tecla</string>
<string name="selection_mode">Modo de selección</string>
<string name="do_not_kill_app">No cierre la aplicación…</string>
<string name="lock_database_back_root_summary">Bloquear la base de datos cuando se pulsa el botón Atrás en la pantalla inicial</string>
<string name="lock_database_back_root_summary">Bloquear la base de datos cuando el usuario pulse el botón atrás en la pantalla inicial</string>
<string name="clear_clipboard_notification_title">Vaciar al cerrar</string>
<string name="clear_clipboard_notification_summary">Bloquear la base de datos cuando la duración del portapapeles expire o la notificación sea cerrada</string>
<string name="clear_clipboard_notification_summary">Bloquear la base de datos cuando expire la duración del portapapeles o cuando se cierre la notificación después de empezar a utilizarla</string>
<string name="recycle_bin">Papelera de reciclaje</string>
<string name="keyboard_selection_entry_title">Selección de entrada</string>
<string name="keyboard_selection_entry_summary">Mostrar campos de entrada en el Teclado mágico al ver una entrada</string>
<string name="delete_entered_password_title">Eliminar contraseña</string>
<string name="delete_entered_password_summary">Elimina la contraseña proporcionada tras un intento de conexión</string>
<string name="delete_entered_password_summary">Elimina la contraseña introducida tras un intento de conexión a una bse de datos</string>
<string name="content_description_open_file">Abrir archivo</string>
<string name="content_description_node_children">Elementos secundarios del nodo</string>
<string name="content_description_node_children">Nodos hijo</string>
<string name="content_description_add_node">Añadir nodo</string>
<string name="content_description_add_entry">Añadir entrada</string>
<string name="content_description_add_group">Añadir grupo</string>
<string name="content_description_file_information">Información de archivo</string>
<string name="content_description_password_checkbox">Casilla de contraseña</string>
<string name="content_description_keyfile_checkbox">Casilla de archivo de clave</string>
<string name="content_description_file_information">Información del archivo</string>
<string name="content_description_password_checkbox">Casilla de verificación de la contraseña</string>
<string name="content_description_keyfile_checkbox">Casilla de verificación del archivo de clave</string>
<string name="content_description_entry_icon">Icono de entrada</string>
<string name="entry_password_generator">Generador de contraseñas</string>
<string name="content_description_password_length">Longitud de contraseña</string>
<string name="entry_add_field">Añadir campo</string>
<string name="content_description_remove_field">Eliminar campo</string>
<string name="content_description_remove_field">Eliminar el campo</string>
<string name="entry_UUID">UUID</string>
<string name="error_move_entry_here">No se puede mover una entrada aquí.</string>
<string name="error_copy_entry_here">No se puede copiar una entrada aquí.</string>
<string name="list_groups_show_number_entries_title">Mostrar cantidad de entradas</string>
<string name="list_groups_show_number_entries_summary">Mostrar la cantidad de entradas en un grupo</string>
<string name="error_move_entry_here">No puede mover una entrada aquí.</string>
<string name="error_copy_entry_here">No puede copiar una entrada aquí.</string>
<string name="list_groups_show_number_entries_title">Mostrar el número de entradas</string>
<string name="list_groups_show_number_entries_summary">Mostrar el número de entradas en un grupo</string>
<string name="content_description_background">Fondo</string>
<string name="content_description_update_from_list">Actualizar</string>
<string name="content_description_keyboard_close_fields">Cerrar campos</string>
<string name="error_create_database_file">No se puede crear la base de datos con esta contraseña y este archivo de clave.</string>
<string name="menu_advanced_unlock_settings">Desbloqueo avanzado</string>
<string name="biometric_prompt_store_credential_title">Guardar reconocimiento biométrico</string>
<string name="biometric_prompt_store_credential_message">Atención: debe recordar su contraseña maestra aunque use el reconocimiento biométrico.</string>
<string name="biometric_prompt_extract_credential_title">Abrir base de datos con reconocimiento biométrico</string>
<string name="biometric_prompt_extract_credential_message">Extraer credencial de base de datos con datos biométricos</string>
<string name="biometric">Biometría</string>
<string name="biometric_auto_open_prompt_title">Abrir petición de datos biométricos automáticamente</string>
<string name="biometric_auto_open_prompt_summary">Abrir automáticamente la petición de datos biométricos cuando se define una clave biométrica para una base de datos</string>
<string name="biometric_auto_open_prompt_title">Abrir petición automáticamente</string>
<string name="biometric_auto_open_prompt_summary">Solicitar automáticamente el desbloqueo avanzado si la base de datos está configurada para utilizarlo</string>
<string name="enable">Activar</string>
<string name="disable">Desactivar</string>
<string name="education_read_only_summary">Cambiar el modo de apertura de la sesión.
\n
\n\"Protegido contra escritura\" evita cambios no deseados en la base de datos.
\n\"Modificable\" le permite agregar, eliminar o modificar todos los elementos.</string>
<string name="lock_database_back_root_title">Presione hacia atrás en la raíz para bloquear</string>
\n\"Modificable\" le permite agregar, eliminar o modificar todos los elementos como desee.</string>
<string name="lock_database_back_root_title">Presione \'Atrás\' para bloquear</string>
<string name="content_description_repeat_toggle_password_visibility">Repetir la visibilidad de la contraseña</string>
<string name="master_key">Llave maestra</string>
<string name="master_key">Clave maestra</string>
<string name="security">Seguridad</string>
<string name="entry_history">Historial</string>
<string name="entry_setup_otp">Configuración de contraseña de un solo uso</string>
<string name="entry_setup_otp">Establecer una contraseña de un solo uso</string>
<string name="otp_type">Tipo de contraseña de un solo uso</string>
<string name="otp_secret">Secreto</string>
<string name="otp_period">Período (segundos)</string>
@@ -391,16 +379,16 @@
<string name="error_otp_secret_key">Clave secreta debe estar en formato Base32.</string>
<string name="error_otp_counter">Contador debe estar entre %1$d y %2$d.</string>
<string name="error_save_database">No se puede guardar la base de datos.</string>
<string name="error_string_type">Este texto no encaja con la información requerida.</string>
<string name="error_string_type">Este texto no coincide con el elemento requerido.</string>
<string name="error_create_database">No fue posible crear el archivo de base de datos.</string>
<string name="html_about_contribution">Parar lograr &lt;strong&gt;mantener nuestra libertad&lt;/strong&gt;, &lt;strong&gt;corregir errores&lt;/strong&gt;, &lt;strong&gt;agregar características&lt;/strong&gt; y &lt;strong&gt;siempre estar activos&lt;/strong&gt;, contamos con tu &lt;strong&gt;contribución&lt;/strong&gt;.</string>
<string name="html_about_contribution">Parar lograr &lt;strong&gt;mantener nuestra libertad&lt;/strong&gt;, &lt;strong&gt;corregir errores&lt;/strong&gt;, &lt;strong&gt;agregar características&lt;/strong&gt; y &lt;strong&gt;estar siempre activos&lt;/strong&gt;, contamos con tu &lt;strong&gt;contribución&lt;/strong&gt;.</string>
<string name="content_description_add_item">Añadir elemento</string>
<string name="download_complete">Descarga completa!</string>
<string name="download_complete">¡Completado!</string>
<string name="download_finalization">Finalizando…</string>
<string name="download_progression">En progreso: %1$d%%</string>
<string name="download_initialization">Inicializando…</string>
<string name="download_attachment">Descargar %1$s</string>
<string name="enable_auto_save_database_summary">Guardar la base de datos tras acciones importantes (en modo \"Modificable\")</string>
<string name="enable_auto_save_database_summary">Guardar la base de datos después de cada acción importante (en modo \"Modificable\")</string>
<string name="enable_auto_save_database_title">Guardar base de datos automáticamente</string>
<string name="autofill_block">Bloquear autocompletado</string>
<string name="keyboard_change">Cambiar teclado</string>
@@ -409,12 +397,12 @@
<string name="compression_none">Ninguna</string>
<string name="compression">Compresión</string>
<string name="database_default_username_title">Nombre de usuario predeterminado</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Requerir cambiar la contraseña maestra la próxima vez (una sóla vez)</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Requerir cambiar la contraseña maestra la próxima vez (una vez)</string>
<string name="settings_database_force_changing_master_key_next_time_title">Forzar renovación la próxima vez</string>
<string name="settings_database_force_changing_master_key_summary">Requerir un cambio de contraseña maestra (días)</string>
<string name="settings_database_force_changing_master_key_summary">Requerir un cambio de la contraseña maestra (días)</string>
<string name="settings_database_force_changing_master_key_title">Forzar renovación</string>
<string name="max_history_size_title">Tamaño máximo</string>
<string name="advanced_unlock_explanation_summary">Usar desbloqueo avanzado para abrir una base de datos de manera más fácil</string>
<string name="advanced_unlock_explanation_summary">Usar el desbloqueo avanzado para abrir una base de datos más fácilmente</string>
<string name="lock_database_show_button_summary">Muestra el botón de bloqueo en la interfaz</string>
<string name="lock_database_show_button_title">Mostrar botón de bloqueo</string>
<string name="autofill_preference_title">Configuración de autocompletado</string>
@@ -423,8 +411,8 @@
<string name="warning_database_read_only">Otorga acceso de escritura para guardar cambios en la base de datos</string>
<string name="show_recent_files_summary">Mostrar ubicaciones de bases de datos recientes</string>
<string name="show_recent_files_title">Mostrar archivos recientes</string>
<string name="remember_database_locations_summary">Recordar la ubicación de las bases de datos</string>
<string name="remember_database_locations_title">Guardar ubicaciones de bases de datos</string>
<string name="remember_database_locations_summary">Lleva un registro de los lugares donde se almacenan las bases de datos</string>
<string name="remember_database_locations_title">Recordar las ubicaciones de las bases de datos</string>
<string name="contains_duplicate_uuid">La base de datos contiene UUIDs duplicados.</string>
<string name="menu_restore_entry_history">Restaurar historial</string>
<string name="menu_empty_recycle_bin">Vaciar papelera de reciclaje</string>
@@ -433,12 +421,12 @@
<string name="invalid_db_same_uuid">%1$s con la misma UUID %2$s ya existe.</string>
<string name="error_label_exists">Esta etiqueta ya existe.</string>
<string name="discard">Descartar</string>
<string name="discard_changes">¿Descartar cambios\?</string>
<string name="discard_changes">¿Descartar los cambios\?</string>
<string name="validate">Validar</string>
<string name="contribution">Contribución</string>
<string name="contact">Contactar</string>
<string name="error_otp_period">Período debe estar entre %1$d y %2$d segundos.</string>
<string name="error_copy_group_here">No se puede copiar un grupo aquí.</string>
<string name="contact">Contacto</string>
<string name="error_otp_period">El período debe estar entre %1$d y %2$d segundos.</string>
<string name="error_copy_group_here">No puede copiar un grupo aquí.</string>
<string name="database_data_compression_summary">La compresión de datos reduce el tamaño de la base de datos</string>
<string name="database_data_compression_title">Compresión de datos</string>
<string name="warning_empty_keyfile">No se recomienda agregar un archivo de claves vacío.</string>
@@ -447,19 +435,19 @@
<string name="warning_replace_file">Al cargar este archivo reemplazará el existente.</string>
<string name="warning_permanently_delete_nodes">¿Borrar los nodos seleccionados de forma permanente\?</string>
<string name="warning_database_link_revoked">El acceso al archivo fue revocado por el administrador de archivos</string>
<string name="command_execution">Ejecutando el comando </string>
<string name="command_execution">Ejecutando el comando…</string>
<string name="hide_broken_locations_summary">Ocultar enlaces rotos en la lista de bases de datos recientes</string>
<string name="hide_broken_locations_title">Ocultar enlaces de bases de datos rotos</string>
<string name="remember_keyfile_locations_summary">Realiza un seguimiento de dónde se almacenan los archivos de claves</string>
<string name="remember_keyfile_locations_title">Recuerdar las ubicaciones de los archivos de claves</string>
<string name="remember_keyfile_locations_title">Recordar las ubicaciones de los archivos de clave</string>
<string name="subdomain_search_summary">Buscar dominios web con restricciones de subdominios</string>
<string name="subdomain_search_title">Búsqueda de subdominio</string>
<string name="auto_focus_search_summary">Solicite una búsqueda al abrir una base de datos</string>
<string name="auto_focus_search_title">Búsqueda rápida</string>
<string name="menu_delete_entry_history">Borrar historial</string>
<string name="error_otp_digits">El token debe tener de %1$d a %2$d dígitos.</string>
<string name="menu_delete_entry_history">Eliminar el historial</string>
<string name="error_otp_digits">El token debe contener de %1$d a %2$d dígitos.</string>
<string name="entry_attachments">Archivos adjuntos</string>
<string name="entry_add_attachment">Adjuntar</string>
<string name="entry_add_attachment">Añadir el archivo adjunto</string>
<string name="content_description_credentials_information">Información de credenciales</string>
<string name="database_opened">Base de datos abierta</string>
<string name="education_add_attachment_title">Adjuntar</string>
@@ -469,4 +457,92 @@
<string name="warning_file_too_big">Se supone que una base de datos KeePass contiene solo pequeños archivos de utilidad (como archivos de clave PGP).
\n
\nLa base de datos puede volverse muy grande y reducir su rendimiento con esta subida.</string>
<string name="recycle_bin_group_title">Grupo de la papelera de reciclaje</string>
<string name="filter">Filtrar</string>
<string name="database_data_remove_unlinked_attachments_summary">Elimina los archivos adjuntos contenidos en la base de datos pero no vinculados a una entrada</string>
<string name="database_data_remove_unlinked_attachments_title">Eliminar los datos no vinculados</string>
<string name="data">Datos</string>
<string name="advanced_unlock_delete_all_key_warning">¿Borrar todas las claves de encriptación relacionadas con el reconocimiento de desbloqueo avanzado\?</string>
<string name="advanced_unlock_timeout">Tiempo límite de desbloqueo avanzado</string>
<string name="temp_advanced_unlock_timeout_summary">Duración del uso de desbloqueo avanzado antes de borrar su contenido</string>
<string name="temp_advanced_unlock_timeout_title">Expiración de desbloqueo avanzado</string>
<string name="temp_advanced_unlock_enable_summary">No almacenar ningún contenido encriptado para utilizar el desbloqueo avanzado</string>
<string name="temp_advanced_unlock_enable_title">Desbloqueo avanzado temporal</string>
<string name="device_credential_unlock_enable_summary">Le permite usar la credenciales de su dispositivo para abrir la base de datos</string>
<string name="device_credential_unlock_enable_title">Desbloqueo de las credenciales del dispositivo</string>
<string name="advanced_unlock_tap_delete">Toque para eliminar las teclas de desbloqueo avanzadas</string>
<string name="content">Contenido</string>
<string name="clipboard_explanation_summary">Copiar los campos de entrada usando el portapapeles de su dispositivo</string>
<string name="device_credential">Credenciales del dispositivo</string>
<string name="credential_before_click_advanced_unlock_button">Introduzca la contraseña y luego haga clic en el botón \"Desbloqueo avanzado\".</string>
<string name="advanced_unlock_prompt_not_initialized">No se pudo inicializar el indicador de desbloqueo avanzado.</string>
<string name="advanced_unlock_scanning_error">Error de desbloqueo avanzado: %1$s</string>
<string name="advanced_unlock_not_recognized">No se pudo reconocer la impresión de desbloqueo avanzado</string>
<string name="advanced_unlock_invalid_key">No se pudo leer la llave de desbloqueo avanzada. Por favor, bórrela y repita el procedimiento de reconocimiento de desbloqueo.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Extraer la credencial de la base de datos con datos de desbloqueo avanzado</string>
<string name="advanced_unlock_prompt_extract_credential_title">Abrir la base de datos con reconocimiento de desbloqueo avanzado</string>
<string name="advanced_unlock_prompt_store_credential_message">Advertencia: Aún debes recordar tu contraseña maestra si usas el reconocimiento de desbloqueo avanzado.</string>
<string name="advanced_unlock_prompt_store_credential_title">Reconocimiento de desbloqueo avanzado</string>
<string name="open_advanced_unlock_prompt_store_credential">Abrir el indicador de desbloqueo avanzado para almacenar las credenciales</string>
<string name="open_advanced_unlock_prompt_unlock_database">Abrir el aviso de desbloqueo avanzado para desbloquear la base de datos</string>
<string name="keystore_not_accessible">El almacén de claves no está debidamente inicializado.</string>
<string name="biometric_security_update_required">Se requiere una actualización de la seguridad biométrica.</string>
<string name="configure_biometric">No se ha inscrito ninguna credencial biométrica o del dispositivo.</string>
<string name="warning_empty_keyfile_explanation">El contenido del archivo clave nunca debe modificarse y, en el mejor de los casos, debe contener datos generados al azar.</string>
<string name="warning_empty_recycle_bin">¿Borrar permanentemente todos los nodos de la papelera de reciclaje\?</string>
<string name="registration_mode">Modo de registro</string>
<string name="save_mode">Modo de guardado</string>
<string name="search_mode">Modo de búsqueda</string>
<string name="contains_duplicate_uuid_procedure">¿Resolver el problema generando nuevos UUID para que los duplicados continúen\?</string>
<string name="menu_keystore_remove_key">Borrar la clave de desbloqueo avanzado</string>
<string name="error_field_name_already_exists">El nombre del campo ya existe.</string>
<string name="error_registration_read_only">Guardar un nuevo elemento no está permitido en una base de datos de sólo lectura</string>
<string name="settings_database_recommend_changing_master_key_title">Recomendar la renovación</string>
<string name="max_history_size_summary">Limitar el tamaño del historial (en bytes) por entrada</string>
<string name="max_history_items_summary">Limitar el número de elementos del historial por entrada</string>
<string name="max_history_items_title">Número máximo</string>
<string name="device_keyboard_setting_title">Configuración del teclado del dispositivo</string>
<string name="database_custom_color_title">Color personalizado de la base de datos</string>
<string name="settings_database_recommend_changing_master_key_summary">Recomendar cambiar la contraseña maestra (días)</string>
<string name="notification">Notificación</string>
<string name="hide_expired_entries_title">Ocultar las entradas expiradas</string>
<string name="keyboard_search_share_title">Buscar información compartida</string>
<string name="kdf_Argon2id">Argon2id</string>
<string name="kdf_Argon2d">Argon2d</string>
<string name="upload_attachment">Subir %1$s</string>
<string name="education_setup_OTP_summary">Configurar la gestión de contraseñas de una sola vez (HOTP / TOTP) para generar un token solicitado para la autenticación de dos factores (2FA).</string>
<string name="education_setup_OTP_title">Establecer la contaseña de un solo uso</string>
<string name="education_advanced_unlock_summary">Vincule su contraseña con su credencial biométrica o del dispositivo escaneada para desbloquear rápidamente su base de datos.</string>
<string name="education_advanced_unlock_title">Desbloqueo avanzado de la base de datos</string>
<string name="autofill_read_only_save">No se permite guardar datos en una base de datos abierta como de sólo lectura.</string>
<string name="autofill_block_restart">Reiniciar la aplicación que contiene el formulario para activar el bloqueo.</string>
<string name="autofill_web_domain_blocklist_summary">Lista de bloqueo que impide el llenado automático de los dominios web</string>
<string name="autofill_web_domain_blocklist_title">Lista de bloqueo de los dominios web</string>
<string name="autofill_application_id_blocklist_summary">Lista de bloqueo que impide el llenado automático de las aplicaciones</string>
<string name="autofill_application_id_blocklist_title">Lista de bloqueo de las aplicaciones</string>
<string name="autofill_ask_to_save_data_summary">Pedir que se guarden los datos cuando se valide un formulario</string>
<string name="autofill_ask_to_save_data_title">Pedir que se guarden los datos</string>
<string name="autofill_save_search_info_summary">Intente guardar la información de la búsqueda cuando haga una selección de entrada manual</string>
<string name="autofill_save_search_info_title">Guardar la información de la búsqueda</string>
<string name="autofill_auto_search_summary">Sugerir automáticamente los resultados de la búsqueda desde el dominio web o el ID de la aplicación</string>
<string name="autofill_auto_search_title">Búsqueda automática</string>
<string name="autofill_close_database_summary">Cerrar la base de datos después de una selección de autocompletado</string>
<string name="autofill_close_database_title">Cerrar la base de datos</string>
<string name="enter">Entrar</string>
<string name="backspace">Retroceder</string>
<string name="select_entry">Seleccionar la entrada</string>
<string name="back_to_previous_keyboard">Volver al teclado anterior</string>
<string name="custom_fields">Campos personalizados</string>
<string name="keyboard_previous_lock_summary">Cambiar automáticamente al teclado anterior después de bloquear la base de datos</string>
<string name="keyboard_previous_lock_title">Bloquear la base de datos</string>
<string name="keyboard_previous_fill_in_summary">Cambiar automáticamente al teclado anterior después de ejecutar \"Acción de la tecla automática\"</string>
<string name="keyboard_previous_fill_in_title">Acción de la tecla automática</string>
<string name="keyboard_previous_database_credentials_summary">Cambiar automáticamente al teclado anterior en la pantalla de credenciales de la base de datos</string>
<string name="keyboard_previous_database_credentials_title">Pantalla de credenciales de la base de datos</string>
<string name="keyboard_auto_go_action_title">Acción de la tecla automática</string>
<string name="keyboard_save_search_info_summary">Intentar guardar la información compartida cuando hagas una selección de entrada manual</string>
<string name="keyboard_save_search_info_title">Guardar información compartida</string>
<string name="keyboard_search_share_summary">Buscar automáticamente la información compartida para llenar el teclado</string>
<string name="show_uuid_summary">Muestra el UUID vinculado a una entrada</string>
<string name="show_uuid_title">Mostrar UUID</string>
</resources>

View File

@@ -2,18 +2,8 @@
<resources>
<string name="menu_appearance_settings">ظاهر</string>
<string name="database_history">تاریخچه</string>
<string name="credential_before_click_biometric_button">رمز ورود را وارد کنید و سپس روی دکمه \"بیومتریک\" کلیک کنید.</string>
<string name="no_credentials_stored">این پایگاه داده هنوز اطلاعات کاربری ذخیره نشده است.</string>
<string name="biometric_scanning_error">خطای بیومتریک:%1$s</string>
<string name="biometric_not_recognized">بایومتریک قابل تشخیص نیست</string>
<string name="biometric_invalid_key">"کلید بیومتریک را نمی توان خواند. لطفاً آن را حذف کرده و روش شناخت بیومتریک را تکرار کنید."</string>
<string name="encrypted_value_stored">رمز رمزگذاری شده ذخیره شده است</string>
<string name="biometric_prompt_extract_credential_message">استخراج اطلاعات کاربری پایگاه داده با داده های بیومتریک</string>
<string name="biometric_prompt_extract_credential_title">پایگاه داده را با تشخیص بیومتریک باز کنید</string>
<string name="biometric_prompt_store_credential_message">هشدار: اگر از تشخیص بیومتریک استفاده می کنید ، هنوز باید رمز عبور اصلی خود را به خاطر بسپارید.</string>
<string name="biometric_prompt_store_credential_title">تشخیص بیومتریک را ذخیره کنید</string>
<string name="open_biometric_prompt_store_credential">اعلان بیومتریک را برای ذخیره اعتبارنامه باز کنید</string>
<string name="open_biometric_prompt_unlock_database">برای باز کردن قفل پایگاه داده ، دستور بیومتریک را باز کنید</string>
<string name="keystore_not_accessible">فروشگاه اصلی به درستی تنظیم نشده است.</string>
<string name="build_label">%1$s را بسازید</string>
<string name="version_label">نسخه %1$s</string>
@@ -88,7 +78,6 @@
<string name="menu_open_file_read_and_write">قابل تغییر</string>
<string name="menu_file_selection_read_only">نوشتن-محافظت شده</string>
<string name="menu_url">رفتن به آدرس اینترنتی</string>
<string name="menu_biometric_remove_key">حذف کلید بیومتریک ذخیره شده</string>
<string name="menu_showpass">نمایش رمز عبور</string>
<string name="menu_search">جستجو</string>
<string name="menu_open">باز</string>

View File

@@ -30,7 +30,7 @@
<string name="menu_app_settings">Ohjelman asetukset</string>
<string name="brackets">Hakasulkeet</string>
<string name="file_manager_install_description">Tietokantojen avaamista, luomista ja tallentamista varten tarvitaan tiedostonhallintaohjelma, joka tukee ACTION_CREATE_DOCUMENT ja ACTION_OPEN_DOCUMENT Intent-toimintoja.</string>
<string name="clipboard_cleared">Leikepöytä tyhjennetty.</string>
<string name="clipboard_cleared">Leikepöytä tyhjennetty</string>
<string name="clipboard_error_title">Leikepöytävirhe</string>
<string name="clipboard_error">Jotkin laitteet eivät anna sovellusten käyttää leikepöytää.</string>
<string name="clipboard_error_clear">Leikepöytää ei voitu tyhjentää</string>
@@ -71,7 +71,7 @@
<string name="error_pass_match">Salasanat eivät täsmää.</string>
<string name="error_rounds_too_large">Kierroksia on liian paljon. Asetetaan se arvoon 2147483648.</string>
<string name="error_string_key">Jokaisella tekstillä tulee olla kentässä nimi.</string>
<string name="error_wrong_length">Syötä positiivinen kokonaisluku pituus-kenttään</string>
<string name="error_wrong_length">Syötä positiivinen kokonaisluku pituus-kenttään.</string>
<string name="field_name">Kentän nimi</string>
<string name="field_value">Kentän arvo</string>
<string name="file_browser">Tiedostoselain</string>
@@ -161,7 +161,7 @@
<string name="security">Turvallisuus</string>
<string name="edit_entry">Muokkaa merkintää</string>
<string name="error_disallow_no_credentials">Ainakin yksi pääsytieto tulee olla asetettuna.</string>
<string name="error_load_database_KDF_memory">Avainta ei pystytty lataamaan. Kokeile vähentää KDF \"Muistin käyttöä\".</string>
<string name="error_load_database_KDF_memory">Avainta ei pystytty lataamaan. Kokeile vähentää KDF Muistin käyttöä.</string>
<string name="error_load_database">Tietokantaa ei pystytty avaamaan.</string>
<string name="error_invalid_OTP">Virheellinen OTP salaisuus.</string>
<string name="entry_otp">OTP</string>
@@ -208,17 +208,8 @@
<string name="autofill_explanation_summary">Ota käyttöön automaattinen täyttö täyttääksesi lomakkeita nopeasti muissa sovelluksissa</string>
<string name="menu_appearance_settings">Ulkonäkö</string>
<string name="database_history">Historia</string>
<string name="credential_before_click_biometric_button">Kirjoita salana ja paina \"Biometrinen\" painiketta.</string>
<string name="biometric">Biometrinen</string>
<string name="no_credentials_stored">Tässä salasanatietokannassa ei ole vielä pääsytietoja.</string>
<string name="biometric_scanning_error">Biometrinen virhe: %1$s</string>
<string name="biometric_not_recognized">Biometristä tunnistusta ei tunnistettu</string>
<string name="biometric_invalid_key">Biometristä avainta ei voitu lukea. Poista se ja toista biometrinen tunnistus.</string>
<string name="biometric_prompt_extract_credential_title">Avaa salasanatietokanta biometrisellä tunnistuksella</string>
<string name="biometric_prompt_store_credential_message">Varoitus: Sinun pitää vielä muistaa pääsalasanasi jos käytät biometristä tunnistusta.</string>
<string name="biometric_prompt_store_credential_title">Tallenna biometrinen tunnistus</string>
<string name="open_biometric_prompt_store_credential">Avaa biometrinen komentokehote tallentaaksesi pääsytiedot</string>
<string name="open_biometric_prompt_unlock_database">Avaa biometrinen komentokehote avataksesi salasanatietokannan</string>
<string name="keystore_not_accessible">Avainsäilöä ei ole kunnolla alustettu.</string>
<string name="build_label">Koontiversio %1$s</string>
<string name="warning_database_link_revoked">Tiedostoon pääsy evätty</string>
@@ -241,7 +232,7 @@
<string name="allow_copy_password_title">Luota leikepöytään</string>
<string name="monospace_font_fields_enable_summary">Vaihda fontti, jota käytetään kentissä parantaaksesi merkkien näkyvyyttä</string>
<string name="monospace_font_fields_enable_title">Kenttäfontti</string>
<string name="recycle_bin_summary">Siirrä ryhmät ja tietueet \"Roskakori\" ryhmään ennen poistamista</string>
<string name="recycle_bin_summary">Siirrä ryhmät ja tietueet Roskakori ryhmään ennen poistamista</string>
<string name="recycle_bin_title">Roskakorin käyttö</string>
<string name="assign_master_key">Aseta pääavain</string>
<string name="path">Polku</string>
@@ -302,7 +293,6 @@
<string name="menu_restore_entry_history">Palauta historia</string>
<string name="menu_empty_recycle_bin">Tyhjennä roskakori</string>
<string name="menu_file_selection_read_only">Kirjoitussuojattu</string>
<string name="menu_biometric_remove_key">Poista tallennettu biometrinen avain</string>
<string name="menu_save_database">Tallenna salasanatietokanta</string>
<string name="menu_cancel">Peruuta</string>
<string name="menu_paste">Liitä</string>
@@ -334,4 +324,4 @@
<string name="error_move_folder_in_itself">Et voi siirtää ryhmää itsensä sisälle.</string>
<string name="error_autofill_enable_service">Automaattista täyttöä ei voitu ottaa käyttöön.</string>
<string name="content_description_node_children">Solmun lapset</string>
</resources>
</resources>

View File

@@ -33,7 +33,7 @@
<string name="menu_form_filling_settings">Remplissage de formulaire</string>
<string name="brackets">Parenthèses (ou autres)</string>
<string name="extended_ASCII">ASCII étendu</string>
<string name="file_manager_install_description">Un gestionnaire de fichiers qui accepte l\'action d\'intention ACTION_CREATE_DOCUMENT et ACTION_OPEN_DOCUMENT est nécessaire pour créer, ouvrir et enregistrer des fichiers de base de données.</string>
<string name="file_manager_install_description">Un gestionnaire de fichiers qui accepte laction dintention ACTION_CREATE_DOCUMENT et ACTION_OPEN_DOCUMENT est nécessaire pour créer, ouvrir et enregistrer des fichiers de base de données.</string>
<string name="allow">Autoriser</string>
<string name="clipboard_cleared">Presse-papier vidé</string>
<string name="clipboard_error_title">Erreur de presse-papier</string>
@@ -113,7 +113,6 @@
<string name="menu_open">Ouvrir</string>
<string name="menu_search">Rechercher</string>
<string name="menu_showpass">Afficher le mot de passe</string>
<string name="menu_biometric_remove_key">Supprimer lempreinte biométrique enregistrée</string>
<string name="menu_url">Ouvrir lURL</string>
<string name="minus">Moins</string>
<string name="never">Jamais</string>
@@ -162,13 +161,8 @@
<string name="warning_no_encryption_key">Continuer sans clé de chiffrement\?</string>
<string name="version_label">Version %1$s</string>
<string name="configure_biometric">Aucune information didentification biométrique ou de périphérique nest enregistrée.</string>
<string name="open_biometric_prompt_unlock_database">Ouvrir linvite biométrique pour déverrouiller la base de données</string>
<string name="encrypted_value_stored">Mot de passe chiffré stocké</string>
<string name="database_history">Historique</string>
<string name="biometric_invalid_key">Impossible de lire la clé biométrique. Veuillez la supprimer et répéter la procédure de reconnaissance biométrique.</string>
<string name="biometric_not_recognized">Impossible de reconnaître lempreinte biométique</string>
<string name="biometric_scanning_error">Erreur biométrique : %1$s</string>
<string name="open_biometric_prompt_store_credential">Ouvrir linvite biométrique pour stocker les identifiants</string>
<string name="no_credentials_stored">Cette base de données na pas encore stocké didentifiants.</string>
<string name="menu_appearance_settings">Apparence</string>
<string name="general">Général</string>
@@ -193,7 +187,6 @@
<string name="biometric_unlock_enable_summary">Permet de numériser votre empreinte biométrique pour ouvrir la base de données</string>
<string name="biometric_delete_all_key_title">Supprimer les clés de chiffrement</string>
<string name="biometric_delete_all_key_summary">Supprime toutes les clés de chiffrement liées à la reconnaissance biométrique</string>
<string name="biometric_delete_all_key_warning">Supprimer toutes les clés de chiffrement liées à la reconnaissance biométrique\?</string>
<string name="unavailable_feature_text">Impossible de démarrer cette fonctionnalité.</string>
<string name="unavailable_feature_version">Lappareil tourne sous Android %1$s, mais la version %2$s ou supérieure est requise.</string>
<string name="unavailable_feature_hardware">Impossible de trouver le matériel correspondant.</string>
@@ -212,7 +205,7 @@
<string name="database_description_title">Description de la base de données</string>
<string name="database_version_title">Version de la base de données</string>
<string name="text_appearance">Texte</string>
<string name="application_appearance">Application</string>
<string name="application_appearance">Interface</string>
<string name="other">Autres</string>
<string name="keyboard">Clavier</string>
<string name="magic_keyboard_title">Magiclavier</string>
@@ -232,8 +225,6 @@
\nLes groupes (≈dossiers) organisent les entrées dans votre base de données.</string>
<string name="education_search_title">Rechercher dans les entrées</string>
<string name="education_search_summary">Saisir le titre, le nom dutilisateur ou le contenu des autres champs pour récupérer vos mots de passe.</string>
<string name="education_biometric_title">Déverrouillage biométrique de la base de données</string>
<string name="education_biometric_summary">Associe votre mot de passe à votre empreinte biométrique numérisée pour déverrouiller rapidement votre base de données.</string>
<string name="education_entry_edit_title">Modifier lentrée</string>
<string name="education_entry_edit_summary">Modifie votre entrée avec des champs personnalisés. La collection des données peut être référencée entre différents champs de lentrée.</string>
<string name="education_generate_password_title">Créer un mot de passe fort</string>
@@ -271,7 +262,6 @@
<string name="encryption_twofish">Twofish</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string-array name="timeout_options">
<item>5 secondes</item>
<item>10 secondes</item>
@@ -306,7 +296,7 @@
<string name="menu_move">Déplacer</string>
<string name="menu_paste">Coller</string>
<string name="menu_cancel">Annuler</string>
<string name="allow_no_password_title">Autoriser l\'absence de clé principale</string>
<string name="allow_no_password_title">Autoriser labsence de clé principale</string>
<string name="allow_no_password_summary">Autorise lappui du bouton «Ouvrir» si aucun identifiant nest sélectionné</string>
<string name="menu_file_selection_read_only">Protéger en écriture</string>
<string name="menu_open_file_read_and_write">Modifiable</string>
@@ -316,7 +306,7 @@
<string name="education_read_only_summary">Changez le mode douverture pour la session.
\n
\n«Protégé en écriture» empêche les modifications involontaires de la base de données.
\n«Modifiable» vous permet dajouter, de supprimer ou de modifier tous les éléments.</string>
\n«Modifiable» vous permet dajouter, de supprimer ou de modifier tous les éléments comme vous le souhaitez.</string>
<string name="edit_entry">Modifier lentrée</string>
<string name="error_load_database">Impossible de charger votre base de données.</string>
<string name="error_load_database_KDF_memory">Impossible de charger la clé. Veuillez essayer de diminuer lutilisation mémoire de la fonction de dérivation de clé.</string>
@@ -343,9 +333,9 @@
<string name="keyboard_key_sound_title">Appui clavier audible</string>
<string name="keyboard_change">Changement de clavier</string>
<string name="keyboard_previous_database_credentials_title">Écran des identifications de la base de données</string>
<string name="keyboard_previous_database_credentials_summary">Revenir automatiquement au clavier précédent sur l\'écran des identifications de la base de données</string>
<string name="keyboard_previous_database_credentials_summary">Revenir automatiquement au clavier précédent sur lécran des identifications de la base de données</string>
<string name="keyboard_previous_fill_in_title">Action de touche automatique</string>
<string name="keyboard_previous_fill_in_summary">Revenir automatiquement au clavier précédent après avoir exécuté \"Action de touche automatique\"</string>
<string name="keyboard_previous_fill_in_summary">Revenir automatiquement au clavier précédent après avoir exécuté « Action de touche automatique »</string>
<string name="selection_mode">Mode sélection</string>
<string name="do_not_kill_app">Veuillez ne pas tuer lapplication…</string>
<string name="lock_database_back_root_title">Appuyer sur «Retour» pour verrouiller</string>
@@ -383,18 +373,14 @@
<string name="menu_advanced_unlock_settings">Déverrouillage avancé</string>
<string name="enable">Activer</string>
<string name="disable">Désactiver</string>
<string name="biometric_prompt_store_credential_title">Enregistrer la reconnaissance biométrique</string>
<string name="biometric_prompt_store_credential_message">Attention : Vous devez toujours vous souvenir de votre mot de passe principal si vous utilisez la reconnaissance biométrique.</string>
<string name="biometric_prompt_extract_credential_title">Ouvrir la base de données avec la reconnaissance biométrique</string>
<string name="biometric_prompt_extract_credential_message">Extraire les identifiants de la base de données avec les données biométriques</string>
<string name="biometric">Biométrie</string>
<string name="biometric_auto_open_prompt_title">Ouvrir automatiquement linvite biométrique</string>
<string name="biometric_auto_open_prompt_summary">Demande automatiquement la reconnaissance biométrique si la base de données est configurée pour l\'utiliser</string>
<string name="biometric_auto_open_prompt_summary">Demande automatiquement la reconnaissance biométrique si la base de données est configurée pour lutiliser</string>
<string name="master_key">Clé principale</string>
<string name="security">Sécurité</string>
<string name="entry_history">Historique</string>
<string name="entry_setup_otp">Configuration dun mot de passe à usage unique</string>
<string name="otp_type">Type OTP</string>
<string name="otp_type">Type MDP à usage unique</string>
<string name="otp_secret">Secret</string>
<string name="otp_period">Période (secondes)</string>
<string name="otp_counter">Compteur</string>
@@ -416,11 +402,11 @@
<string name="contains_duplicate_uuid_procedure">Résoudre le problème en générant de nouveaux UUID pour les doublons et continuer\?</string>
<string name="database_opened">Base de données ouverte</string>
<string name="clipboard_explanation_summary">Copier les champs dune entrée à laide du presse-papier de votre appareil</string>
<string name="advanced_unlock_explanation_summary">Utilise le déverrouillage avancé pour ouvrir plus facilement une base de données</string>
<string name="advanced_unlock_explanation_summary">Utiliser le déverrouillage avancé pour ouvrir plus facilement une base de données</string>
<string name="database_data_compression_title">Compression de données</string>
<string name="database_data_compression_summary">La compression des données réduit la taille de la base de données</string>
<string name="max_history_items_title">Nombre maximum</string>
<string name="max_history_items_summary">Limite le nombre d\'éléments de lhistorique par entrée</string>
<string name="max_history_items_summary">Limite le nombre déléments de lhistorique par entrée</string>
<string name="max_history_size_title">Taille maximum</string>
<string name="max_history_size_summary">Limite la taille de lhistorique (en octets) par entrée</string>
<string name="settings_database_recommend_changing_master_key_title">Recommander le renouvellement</string>
@@ -441,13 +427,12 @@
<string name="command_execution">Exécution de la commande…</string>
<string name="warning_permanently_delete_nodes">Supprimer définitivement les nœuds sélectionnés\?</string>
<string name="keystore_not_accessible">Le magasin de clés nest pas correctement initialisé.</string>
<string name="credential_before_click_biometric_button">Saisissez le mot de passe puis cliquez sur le bouton biométrique.</string>
<string name="recycle_bin_group_title">Groupe de la corbeille</string>
<string name="enable_auto_save_database_title">Enregistrement automatique de la base de données</string>
<string name="enable_auto_save_database_summary">Enregistre la base de données après chaque action importante (en mode « Modifiable »)</string>
<string name="entry_attachments">Attachements</string>
<string name="menu_restore_entry_history">Restaurer l\'historique</string>
<string name="menu_delete_entry_history">Effacer l\'historique</string>
<string name="menu_restore_entry_history">Restaurer lhistorique</string>
<string name="menu_delete_entry_history">Effacer lhistorique</string>
<string name="keyboard_auto_go_action_title">Action de touche automatique</string>
<string name="keyboard_auto_go_action_summary">Action de la touche « Go » après avoir appuyé sur une touche « Champ »</string>
<string name="download_attachment">Téléchargement %1$s</string>
@@ -461,7 +446,7 @@
<string name="contribution">Contribution</string>
<string name="html_about_contribution">Afin de &lt;strong&gt;garder notre liberté&lt;/strong&gt;, &lt;strong&gt;corriger les bugs&lt;/strong&gt;, &lt;strong&gt;ajouter des fonctionnalités&lt;/strong&gt; et &lt;strong&gt;être toujours actif&lt;/strong&gt;, nous comptons sur votre &lt;strong&gt;contribution&lt;/strong&gt;.</string>
<string name="auto_focus_search_title">Recherche rapide</string>
<string name="auto_focus_search_summary">Demande une recherche lors de l\'ouverture d\'une base de données</string>
<string name="auto_focus_search_summary">Demande une recherche lors de louverture dune base de données</string>
<string name="remember_database_locations_title">Mémoriser lemplacement des bases de données</string>
<string name="remember_database_locations_summary">Garde en mémoire lemplacement où les bases de données sont stockées</string>
<string name="remember_keyfile_locations_title">Mémoriser les emplacements des fichiers clé</string>
@@ -478,25 +463,25 @@
<string name="discard">Abandonner</string>
<string name="discard_changes">Abandonner les modifications\?</string>
<string name="validate">Valider</string>
<string name="autofill_auto_search_summary">Suggère automatiquement des résultats de recherche à partir du domaine Web ou de l\'application ID</string>
<string name="autofill_auto_search_summary">Suggérer automatiquement des résultats de recherche à partir du domaine Web ou de lidentifiant de lapplication</string>
<string name="autofill_auto_search_title">Recherche automatique</string>
<string name="lock_database_show_button_summary">Affiche le bouton de verrouillage dans l\'interface utilisateur</string>
<string name="lock_database_show_button_summary">Affiche le bouton de verrouillage dans linterface utilisateur</string>
<string name="lock_database_show_button_title">Afficher le bouton de verrouillage</string>
<string name="autofill_preference_title">Paramètres de remplissage automatique</string>
<string name="warning_database_link_revoked">Accès au fichier révoqué par le gestionnaire de fichiers</string>
<string name="error_label_exists">Ce label existe déjà.</string>
<string name="autofill_block_restart">Redémarrez l\'application contenant le formulaire pour activer le blocage.</string>
<string name="autofill_block_restart">Redémarrez lapplication contenant le formulaire pour activer le blocage.</string>
<string name="autofill_block">Blocker le remplissage automatique</string>
<string name="autofill_web_domain_blocklist_summary">Liste de blocage qui empêche le remplissage automatique des domaines Web</string>
<string name="autofill_web_domain_blocklist_title">Liste de blocage de domaine Web</string>
<string name="autofill_application_id_blocklist_summary">Liste de blocage qui empêche le remplissage automatique des applications</string>
<string name="autofill_application_id_blocklist_title">Liste de blocage d\'application</string>
<string name="autofill_application_id_blocklist_title">Liste de blocage dapplication</string>
<string name="keyboard_search_share_summary">Recherche automatiquement les informations partagées pour remplir le clavier</string>
<string name="keyboard_search_share_title">Rechercher les informations partagées</string>
<string name="filter">Filtre</string>
<string name="subdomain_search_summary">Recherche des domaines Web avec des contraintes de sous-domaines</string>
<string name="subdomain_search_title">Recherche de sous-domaine</string>
<string name="error_string_type">Ce texte ne correspond pas à l\'élément demandé.</string>
<string name="error_string_type">Ce texte ne correspond pas à lélément demandé.</string>
<string name="content_description_add_item">Ajouter un élément</string>
<string name="upload_attachment">Téléverser %1$s</string>
<string name="education_add_attachment_summary">Téléverse une pièce-jointe à votre entrée pour enregistrer dimportantes données externes.</string>
@@ -509,31 +494,62 @@
<string name="content_description_credentials_information">Informations des identifiants</string>
<string name="warning_remove_unlinked_attachment">Supprimer les données non-liées peut réduire la taille de votre base de données mais peut également supprimer des données utilisées par des extensions KeePass.</string>
<string name="warning_sure_remove_data">Supprimer ces données quand même ?</string>
<string name="warning_empty_keyfile">Il n\'est pas recommandé d\'ajouter un fichier clé vide.</string>
<string name="warning_empty_keyfile">Il nest pas recommandé dajouter un fichier clé vide.</string>
<string name="warning_empty_keyfile_explanation">Le contenu du fichier clé ne devrait jamais changer, et dans le meilleur des cas, devrait contenir des données générées aléatoirement.</string>
<string name="database_data_remove_unlinked_attachments_title">Supprimer les données non-liées</string>
<string name="database_data_remove_unlinked_attachments_summary">Supprimer les pièces jointes contenues dans la base de données mais non-liées à une entrée</string>
<string name="data">Données</string>
<string name="show_uuid_summary">Affiche l\'UUID lié à une entrée</string>
<string name="show_uuid_title">Afficher l\'UUID</string>
<string name="autofill_read_only_save">L\'enregistrement des données n\'est pas autorisé pour une base de données ouverte en lecture seule.</string>
<string name="autofill_ask_to_save_data_summary">Demande à enregistrer des données lorsqu\'un formulaire est validé</string>
<string name="show_uuid_summary">Affiche lUUID lié à une entrée</string>
<string name="show_uuid_title">Afficher lUUID</string>
<string name="autofill_read_only_save">Lenregistrement des données nest pas autorisé pour une base de données ouverte en lecture seule.</string>
<string name="autofill_ask_to_save_data_summary">Demande à enregistrer des données quand un formulaire est validé</string>
<string name="autofill_ask_to_save_data_title">Demander à enregistrer des données</string>
<string name="autofill_save_search_info_summary">Essaie d\'enregistrer les informations de recherche lors de la sélection manuelle d\'une entrée</string>
<string name="autofill_save_search_info_summary">Essayer denregistrer les informations de recherche lors de la sélection manuelle dune entrée</string>
<string name="autofill_save_search_info_title">Enregistrer les infos de recherche</string>
<string name="autofill_close_database_summary">Ferme la base de données après une sélection de remplissage automatique</string>
<string name="autofill_close_database_title">Fermer la base de données</string>
<string name="keyboard_previous_lock_summary">Revient automatiquement au clavier précédent après le verrouillage de la base de données</string>
<string name="keyboard_previous_lock_title">Verrouiller la base de données</string>
<string name="keyboard_save_search_info_summary">Essaie d\'enregistrer les informations partagées lors de la sélection manuelle d\'une entrée</string>
<string name="keyboard_save_search_info_summary">Essayer denregistrer les informations partagées lors de la sélection manuelle dune entrée</string>
<string name="keyboard_save_search_info_title">Enregistrer les infos partagées</string>
<string name="notification">Notification</string>
<string name="crypto_object_not_initialized">Impossible de récupérer l\'objet crypto.</string>
<string name="biometric_prompt_not_initialized">Impossible d\'initialiser l\'invite biométrique.</string>
<string name="biometric_security_update_required">Mise à jour de sécurité biométrique requise.</string>
<string name="warning_empty_recycle_bin">Supprimer définitivement tous les nœuds de la corbeille \?</string>
<string name="registration_mode">Mode enregistrement</string>
<string name="save_mode">Mode sauvegarde</string>
<string name="search_mode">Mode recherche</string>
<string name="error_registration_read_only">L\'enregistrement d\'un nouvel élément n\'est pas autorisé dans une base de données en lecture seule</string>
<string name="error_registration_read_only">Lenregistrement dun nouvel élément nest pas autorisé dans une base de données en lecture seule</string>
<string name="error_field_name_already_exists">Le nom du champ existe déjà.</string>
<string name="advanced_unlock_delete_all_key_warning">Supprimer toutes les clés de chiffrement liées à la reconnaissance de déverrouillage avancée \?</string>
<string name="device_credential_unlock_enable_summary">Vous permet d\'utiliser les informations d\'identification de votre appareil pour ouvrir la base de données</string>
<string name="device_credential_unlock_enable_title">Déverrouillage par identifiants de l\'appareil</string>
<string name="device_credential">Déverouillage de l\'appareil</string>
<string name="credential_before_click_advanced_unlock_button">Tapez le mot de passe, puis cliquez sur le bouton \"Déverrouillage avancé\".</string>
<string name="advanced_unlock_prompt_not_initialized">Impossible d\'initialiser l\'invite de déverrouillage avancé.</string>
<string name="advanced_unlock_scanning_error">Erreur de déverrouillage avancé : %1$s</string>
<string name="advanced_unlock_not_recognized">Impossible de reconnaître l\'empreinte de déverrouillage avancé</string>
<string name="advanced_unlock_invalid_key">Impossible de lire la clé de déverrouillage avancé. Veuillez la supprimer et répéter la procédure de reconnaissance de déverrouillage.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Extraire les identifiants de la base de données avec des données de déverrouillage avancées</string>
<string name="advanced_unlock_prompt_extract_credential_title">Ouvrir la base de données avec la reconnaissance de déverrouillage avancée</string>
<string name="advanced_unlock_prompt_store_credential_message">Attention : Vous devez toujours vous souvenir de votre mot de passe principal si vous utilisez la reconnaissance de déverrouillage avancée.</string>
<string name="advanced_unlock_prompt_store_credential_title">Reconnaissance de déverrouillage avancée</string>
<string name="open_advanced_unlock_prompt_store_credential">Ouvrez l\'invite de déverrouillage avancé pour stocker les informations d\'identification</string>
<string name="open_advanced_unlock_prompt_unlock_database">Ouvrez l\'invite de déverrouillage avancé pour déverrouiller la base de données</string>
<string name="menu_keystore_remove_key">Supprimer la clé de déverrouillage avancé</string>
<string name="enter">Entrer</string>
<string name="backspace">Retour arrière</string>
<string name="select_entry">Sélection d\'une entrée</string>
<string name="back_to_previous_keyboard">Retour au clavier précédent</string>
<string name="custom_fields">Champs customisés</string>
<string name="education_advanced_unlock_summary">Lier votre mot de passe à vos informations d\'identification biométriques ou de périphérique scannées pour déverrouiller rapidement votre base de données.</string>
<string name="education_advanced_unlock_title">Déverrouillage avancé de la base de données</string>
<string name="advanced_unlock_timeout">Délai du déverrouillage avancé</string>
<string name="temp_advanced_unlock_timeout_summary">Durée d\'utilisation du déverrouillage avancé avant de supprimer son contenu</string>
<string name="temp_advanced_unlock_timeout_title">Expiration du déverrouillage avancé</string>
<string name="temp_advanced_unlock_enable_summary">Ne stocker aucun contenu crypté pour utiliser le déverrouillage avancé</string>
<string name="temp_advanced_unlock_enable_title">Déverrouillage avancé temporaire</string>
<string name="advanced_unlock_tap_delete">Appuyez pour supprimer les clés de déverrouillage avancées</string>
<string name="content">Contenu</string>
<string name="kdf_Argon2id">Argon2id</string>
<string name="kdf_Argon2d">Argon2d</string>
</resources>

View File

@@ -27,7 +27,7 @@
<string name="encryption_algorithm">Algoritmo de cifrado</string>
<string name="key_derivation_function">Función de derivación de chave</string>
<string name="app_timeout">Tempo de espera da aplicación</string>
<string name="app_timeout_summary">Tempo antes de bloquear a base de datos cando a aplicación está inactiva.</string>
<string name="app_timeout_summary">Tiempo de inactividad antes de bloquear la base de datos</string>
<string name="application">Aplicación</string>
<string name="brackets">Parénteses</string>
<string name="extended_ASCII">ASCII extendido</string>

View File

@@ -133,7 +133,6 @@
<string name="menu_open">Otvori</string>
<string name="menu_search">Traži</string>
<string name="menu_showpass">Prikaži lozinku</string>
<string name="menu_biometric_remove_key">Izbriši spremljene biometrijske ključeve</string>
<string name="menu_url">Idi na URL</string>
<string name="menu_open_file_read_and_write">Promjenjivo</string>
<string name="menu_empty_recycle_bin">Isprazni koš za smeće</string>
@@ -176,10 +175,7 @@
<string name="warning_permanently_delete_nodes">Trajno izbrisati odabrane čvorove\?</string>
<string name="version_label">Verzija %1$s</string>
<string name="build_label">Izgradnja %1$s</string>
<string name="biometric_prompt_store_credential_message">Upozorenje: Ako koristiš biometrijsko prepoznavanje i dalje moraš zapamtiti svoju glavnu lozinku.</string>
<string name="biometric_prompt_extract_credential_title">Otvori bazu podataka pomoću biometrijskog prepoznavanja</string>
<string name="encrypted_value_stored">Šifrirana lozinka pohranjena</string>
<string name="biometric_invalid_key">Nije moguće pročitati biometrijski ključ. Izbriši ga i ponovi postupak prepoznavanja.</string>
<string name="encrypted_value_stored">Šifrirana lozinka spremljena</string>
<string name="database_history">Povijest</string>
<string name="menu_appearance_settings">Izgled</string>
<string name="general">Opće</string>
@@ -199,8 +195,7 @@
<string name="biometric_unlock_enable_title">Biometrijsko otključavanje</string>
<string name="biometric_unlock_enable_summary">Otvaranje baze podataka skeniranjem biometrike</string>
<string name="biometric_delete_all_key_title">Izbriši ključeve šifriranja</string>
<string name="biometric_delete_all_key_summary">Izbriši sve ključeve šifriranja povezane s biometrijskim prepoznavanjem</string>
<string name="biometric_delete_all_key_warning">Izbrisati sve ključeve povezane s biometrijskim prepoznavanjem\?</string>
<string name="biometric_delete_all_key_summary">Izbriši sve ključeve šifriranja povezane s naprednim prepoznavanjem otključavanja</string>
<string name="unavailable_feature_hardware">Nije moguće pronaći odgovarajući hardver.</string>
<string name="file_name">Ime datoteke</string>
<string name="path">Putanja</string>
@@ -227,7 +222,7 @@
<string name="database_custom_color_title">Proizvoljna boja baze podataka</string>
<string name="database_version_title">Verzija baze podataka</string>
<string name="text_appearance">Tekst</string>
<string name="application_appearance">Aplikacija</string>
<string name="application_appearance">Sučelje</string>
<string name="other">Ostalo</string>
<string name="compression">Komprimiranje</string>
<string name="compression_none">Bez</string>
@@ -244,7 +239,7 @@
<string name="error_out_of_memory">Nema dovoljno memorije za učitavanje cijele baze podataka.</string>
<string name="error_load_database">Nije moguće učitati bazu podataka.</string>
<string name="error_load_database_KDF_memory">Nije moguće učitati ključ. Pokušaje smanjiti uporabu memorije KDF.</string>
<string name="error_disallow_no_credentials">Barem jedna akreditacija mora biti postavljena.</string>
<string name="error_disallow_no_credentials">Barem jedan skup podataka za prijavu mora biti postavljen.</string>
<string name="error_string_key">Svaki niz mora imati ime polja.</string>
<string name="error_autofill_enable_service">Nije moguće aktivirati uslugu automatskog ispunjavanja.</string>
<string name="error_move_folder_in_itself">Nije moguće premjestiti grupu u samu sebe.</string>
@@ -255,7 +250,7 @@
<string name="error_save_database">Nije moguće spremiti bazu podataka.</string>
<string name="error_otp_period">Razdoblje mora biti između %1$d i %2$d sekundi.</string>
<string name="file_not_found_content">Nije moguće pronaći datoteku. Probaj je ponovo otvoriti iz upravitelja datoteka.</string>
<string name="invalid_credentials">Nije moguće čitati akreditacije.</string>
<string name="invalid_credentials">Nije moguće čitati podatke za prijavu.</string>
<string name="list_size_title">Veličina elemenata popisa</string>
<string name="list_size_summary">Veličina teksta u popisu elemenata</string>
<string name="lowercase">Mala slova</string>
@@ -277,11 +272,7 @@
<string name="special">Posebni znakovi</string>
<string name="underline">Podcrtaj</string>
<string name="uppercase">Velika slova</string>
<string name="biometric_prompt_store_credential_title">Spremi biometrijsko prepoznavanje</string>
<string name="biometric_prompt_extract_credential_message">Izvadi akreditaciju baze podataka s biometrijskim podacima</string>
<string name="biometric_not_recognized">Nije moguće prepoznati biometriju</string>
<string name="no_credentials_stored">Ova baza podataka još nema spremljenu akreditaciju.</string>
<string name="credential_before_click_biometric_button">Upiši lozinku, zatim pritisni gumb „Biometrija”.</string>
<string name="no_credentials_stored">Ova baza podataka još nema spremljene podatke za prijavu.</string>
<string name="biometric">Biometrija</string>
<string name="autofill_sign_in_prompt">Prijavi se s KeePassDX</string>
<string name="autofill_explanation_summary">Aktiviraj automatsko ispunjavanje za brzo ispunjavanje obrazaca u drugim aplikacijama</string>
@@ -321,7 +312,7 @@
<string name="keyboard_key_vibrate_title">Vibracija tipki</string>
<string name="keyboard_key_sound_title">Zvuk tipki</string>
<string name="allow_no_password_title">Dozvoli bez lozinke</string>
<string name="allow_no_password_summary">Dozvoljava dodir gumba „Otvori”, ako nijedna akreditacija nije odabrana</string>
<string name="allow_no_password_summary">Dozvoljava dodir gumba „Otvori”, ako nisu odabrani nikoji podaci za prijavu</string>
<string name="delete_entered_password_title">Izbriši lozinku</string>
<string name="delete_entered_password_summary">Briše upisanu lozinku nakon pokušaja povezivanja s bazom podataka</string>
<string name="enable_read_only_title">Zaštićeno od pisanja</string>
@@ -375,10 +366,8 @@
<string name="keyboard_entry_timeout_summary">Istek vremena za brisanje unosa tipkovnicom</string>
<string name="education_read_only_title">Zaštiti bazu podataka od pisanja</string>
<string name="autofill_web_domain_blocklist_title">Popis blokiranja web domena</string>
<string name="education_biometric_title">Biometrijsko otključavanje baze podataka</string>
<string name="kdf_AES">AES</string>
<string name="contribution">Doprinos</string>
<string name="open_biometric_prompt_store_credential">Za spremanje akreditacija, otvori biometrijsku prijavu</string>
<string name="error_label_exists">Ova oznaka već postoji.</string>
<string name="warning_database_read_only">Za spremanje promjena u bazi podataka, datoteci dozvoli pisanje</string>
<string name="app_timeout">Istek vremena aplikacije</string>
@@ -387,7 +376,7 @@
<string name="rounds_explanation">Dodatni prolazi šifriranja pružaju veću zaštitu od brutalnih napada, ali stvarno mogu usporiti učitavanje i spremanje.</string>
<string name="subdomain_search_summary">Traži web domene s ograničenjima poddomena</string>
<string name="keyboard_search_share_title">Traži dijeljene informacije</string>
<string name="html_text_dev_feature_upgrade">Ne zaboravi aktualizirati aplikaciju najnovijim verzijama.</string>
<string name="html_text_dev_feature_upgrade">Redovito aktualiziraj aplikaciju instaliranjem najnovijih verzija.</string>
<string name="autofill_block_restart">Za aktiviranje blokiranja, ponovo pokreni aplikaciju koja sadrži obrazac.</string>
<string name="education_sort_summary">Odaberi način razvrstavanja unosa i grupa.</string>
<string name="warning_database_link_revoked">Pristup datoteci koju je opozvao upravitelj datoteka</string>
@@ -405,24 +394,22 @@
<string name="html_text_dev_feature_contibute">&lt;strong&gt;Doprinosom&lt;/strong&gt;,</string>
<string name="education_entry_new_field_title">Dodaj prilagođena polja</string>
<string name="education_lock_summary">Zaključaj bazu podataka brzo, aplikaciju možeš postaviti tako da bazu nakon nekog vremena zaključa i kad se ekran isključi.</string>
<string name="kdf_Argon2">Argon2</string>
<string name="encryption_twofish">Twofish</string>
<string name="show_recent_files_summary">Prikaži mjesto nedavnih baza podataka</string>
<string name="education_biometric_summary">Za brzo otključavanje baze podataka, poveži lozinku sa skeniranom biometrijom.</string>
<string name="education_advanced_unlock_summary">Za brzo otključavanje baze podataka, poveži lozinku sa skeniranom biometrijom.</string>
<string name="html_text_donation">Kako bismo zadržali našu slobodu i uvijek bili aktivni, računamo na tvoj&lt;strong&gt;doprinos.&lt;/strong&gt;</string>
<string name="kdf_explanation">Za stvaranje ključa za algoritam šifriranja, glavni ključ se transformira pomoću funkcije za generiranje ključeva koja sadrži slučajnu komponentu.</string>
<string name="lock_database_back_root_summary">Zaključaj bazu podataka kad korisnik pritisne gumb za natrag na ekranu</string>
<string name="lock_database_back_root_summary">Zaključaj bazu podataka kad korisnik pritisne gumb za natrag na glavnom ekranu</string>
<string name="hide_broken_locations_title">Sakrij pokvarene poveznice baze podataka</string>
<string name="autofill_block">Blokiranje automatskog ispunjavanja</string>
<string name="keystore_not_accessible">Baza ključeva nije ispravno inicijalizirana.</string>
<string name="icon_pack_choose_summary">Paket ikona, koji se koristi u aplikaciji</string>
<string name="hide_expired_entries_summary">Istekli unosi se ne pokazuju</string>
<string name="education_lock_title">Zaključaj bazu podataka</string>
<string name="open_biometric_prompt_unlock_database">Za otključavanje baze podataka, otvori biometrijsku prijavu</string>
<string name="education_unlock_title">Otključaj bazu podataka</string>
<string name="biometric_auto_open_prompt_summary">Automatski traži biometriju, ako je baza podataka tako postavljena</string>
<string name="biometric_auto_open_prompt_summary">Automatski zatraži napredno otključavanje ako je baza podataka tako postavljena</string>
<string name="unavailable_feature_text">Nije moguće pokrenuti ovu funkciju.</string>
<string name="biometric_auto_open_prompt_title">Automatski otvori biometrijsku prijavu</string>
<string name="biometric_auto_open_prompt_title">Automatski otvori prozor za prijavu</string>
<string name="clipboard_timeout">Istek vremena međuspremnika</string>
<string name="education_search_title">Pretraži unose</string>
<string name="education_field_copy_title">Kopiraj jedno polje</string>
@@ -460,17 +447,16 @@
<string name="html_text_ad_free">Za razliku od mnogih aplikacija za upravljanje lozinkama, ova je &lt;strong&gt;bez oglasa&lt;/strong&gt;, &lt;strong&gt;copylefted slobodan softver&lt;/strong&gt; i ne prikuplja osobne podatke na svojim poslužiteljima, bez obzira na korištenu verziju.</string>
<string name="rounds">Transformacijski prolazi</string>
<string name="download_initialization">Inicijaliziranje …</string>
<string name="biometric_scanning_error">Biometrijska greška: %1$s</string>
<string name="education_donation_title">Sudjeluj</string>
<string name="education_new_node_summary">Unosi pomažu u upravljanju digitalnim identitetom.
\n
\nGrupe (~mape) organiziraju unose u bazi podataka.</string>
<string name="download_progression">U tijeku: %1$d%%</string>
<string name="download_complete">Gotovo!</string>
<string name="keyboard_previous_fill_in_summary">Automatski se vrati na prethodnu tipkovnicu nakon izvršavanja automatske radnje tipke</string>
<string name="keyboard_previous_fill_in_summary">Automatski se vrati na prethodnu tipkovnicu nakon izvršavanja „Automatska radnje tipke</string>
<string name="keyboard_previous_fill_in_title">Automatska radnja tipke</string>
<string name="keyboard_previous_database_credentials_summary">Automatski se prebaci na prethodnu tipkovnicu pri ekranu za unos podataka za prijavu u bazu podataka</string>
<string name="keyboard_previous_database_credentials_title">Ekran za unos podataka za prijavu u bazu podataka</string>
<string name="keyboard_previous_database_credentials_summary">Automatski se prebaci na prethodnu tipkovnicu pri ekranu za unos podataka za prijavu na bazu podataka</string>
<string name="keyboard_previous_database_credentials_title">Ekran za unos podataka za prijavu na bazu podataka</string>
<string name="keyboard_change">Promijeni tipkovnicu</string>
<string name="warning_file_too_big">Baza podataka za KeePass trebala bi sadržavati samo male datoteke uslužnih programa (poput PGP datoteke ključeva).
\n
@@ -487,7 +473,7 @@
<string name="database_data_remove_unlinked_attachments_title">Ukloni nepovezane podatke</string>
<string name="data">Podaci</string>
<string name="warning_sure_remove_data">Svejedno ukloniti ove podatke\?</string>
<string name="content_description_credentials_information">Podaci podataka prijave</string>
<string name="content_description_credentials_information">Podaci za prijavu</string>
<string name="autofill_save_search_info_summary">Pokušaj spremiti podatke pretrage prilikom odabira ručnog unosa</string>
<string name="notification">Obavijest</string>
<string name="error_registration_read_only">Nije dopušteno spremati novi element u zaštićenoj bazi podataka</string>
@@ -504,11 +490,41 @@
<string name="keyboard_save_search_info_summary">Pokušaj spremiti dijeljene informacije prilikom odabira ručnog unosa</string>
<string name="keyboard_save_search_info_title">Spremi dijeljene informacije</string>
<string name="warning_empty_recycle_bin">Trajno izbrisati sve čvorove iz smeća\?</string>
<string name="crypto_object_not_initialized">Nije moguće dohvatiti kripto objekt.</string>
<string name="biometric_prompt_not_initialized">Nije moguće pokrenuti biometrijsku prijavu.</string>
<string name="biometric_security_update_required">Potrebno je aktualizirati biometrijsku zaštitu.</string>
<string name="configure_biometric">Ne postoji biometrijski ključ niti podaci za prijavu uređaja.</string>
<string name="registration_mode">Modus registracije</string>
<string name="save_mode">Modus spremanja</string>
<string name="search_mode">Modus pretrage</string>
<string name="error_field_name_already_exists">Ime polja već postoji.</string>
<string name="advanced_unlock_delete_all_key_warning">Izbrisati sve ključeve šifriranja povezane s naprednim prepoznavanjem otključavanja\?</string>
<string name="credential_before_click_advanced_unlock_button">Upiši lozinku i zatim pritisni gumb „Napredno otključavanje”.</string>
<string name="advanced_unlock_prompt_extract_credential_title">Otvori bazu podataka pomoću naprednog prepoznavanja otključavanja</string>
<string name="advanced_unlock_prompt_store_credential_message">Upozorenje: Ako koristiš prepoznavanje naprednog otključavanja morat ćeš i dalje znati glavnu lozinku.</string>
<string name="menu_keystore_remove_key">Izbriši ključ naprednog otključavanja</string>
<string name="advanced_unlock_prompt_store_credential_title">Napredno prepoznavanje otključavanja</string>
<string name="advanced_unlock_prompt_not_initialized">Nije moguće pokrenuti prozor naprednog otključavanja.</string>
<string name="advanced_unlock_scanning_error">Greška naprednog otključavanja: %1$s</string>
<string name="advanced_unlock_prompt_extract_credential_message">Izdvoji podatake za prijavu na bazu podataka pomoću podataka naprednog otključavanja</string>
<string name="open_advanced_unlock_prompt_store_credential">Otvori prozor naprednog otključavanja za spremanje podataka za prijavu</string>
<string name="open_advanced_unlock_prompt_unlock_database">Otvori prozor naprednog otključavanja za otključavanje baze podataka</string>
<string name="advanced_unlock_not_recognized">Nije moguće prepoznati digitanlni otisak za napredno otključavanje</string>
<string name="advanced_unlock_invalid_key">Nije moguće pročitati ključ naprednog otključavanja. Izbriši ga i ponovi postupak prepoznavanja.</string>
<string name="enter">Tipka Enter</string>
<string name="backspace">Tipka Backspace</string>
<string name="select_entry">Odaberi unos</string>
<string name="back_to_previous_keyboard">Natrag na prethodnu tipkovnicu</string>
<string name="custom_fields">Prilagođena polja</string>
<string name="device_credential_unlock_enable_summary">Omogućuje otvaranje baze podataka pomoću podataka za prijavu</string>
<string name="device_credential_unlock_enable_title">Otključavanje s podacima za prijavu uređaja</string>
<string name="device_credential">Podaci za prijavu uređaja</string>
<string name="advanced_unlock_tap_delete">Dodirni za brisanje ključeva naprednog otključavanja</string>
<string name="education_advanced_unlock_title">Napredno otključavanje baze podataka</string>
<string name="advanced_unlock_timeout">Vremensko ograničenje neprednog otključavanja</string>
<string name="temp_advanced_unlock_timeout_summary">Trajanje korištenja naprednog otključavanja prije brisanja sadržaja</string>
<string name="temp_advanced_unlock_timeout_title">Istek naprednog otključavanja</string>
<string name="temp_advanced_unlock_enable_summary">Nemoj spremati šifrirani sadržaj za napredno otključavanje</string>
<string name="content">Sadržaj</string>
<string name="temp_advanced_unlock_enable_title">Privremeno napredno otključavanje</string>
<string name="kdf_Argon2id">Argon2id</string>
<string name="kdf_Argon2d">Argon2d</string>
</resources>

View File

@@ -137,11 +137,7 @@
<string name="warning">Figyelmeztetés</string>
<string name="warning_password_encoding">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).</string>
<string name="version_label">Verzió: %1$s</string>
<string name="open_biometric_prompt_unlock_database">Ujjlenyomat-leolvasás megnyitása az adatbázis feloldásához</string>
<string name="encrypted_value_stored">Titkosított jelszó tárolva</string>
<string name="biometric_invalid_key">Az biometrikus kulcs nem olvasható. Törölje, és ismételje meg a biometrikus felismerési folyamatot.</string>
<string name="biometric_scanning_error">Ujjlenyomat probléma: %1$s</string>
<string name="open_biometric_prompt_store_credential">Használjon ujjlenyomatot a jelszó tárolásához</string>
<string name="no_credentials_stored">Az adatbázisnak még nincs jelszava.</string>
<string name="education_unlock_summary">Adja meg a jelszót és/vagy a kulcsfájlt, hogy kinyithassa az adatbázist.
\n
@@ -180,7 +176,6 @@
<string name="menu_move">Áthelyezés</string>
<string name="menu_paste">Beillesztés</string>
<string name="menu_cancel">Mégse</string>
<string name="menu_biometric_remove_key">Mentett ujjlenyomat törlése</string>
<string name="menu_file_selection_read_only">Írásvédett</string>
<string name="menu_open_file_read_and_write">Módosítható</string>
<string name="create_keepass_file">Új adatbázis létrehozása</string>
@@ -202,7 +197,6 @@
<string name="warning_empty_password">Biztos, hogy jelszavas feloldási védelem nélkül folytatja\?</string>
<string name="warning_no_encryption_key">Biztos, hogy titkosítási kulcs nélkül folytatja\?</string>
<string name="build_label">Összeállítás: %1$s</string>
<string name="biometric_not_recognized">Az ujjlenyomat nem ismerhető fel</string>
<string name="database_history">Előzmények</string>
<string name="menu_appearance_settings">Megjelenés</string>
<string name="general">Általános</string>
@@ -227,7 +221,6 @@
<string name="biometric_unlock_enable_summary">Lehetővé teszi, hogy leolvassa az ujjlenyomatát az adatbázis megnyitásához</string>
<string name="biometric_delete_all_key_title">Titkosítási kulcsok törlése</string>
<string name="biometric_delete_all_key_summary">Az összes ujjlenyomat-felismeréssel kapcsolatos titkosítási kulcs törlése</string>
<string name="biometric_delete_all_key_warning">Biztos, hogy törli az összes ujjlenyomat-felismeréssel kapcsolatos titkosítási kulcsot\?</string>
<string name="unavailable_feature_text">A funkciót nem sikerült elindítani.</string>
<string name="unavailable_feature_version">Az eszköz Android %1$s rendszert futtat, de %2$s vagy újabb szükséges.</string>
<string name="unavailable_feature_hardware">Nem található a megfelelő hardver.</string>
@@ -287,8 +280,6 @@
\nA csoportok (~mappák) rendszerezik a bejegyzéseket az adatbázisban.</string>
<string name="education_search_title">Keresés a bejegyzések között</string>
<string name="education_search_summary">Adja meg a címet, felhasználónevet vagy más mezők tartalmát, hogy lekérje a jelszavát.</string>
<string name="education_biometric_title">Adatbázis feloldása ujjlenyomattal</string>
<string name="education_biometric_summary">Kösse össze a jelszavát a mentett ujjlenyomatával, hogy gyorsan fel tudja oldani az adatbázist.</string>
<string name="education_entry_edit_title">Bejegyzés szerkesztése</string>
<string name="education_generate_password_title">Erős jelszó létrehozása</string>
<string name="education_generate_password_summary">Állítson elő egy erős jelszót, és rendelje hozzá a bejegyzéshez, adja meg egyszerűen az űrlap feltételeinek megfelelően, és ne felejtse el biztonságosan tárolni.</string>
@@ -326,7 +317,6 @@
<string name="contribute">Támogatás</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Alkalmazástéma</string>
<string name="style_choose_summary">Az alkalmazásban használt téma</string>
<string name="icon_pack_choose_title">Ikoncsomag</string>
@@ -352,10 +342,6 @@
<string name="lock_database_show_button_title">Zárolás gomb megjelenítése</string>
<string name="lock_database_back_root_summary">Az adatbázis zárolása, ha a felhasználó a vissza gombra kattint az indítóképernyőn</string>
<string name="autofill_preference_title">Automatikus kitöltés beállításai</string>
<string name="biometric_prompt_extract_credential_message">Adatbázis hitelesítő adatainak kinyerése ujjlenyomattal</string>
<string name="biometric_prompt_extract_credential_title">Adatbázis megnyitása ujjlenyomat-felismeréssel</string>
<string name="biometric_prompt_store_credential_message">Figyelmeztetés: Továbbra is meg kell jegyeznie a mesterjelszót, ha ujjlenyomat-felismerést használ.</string>
<string name="biometric_prompt_store_credential_title">Ujjlenyomat mentése</string>
<string name="warning_database_link_revoked">A fájlhoz történő hozzáférést visszavonta a fájlkezelő</string>
<string name="warning_database_read_only">Fájlírási-hozzáférés megadása az adatbázis-változások mentéséhez</string>
<string name="hide_broken_locations_summary">A törött adatbázis-hivatkozások elrejtése a nemrég használt adatbázisok listájában</string>
@@ -394,7 +380,6 @@
<string name="enable_auto_save_database_summary">Az adatbázis mentése minden fontos művelet után („Módosítható” módban)</string>
<string name="enable_auto_save_database_title">Adatbázis automatikus mentése</string>
<string name="recycle_bin_group_title">Kuka csoportja</string>
<string name="credential_before_click_biometric_button">Írja be a jelszót, majd kattintson az „Ujjlenyomat” gombra.</string>
<string name="keystore_not_accessible">Az kulcstár nincs helyesen előkészítve.</string>
<string name="warning_permanently_delete_nodes">Biztos, hogy végleg törli a kiválasztott csomópontokat\?</string>
<string name="command_execution">Parancs végrehajtása…</string>
@@ -479,8 +464,6 @@
<string name="database_data_remove_unlinked_attachments_summary">Eltávolítja azokat a mellékleteket, melyek az adatbázisban szerepelnek, de nem tartoznak bejegyzéshez</string>
<string name="database_data_remove_unlinked_attachments_title">Nem összekapcsolt adatok eltávolítása</string>
<string name="data">Adatok</string>
<string name="crypto_object_not_initialized">A titkosítási objektum nem kérhető le.</string>
<string name="biometric_prompt_not_initialized">A biometrikus leolvasás nem készíthető elő.</string>
<string name="biometric_security_update_required">Biometrikus biztonsági frissítés szükséges.</string>
<string name="configure_biometric">Nincs biometrikus vagy eszközazonosító beállítva.</string>
<string name="warning_empty_keyfile_explanation">A kulcsfájl tartalmának sosem szabad megváltoznia, és a legjobb esetben véletlenszerűen előállított adatokat kellene tartalmaznia.</string>

View File

@@ -9,7 +9,6 @@
<string name="menu_open_file_read_and_write">Bisa Diubah</string>
<string name="menu_file_selection_read_only">Lindungi Dari Perubahan</string>
<string name="menu_url">Membuka Tautan</string>
<string name="menu_biometric_remove_key">Hapus Kunci Sidik Jari Yang Tersimpan</string>
<string name="menu_showpass">Tampilkan Kata Sandi</string>
<string name="menu_search">Cari</string>
<string name="menu_open">Buka</string>

View File

@@ -27,11 +27,11 @@
<string name="add_group">Aggiungi gruppo</string>
<string name="encryption_algorithm">Algoritmo di cifratura</string>
<string name="app_timeout">Scadenza app</string>
<string name="app_timeout_summary">Tempo di inattività prima del blocco dell\'app</string>
<string name="app_timeout_summary">Tempo di inattività prima del blocco del database</string>
<string name="application">App</string>
<string name="menu_app_settings">Impostazioni app</string>
<string name="brackets">Parentesi</string>
<string name="file_manager_install_description">È necessario un file manager che accetti gli Intent ACTION_CREATE_DOCUMENT e ACTION_OPEN_DOCUMENT per creare, aprire e salvare i file di database.</string>
<string name="file_manager_install_description">Un file manager che accetta intent action ACTION_CREATE_DOCUMENT e ACTION_OPEN_DOCUMENT è necessario creare, aprire e salvare i file del database.</string>
<string name="clipboard_cleared">Appunti eliminati</string>
<string name="clipboard_error_title">Errore negli appunti</string>
<string name="clipboard_error">Alcuni dispositivi non permettono alle app di usare gli appunti.</string>
@@ -39,8 +39,8 @@
<string name="clipboard_timeout">Scadenza appunti</string>
<string name="clipboard_timeout_summary">Tempo prima di eliminare gli appunti (se supportato dal dispositivo)</string>
<string name="select_to_copy">Copia %1$s negli appunti</string>
<string name="retrieving_db_key">Creazione file chiave database…</string>
<string name="database">Banca dati</string>
<string name="retrieving_db_key">Recupero chiave database…</string>
<string name="database">Database</string>
<string name="decrypting_db">Decodifica contenuto database…</string>
<string name="default_checkbox">Usa come database predefinito</string>
<string name="digits">Numeri</string>
@@ -64,15 +64,15 @@
<string name="error_arc4">La codifica a flusso Arcfour non è supportata.</string>
<string name="error_can_not_handle_uri">KeePassDX non può gestire questo URI.</string>
<string name="error_file_not_create">Impossibile creare il file</string>
<string name="error_invalid_db">Lettura del database fallita.</string>
<string name="error_invalid_db">Impossibile leggere il database.</string>
<string name="error_invalid_path">Assicurati che il percorso sia corretto.</string>
<string name="error_no_name">Inserisci un nome.</string>
<string name="error_out_of_memory">Memoria insufficiente per caricare l\'intero database.</string>
<string name="error_pass_gen_type">Deve essere selezionato almeno un tipo di generazione password.</string>
<string name="error_pass_match">Le password non corrispondono.</string>
<string name="error_rounds_too_large">\"Livello\" troppo alto. Impostato a 2147483648.</string>
<string name="error_rounds_too_large">«Livello» troppo alto. Impostato a 2147483648.</string>
<string name="error_string_key">Ogni stringa deve avere un nome.</string>
<string name="error_wrong_length">Inserisci un numero naturale positivo nel campo \"lunghezza\".</string>
<string name="error_wrong_length">Inserisci un numero intero positivo nel campo \"Lunghezza\".</string>
<string name="field_name">Nome campo</string>
<string name="field_value">Valore campo</string>
<string name="file_not_found_content">File non trovato. Prova a riaprirlo dal tuo gestore di file.</string>
@@ -87,12 +87,12 @@
<string name="hint_pass">Password</string>
<string name="invalid_credentials">Non è possibile leggere le credenziali.</string>
<string name="invalid_algorithm">Algoritmo errato.</string>
<string name="invalid_db_sig">Formato database non riconosciuto.</string>
<string name="invalid_db_sig">Formato del database non riconosciuto.</string>
<string name="keyfile_is_empty">Il file chiave è vuoto.</string>
<string name="length">Lunghezza</string>
<string name="list_size_title">Dimensione elenco elementi</string>
<string name="list_size_summary">Dimensione del testo nell\'elenco del gruppo</string>
<string name="loading_database">Caricamento database…</string>
<string name="loading_database">Caricamento del database…</string>
<string name="lowercase">Minuscole</string>
<string name="hide_password_title">Nascondi le password</string>
<string name="hide_password_summary">Maschera le password (***) in modo predefinito</string>
@@ -114,38 +114,34 @@
<string name="no_results">Nessun risultato di ricerca</string>
<string name="no_url_handler">Installa un browser web per aprire questo URL.</string>
<string name="omit_backup_search_title">Non cercare nelle voci di backup</string>
<string name="omit_backup_search_summary">Ometti i gruppi \"Backup\" e \"Cestino\" dai risultati di ricerca</string>
<string name="progress_create">Creazione nuovo database…</string>
<string name="omit_backup_search_summary">Ometti i gruppi «Backup» e «Cestino» dai risultati di ricerca</string>
<string name="progress_create">Creazione di un nuovo database…</string>
<string name="progress_title">In corso…</string>
<string name="protection">Protezione</string>
<string name="read_only">Sola lettura</string>
<string name="read_only_warning">KeePassDX richiede l\'autorizzazione di scrittura per poter modificare il tuo database.</string>
<string name="read_only_warning">A seconda del tuo file manager, KeepassDX potrebbe non riuscire a scrivere sulla memoria.</string>
<string name="content_description_remove_from_list">Elimina</string>
<string name="root">Root</string>
<string name="rounds">Livello cifratura</string>
<string name="rounds_explanation">Livelli di cifratura aggiuntivi forniscono una maggiore protezione contro attacchi di tipo forza bruta, ma può rallentare il caricamento e il salvataggio.</string>
<string name="saving_database">Salvataggio database…</string>
<string name="saving_database">Salvataggio del database…</string>
<string name="space">Spazio</string>
<string name="search_label">Cerca</string>
<string name="sort_db">Ordine naturale</string>
<string name="special">Speciali</string>
<string name="search">Titolo/descrizione voce</string>
<string name="search_results">Risultati ricerca</string>
<string name="search">Cerca</string>
<string name="search_results">Risultati della ricerca</string>
<string name="underline">Trattino basso</string>
<string name="unsupported_db_version">Versione database non supportata.</string>
<string name="unsupported_db_version">Versione del database non supportata.</string>
<string name="uppercase">Maiuscole</string>
<string name="warning">Attenzione</string>
<string name="warning_password_encoding">Evita password con caratteri al di fuori del formato di codifica del testo nel file di database (i caratteri non riconosciuti vengono convertiti nella stessa lettera).</string>
<string name="warning_password_encoding">Evita password con caratteri al di fuori del formato di codifica del testo nel file del database (i caratteri non riconosciuti vengono convertiti nella stessa lettera).</string>
<string name="version_label">Versione %1$s</string>
<string name="open_biometric_prompt_unlock_database">Usa la scansione impronte per sbloccare la banca dati</string>
<string name="encrypted_value_stored">Password criptata salvata</string>
<string name="biometric_invalid_key">Impossibile leggere la chiave biometrica. Eliminala e ripeti la procedura di riconoscimento.</string>
<string name="biometric_scanning_error">Problema impronta: %1$s</string>
<string name="open_biometric_prompt_store_credential">Usa l\'impronta per salvare questa password</string>
<string name="no_credentials_stored">Questo database non ha ancora alcuna password.</string>
<string name="education_unlock_summary">Inserisci la password e/o il file chiave per sbloccare il database.
<string name="no_credentials_stored">Questo database non contiene alcuna credenziale.</string>
<string name="education_unlock_summary">Inserisci la password o il file chiave per sbloccare la base di dati.
\n
\nEseguire il backup del file di database in un luogo sicuro dopo ogni modifica.</string>
\nEseguire il backup del file del database in un luogo sicuro dopo ogni modifica.</string>
<string-array name="timeout_options">
<item>5 secondi</item>
<item>10 secondi</item>
@@ -175,7 +171,6 @@
<string name="menu_move">Sposta</string>
<string name="menu_paste">Incolla</string>
<string name="menu_cancel">Annulla</string>
<string name="menu_biometric_remove_key">Elimina l\'impronta digitale salvata</string>
<string name="menu_file_selection_read_only">Sola lettura</string>
<string name="menu_open_file_read_and_write">Modificabile</string>
<string name="encryption_explanation">Algoritmo di cifratura del database usato per tutti i dati.</string>
@@ -193,9 +188,8 @@
<string name="sort_creation_time">Creazione</string>
<string name="sort_last_modify_time">Modifica</string>
<string name="sort_last_access_time">Accesso</string>
<string name="warning_empty_password">Continuare senza aver impostato una password di sblocco \?</string>
<string name="warning_empty_password">Continuare senza aver impostato una password di sblocco\?</string>
<string name="warning_no_encryption_key">Continuare senza una chiave di cifratura\?</string>
<string name="biometric_not_recognized">Impronta non riconosciuta</string>
<string name="database_history">Cronologia</string>
<string name="menu_appearance_settings">Aspetto</string>
<string name="general">Generale</string>
@@ -218,33 +212,32 @@
<string name="biometric_unlock_enable_title">Scansione di impronte</string>
<string name="biometric_unlock_enable_summary">Consente la scansione biometrica per aprire il database</string>
<string name="biometric_delete_all_key_title">Elimina chiavi di cifratura</string>
<string name="biometric_delete_all_key_summary">Elimina tutte le chiavi di cifratura relative al riconoscimento dell\'impronta</string>
<string name="biometric_delete_all_key_warning">Eliminare tutte le chiavi di cifrature associate al riconoscimento biometrico \?</string>
<string name="biometric_delete_all_key_summary">Elimina tutte le chiavi di cifratura relative allo sblocco avanzato</string>
<string name="unavailable_feature_text">Impossibile avviare questa funzione.</string>
<string name="unavailable_feature_version">La tua versione di Android %1$s non è la minima %2$s richiesta.</string>
<string name="unavailable_feature_version">Il dispositivo usa Android %1$s, ma richiede %2$s o versioni successive.</string>
<string name="unavailable_feature_hardware">L\'hardware relativo non è stato trovato.</string>
<string name="file_name">Nome file</string>
<string name="path">Percorso</string>
<string name="assign_master_key">Assegna una chiave master</string>
<string name="create_keepass_file">Crea un nuovo database</string>
<string name="recycle_bin_title">Uso del Cestino</string>
<string name="recycle_bin_summary">Sposta i gruppi e le voci nel gruppo \"Cestino\" prima di eliminarlo</string>
<string name="recycle_bin_summary">Sposta i gruppi e le voci nel gruppo «Cestino» prima di eliminarlo</string>
<string name="monospace_font_fields_enable_title">Carattere campi</string>
<string name="monospace_font_fields_enable_summary">Cambia il carattere usato nei campi per una migliore visibilità</string>
<string name="allow_copy_password_title">Fiducia appunti</string>
<string name="allow_copy_password_summary">Permetti la copia della password e dei campi protetti negli appunti</string>
<string name="allow_copy_password_summary">Consenti la copia della password e dei campi protetti negli appunti</string>
<string name="allow_copy_password_warning">Attenzione: gli appunti sono condivisi da tutte le app. Se vengono copiati dati sensibili, altri software possono recuperarli.</string>
<string name="database_name_title">Nome database</string>
<string name="database_description_title">Descrizione database</string>
<string name="database_version_title">Versione database</string>
<string name="database_name_title">Nome del database</string>
<string name="database_description_title">Descrizione del database</string>
<string name="database_version_title">Versione del database</string>
<string name="text_appearance">Testo</string>
<string name="application_appearance">App</string>
<string name="application_appearance">Interfaccia</string>
<string name="other">Altro</string>
<string name="keyboard">Tastiera</string>
<string name="magic_keyboard_title">Magitastiera</string>
<string name="magic_keyboard_explanation_summary">Attiva una tastiera personale che popola le tue password e i campi di identità</string>
<string name="allow_no_password_title">Non consentire nessuna chiave principale</string>
<string name="allow_no_password_summary">Abilita il pulsante «Apri» se le credenziali non sono selezionate</string>
<string name="allow_no_password_summary">Permetti di toccare il pulsante \"Apri\" se non sono selezionate credenziali</string>
<string name="enable_read_only_title">Protetto da scrittura</string>
<string name="enable_read_only_summary">Apri il database in sola lettura in modo predefinito</string>
<string name="enable_education_screens_title">Suggerimenti educativi</string>
@@ -252,67 +245,63 @@
<string name="reset_education_screens_title">Ripristina i suggerimenti educativi</string>
<string name="reset_education_screens_summary">Mostra di nuovo tutte le informazioni educative</string>
<string name="reset_education_screens_text">Suggerimenti educativi ripristinati</string>
<string name="education_create_database_title">Crea il tuo file di database</string>
<string name="education_create_database_title">Crea il tuo file database</string>
<string name="education_create_database_summary">Crea il tuo primo file di gestione password.</string>
<string name="education_select_database_title">Apri un database esistente</string>
<string name="education_select_database_summary">Apri il tuo file database precedente dal tuo gestore di file per continuare ad usarlo.</string>
<string name="education_select_database_title">Apri un database esitente</string>
<string name="education_select_database_summary">Apri il tuo file database usato in precedenza con il file manager per continuare ad usarlo.</string>
<string name="education_new_node_title">Aggiungi elementi al tuo database</string>
<string name="education_new_node_summary">Gli elementi aiutano a gestire le tue identità digitali.
\n
\nI gruppi (~ cartelle) organizzano gli elementi nel database.</string>
<string name="education_new_node_summary">Gli elementi aiutano a gestire le tue identità digitali.
\n
\nI gruppi (come cartelle) organizzano gli elementi nel database.</string>
<string name="education_search_title">Cerca tra gli elementi</string>
<string name="education_search_summary">Inserisci il titolo, il nome utente o il contenuto di altri campi per recuperare le tue password.</string>
<string name="education_biometric_title">Sblocco del database tramite impronta digitale</string>
<string name="education_biometric_summary">Collega la password alla tua impronta digitale per sbloccare velocemente il database.</string>
<string name="education_entry_edit_title">Modifica l\'elemento</string>
<string name="education_entry_edit_summary">Modifica l\'elemento con campi personalizzati. I dati possono fare riferimento ad altri campi.</string>
<string name="education_generate_password_title">Crea una password robusta</string>
<string name="education_generate_password_summary">Genera una password robusta da associare all\'elemento, definiscila a seconda dei criteri del modulo e non dimenticare di tenerla al sicuro.</string>
<string name="education_entry_new_field_title">Aggiungi campi personalizzati</string>
<string name="education_entry_new_field_summary">Registra un campo aggiuntivo, inserisci delle informazioni e proteggilo se necessario.</string>
<string name="education_entry_new_field_summary">Registra un campo aggiuntivo, aggiungi un valore e facoltativamente proteggilo.</string>
<string name="education_unlock_title">Sblocca il tuo database</string>
<string name="education_read_only_title">Proteggi da scrittura il tuo database</string>
<string name="education_read_only_summary">Cambia la modalità di apertura per la sessione.
\n
\n\"Sola lettura\" impedisce modifiche accidentali al database.
\n\"Modificabile\" permette di aggiungere, eliminare o modificare tutti gli elementi.</string>
<string name="education_read_only_summary">Cambia la modalità di apertura per la sessione.
\n
\n«Sola lettura» impedisce modifiche accidentali al databae.
\n«Modificabile» permette di aggiungere, eliminare o modificare tutti gli elementi.</string>
<string name="education_field_copy_title">Copia un campo</string>
<string name="education_field_copy_summary">I campi copiati possono essere incollati ovunque.
\n
\nUsa il metodo di inserimento che preferisci.</string>
<string name="education_lock_title">Blocca il database</string>
<string name="education_lock_summary">Blocca velocemente il database, puoi impostare l\'app per bloccarlo dopo un certo periodo e quando lo schermo si spegne.</string>
<string name="education_lock_summary">Blocca velocemente il database, puoi impostare l\'applicazione per bloccarsi dopo un certo periodo e quando lo schermo si spegne.</string>
<string name="education_sort_title">Ordine elementi</string>
<string name="education_sort_summary">Scegli l\'ordine di elementi e gruppi.</string>
<string name="education_donation_title">Partecipa</string>
<string name="education_donation_summary">Aiuta a migliorare la stabilità, la sicurezza e ad aggiungere nuove funzioni.</string>
<string name="html_text_ad_free">Diversamente da molte app di gestione password, questa è &lt;strong&gt;senza pubblicità&lt;/strong&gt;, &lt;strong&gt;software libero (copyleft)&lt;/strong&gt; e non raccoglie dati personali nei suoi server, non importa quale versione usi.</string>
<string name="html_text_buy_pro">Acquistando la versione pro, avrai accesso a questo &lt;strong&gt;tema&lt;/strong&gt; e soprattutto aiuterai nella &lt;strong&gt;realizzazione di progetti della comunità.&lt;/strong&gt;</string>
<string name="html_text_feature_generosity">Questo&lt;strong&gt;tema&lt;/strong&gt; è disponibile grazie alla tua generosità.</string>
<string name="html_text_donation">Per mantenere la nostra libertà ed essere sempre attivi, contiamo sul tuo &lt;strong&gt;contributo.&lt;/strong&gt;
</string>
<string name="html_text_buy_pro">Acquistando la versione pro, avrai accesso a questa &lt;strong&gt;stile visivo&lt;/strong&gt; e soprattutto aiuterai nella &lt;strong&gt;realizzazione dei progetti della comunità.&lt;/strong&gt;</string>
<string name="html_text_feature_generosity">Questa &lt;strong&gt;stile visivo&lt;/strong&gt; è disponibile grazie alla tua generosità.</string>
<string name="html_text_donation">Al fine di mantenere la nostra libertà ed essere sempre attivi, contiamo sul tuo &lt;strong&gt;contributo.&lt;/strong&gt;</string>
<string name="html_text_dev_feature">Questa funzione è &lt;strong&gt;in sviluppo&lt;/strong&gt; e richiede il tuo &lt;strong&gt;contributo&lt;/strong&gt; per essere disponibile a breve.</string>
<string name="html_text_dev_feature_buy_pro">Acquistando la versione &lt;strong&gt;pro&lt;/strong&gt;,</string>
<string name="html_text_dev_feature_contibute">
&lt;strong&gt;Contribuendo&lt;/strong&gt;,</string>
<string name="html_text_dev_feature_encourage">incoraggi gli sviluppatori a creare &lt;strong&gt;nuove funzioni&lt;/strong&gt; e a &lt;strong&gt;correggere errori&lt;/strong&gt; secondo le tue osservazioni.</string>
<string name="html_text_dev_feature_encourage">stai incoraggiando gli sviluppatori a creare &lt;strong&gt;nuove funzionalità&lt;/strong&gt; e a &lt;strong&gt;correggere errori&lt;/strong&gt; in base alle tue osservazioni.</string>
<string name="html_text_dev_feature_thanks">Grazie mille per il tuo contributo.</string>
<string name="html_text_dev_feature_work_hard">Stiamo lavorando sodo per rilasciare questa funzione a breve.</string>
<string name="html_text_dev_feature_upgrade">Non dimenticare di tenere aggiornata l\'app installando nuove versioni.</string>
<string name="html_text_dev_feature_upgrade">Ricorda di tenere aggiornata l\'app installando le nuove versioni.</string>
<string name="download">Scarica</string>
<string name="contribute">Contribuisci</string>
<string name="encryption_rijndael">Rijndael (AES)</string>
<string name="encryption_twofish">Twofish</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Tema dell\'app</string>
<string name="style_choose_summary">Tema usato nell\'app</string>
<string name="icon_pack_choose_title">Pacchetto icone</string>
<string name="icon_pack_choose_summary">Pacchetto icone usato nell\'app</string>
<string name="edit_entry">Modifica elemento</string>
<string name="error_load_database">Caricamento del database fallito.</string>
<string name="error_load_database_KDF_memory">Caricamento della chiave fallito. Prova a diminuire l\' \"Utilizzo memoria\" del KDF.</string>
<string name="error_load_database_KDF_memory">Caricamento della chiave fallito. Prova a diminuire l\'«Utilizzo memoria» del KDF.</string>
<string name="list_entries_show_username_title">Mostra nomi utente</string>
<string name="list_entries_show_username_summary">Mostra i nomi utente negli elenchi</string>
<string name="clipboard">Appunti</string>
@@ -338,7 +327,7 @@
<string name="selection_mode">Modalità selezione</string>
<string name="do_not_kill_app">Non terminare l\'app…</string>
<string name="lock_database_back_root_title">Premere \'\'Indietro\'\' per bloccare</string>
<string name="lock_database_back_root_summary">Bloccare il database quando l\'utente preme il pulsante Indietro nella schermata principale</string>
<string name="lock_database_back_root_summary">Blocca il database quando l\'utente preme il pulsante Indietro nella schermata principale</string>
<string name="clear_clipboard_notification_title">Pulisci alla chiusura</string>
<string name="clear_clipboard_notification_summary">Blocca il database quando scade la durata degli appunti o la notifica viene chiusa dopo che inizi ad usarlo</string>
<string name="recycle_bin">Cestino</string>
@@ -379,8 +368,8 @@
<string name="otp_counter">Contatore</string>
<string name="otp_digits">Cifre</string>
<string name="otp_algorithm">Algoritmo</string>
<string name="entry_otp">Password usa e getta</string>
<string name="error_invalid_OTP">Segreto per password usa e getta (OTP) non valido.</string>
<string name="entry_otp">Password usa e getta (OTP)</string>
<string name="error_invalid_OTP">Segreto della password usa e getta (OTP) non valido.</string>
<string name="error_disallow_no_credentials">Impostare almeno una credenziale.</string>
<string name="error_copy_group_here">Non puoi copiare un gruppo qui.</string>
<string name="error_otp_secret_key">La chiave segreta deve essere nel formato Base32.</string>
@@ -390,9 +379,9 @@
<string name="invalid_db_same_uuid">%1$s con le stesse credenziali univoche %2$s è già esistente.</string>
<string name="creating_database">Sto creando il database…</string>
<string name="menu_security_settings">Impostazioni di sicurezza</string>
<string name="contains_duplicate_uuid">Il databse contiene identificativi univoci univerali duplicati.</string>
<string name="contains_duplicate_uuid">Il database contiene Identificativi Univoci Universali (UUID) duplicati.</string>
<string name="error_save_database">Non è possibile salvare il database.</string>
<string name="menu_save_database">Salva il database</string>
<string name="menu_save_database">Salva database</string>
<string name="menu_empty_recycle_bin">Svuota il cestino</string>
<string name="command_execution">Esecuzione del comando…</string>
<string name="warning_permanently_delete_nodes">Vuoi eliminare definitivamente i nodi selezionati\?</string>
@@ -403,22 +392,19 @@
<string name="menu_restore_entry_history">Ripristina cronologia</string>
<string name="html_about_contribution">Per poter &lt;strong&gt;mantenere la nostra libertà&lt;/strong&gt;, &lt;strong&gt;risolvere bug&lt;/strong&gt;, &lt;strong&gt;aggiungere funzionalità&lt;/strong&gt; ed &lt;strong&gt;essere sempre attivi&lt;/strong&gt;, facciamo affidamento sul tuo &lt;strong&gt;contributo&lt;/strong&gt;.</string>
<string name="contact">Contatto</string>
<string name="biometric_prompt_extract_credential_title">Apri il database con il riconoscimento biometrico</string>
<string name="biometric_prompt_store_credential_title">Salva il riconoscimento biometrico</string>
<string name="keystore_not_accessible">Il keystore non è inizializzato correttamente.</string>
<string name="menu_master_key_settings">Impostazioni della chiave principale</string>
<string name="master_key">Chiave principale</string>
<string name="contribution">Contribuisci</string>
<string name="biometric_prompt_store_credential_message">Attenzione: Devi comunque ricordarti la password principale anche se usi il riconoscimento biometrico.</string>
<string name="warning_database_read_only">Garantisci il permesso di scrittura per salvare i cambiamenti del database</string>
<string name="hide_broken_locations_summary">Nascondi link corrotti nella lista dei database recenti</string>
<string name="hide_broken_locations_title">Nascondi i link di database corrotti</string>
<string name="contribution">Contributi</string>
<string name="warning_database_read_only">Concedi il permesso di scrittura per salvare i cambiamenti del database</string>
<string name="hide_broken_locations_summary">Nascondi collegamenti corrotti nella lista dei database recenti</string>
<string name="hide_broken_locations_title">Nascondi i collegamenti dei database corrotti</string>
<string name="show_recent_files_summary">Mostra le posizioni dei database recenti</string>
<string name="show_recent_files_title">Mostra file recenti</string>
<string name="remember_keyfile_locations_title">Salva la posizione dei keyfile</string>
<string name="remember_keyfile_locations_title">Ricorda posizione file chiave</string>
<string name="remember_database_locations_summary">Ricorda la posizione dei database</string>
<string name="remember_database_locations_title">Salva posizione dei database</string>
<string name="contains_duplicate_uuid_procedure">Per continuare, risolvi il problema generando nuovi UUIDs per i duplicati \?</string>
<string name="remember_database_locations_title">Ricorda posizione database</string>
<string name="contains_duplicate_uuid_procedure">Per continuare, risolvi il problema generando nuovi UUID per i duplicati\?</string>
<string name="error_create_database">Impossibile creare il file del database.</string>
<string name="entry_add_attachment">Aggiungi allegato</string>
<string name="discard">Scarta</string>
@@ -426,53 +412,51 @@
<string name="validate">Convalida</string>
<string name="max_history_size_title">Dimensione massima</string>
<string name="max_history_items_title">Numero massimo</string>
<string name="biometric_auto_open_prompt_title">Apri automaticamente prompt biometrico</string>
<string name="biometric_auto_open_prompt_title">Apri automaticamente la richiesta</string>
<string name="max_history_size_summary">Limita la dimensione (in byte) della cronologia per voce</string>
<string name="max_history_items_summary">Limita il numero di elementi della cronologia per voce</string>
<string name="recycle_bin_group_title">Gruppo cestino</string>
<string name="database_data_compression_summary">La compressione dei dati riduce le dimensioni del database</string>
<string name="database_data_compression_title">Compressione dati</string>
<string name="biometric_auto_open_prompt_summary">Proponi l\'autenticazione biometrica quando il database è configurato per usarla</string>
<string name="biometric_auto_open_prompt_summary">Richiedi automaticamente lo sblocco avanzato se il database è impostato per usarlo</string>
<string name="advanced_unlock_explanation_summary">Utilizza lo sblocco avanzato per aprire il database più facilmente</string>
<string name="clipboard_explanation_summary">Copia i campi di immissione utilizzando gli appunti del tuo dispositivo</string>
<string name="database_opened">Database aperto</string>
<string name="biometric">Biometrico</string>
<string name="credential_before_click_biometric_button">Digita la password e poi fai clic sul pulsante biometrico.</string>
<string name="biometric_prompt_extract_credential_message">Estrai le credenziali del database con dati biometrici</string>
<string name="settings_database_force_changing_master_key_title">Forza rinnovo</string>
<string name="settings_database_recommend_changing_master_key_summary">Consigliato cambiare la chiave principale (giorni)</string>
<string name="settings_database_recommend_changing_master_key_summary">È consigliato di cambiare la chiave principale (giorni)</string>
<string name="settings_database_recommend_changing_master_key_title">Rinnovo raccomandato</string>
<string name="hide_expired_entries_summary">I record scaduti sono nascosti</string>
<string name="hide_expired_entries_title">Nascondi i record scaduti</string>
<string name="hide_expired_entries_summary">Le voci scadute non sono mostrate</string>
<string name="hide_expired_entries_title">Nascondi le voci scadute</string>
<string name="education_setup_OTP_summary">Imposta la gestione delle OTP (HOTP / TOTP) per generare un token richiesto per la 2FA.</string>
<string name="download_complete">Completo!</string>
<string name="download_complete">Completato!</string>
<string name="download_finalization">Finalizzazione…</string>
<string name="download_progression">Avanzamento %1$d%%</string>
<string name="download_initialization">Inizializzazione…</string>
<string name="download_attachment">Scaricamento %1$s</string>
<string name="education_setup_OTP_title">Imposta OTP</string>
<string name="enable_auto_save_database_summary">Salva il database dopo ogni azione importante (in modalità \"Modificabile\")</string>
<string name="education_setup_OTP_title">Imposta One-Time Password (OTP)</string>
<string name="enable_auto_save_database_summary">Salva il database dopo ogni azione importante (in modalità «Modificabile»)</string>
<string name="enable_auto_save_database_title">Salvataggio automatico del database</string>
<string name="autofill_auto_search_summary">Suggerisci automaticamente risultati dal dominio web o ID dell\'applicazione</string>
<string name="autofill_auto_search_title">Ricerca automatica</string>
<string name="keyboard_auto_go_action_summary">Dopo la pressione del tasto \"Campo\" invia il tasto \"Vai\"</string>
<string name="keyboard_auto_go_action_title">Azione auto key</string>
<string name="device_keyboard_setting_title">Impostazioni tastiera dispositivo</string>
<string name="keyboard_auto_go_action_summary">Azione del tasto \"Vai\" dopo aver premuto un tasto \"Campo\"</string>
<string name="keyboard_auto_go_action_title">Tasto di azione automatica</string>
<string name="device_keyboard_setting_title">Impostazioni della tastiera del dispositivo</string>
<string name="compression_gzip">Gzip</string>
<string name="compression_none">Nessuna</string>
<string name="compression">Compressione</string>
<string name="database_custom_color_title">Colore del database customizzato</string>
<string name="database_default_username_title">Nome utente di default</string>
<string name="database_custom_color_title">Colore personalizzato del database</string>
<string name="database_default_username_title">Nome utente predefinito</string>
<string name="disable">Disabilita</string>
<string name="enable">Abilita</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Richiedi il cambio della master key la prossima volta (una volta)</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Richiedi il cambio della chiave principale la prossima volta (una volta)</string>
<string name="settings_database_force_changing_master_key_next_time_title">Forza il rinnovo la prossima volta</string>
<string name="settings_database_force_changing_master_key_summary">Richiedi il cambio della master key (giorni)</string>
<string name="lock_database_show_button_summary">Mostra il bottone di blocco nell\'interfaccia utente</string>
<string name="lock_database_show_button_title">Mostra il bottone di blocco</string>
<string name="autofill_preference_title">Impostazioni dell\'autocompletamento</string>
<string name="warning_database_link_revoked">Accesso al file revocato dal file manager</string>
<string name="remember_keyfile_locations_summary">Ricorda la posizione dei keyfiles dei database</string>
<string name="remember_keyfile_locations_summary">Ricorda la posizione dei file chiave</string>
<string name="error_label_exists">Questa etichetta esiste già.</string>
<string name="autofill_block_restart">Riavvia l\'app contenente il campo per attivare il blocco.</string>
<string name="autofill_block">Blocca riempimento automatico</string>
@@ -489,8 +473,8 @@
<string name="content_description_add_item">Aggiungi elemento</string>
<string name="keyboard_previous_fill_in_summary">Torna automaticamente alla tastiera precedente quando si esegue l\'azione del tasto automatico</string>
<string name="keyboard_previous_fill_in_title">Azione tasto automatico</string>
<string name="keyboard_previous_database_credentials_summary">Torna automaticamente alla tastiera precedente nella schermata delle credenziali del database</string>
<string name="keyboard_previous_database_credentials_title">Schermata credenziali database</string>
<string name="keyboard_previous_database_credentials_summary">Torna automaticamente alla tastiera precedente nella schermata credenziali del database</string>
<string name="keyboard_previous_database_credentials_title">Schermata credenziali del database</string>
<string name="keyboard_change">Cambia tastiera</string>
<string name="upload_attachment">Carica %1$s</string>
<string name="education_add_attachment_summary">Carica un allegato alla voce per salvare dati esterni importanti.</string>
@@ -506,6 +490,60 @@
<string name="warning_replace_file">Caricare questo file sostituirà quello esistente.</string>
<string name="warning_file_too_big">Un database KeePass dovrebbe contenere solo piccoli file di utilità (come i file di chiavi PGP).
\n
\nIl database può diventare molto grande e ridurre le prestazioni con questo caricamento.</string>
\nIl tuo database può diventare molto grande e ridurre le prestazioni con questo caricamento.</string>
<string name="content_description_credentials_information">Info credenziali</string>
<string name="show_uuid_summary">Visualizza l\'UUID collegato a una voce</string>
<string name="show_uuid_title">Mostra UUID</string>
<string name="autofill_read_only_save">Il salvataggio dei dati non è consentito per una base du dati aperta in sola lettura.</string>
<string name="autofill_ask_to_save_data_summary">Chiedi di salvare i dati quando un modulo viene convalidato</string>
<string name="autofill_ask_to_save_data_title">Chiedi di salvare i dati</string>
<string name="autofill_save_search_info_summary">Prova a salvare le informazioni di ricerca quando effettui una selezione di immissione manuale</string>
<string name="autofill_save_search_info_title">Salva le informazioni di ricerca</string>
<string name="autofill_close_database_summary">Chiudi il database dopo aver usato l\'autocompletamento</string>
<string name="autofill_close_database_title">Chiudi database</string>
<string name="keyboard_previous_lock_summary">Torna automaticamente alla tastiera precedente dopo aver bloccato il database</string>
<string name="keyboard_previous_lock_title">Blocca il database</string>
<string name="keyboard_save_search_info_summary">Prova a salvare le informazioni condivise quando effettui una selezione di immissione manuale</string>
<string name="keyboard_save_search_info_title">Salva le informazioni condivise</string>
<string name="notification">Notifica</string>
<string name="biometric_security_update_required">È necessario un aggiornamento della sicurezza biometrica.</string>
<string name="warning_empty_recycle_bin">Eliminare definitivamente tutti i nodi dal cestino\?</string>
<string name="registration_mode">Modalità registrazione</string>
<string name="save_mode">Modalità salvataggio</string>
<string name="search_mode">Modalità ricerca</string>
<string name="error_field_name_already_exists">Il nome del campo esiste già.</string>
<string name="error_registration_read_only">Il salvataggio di un nuovo elemento non è consentito in un database di sola lettura</string>
<string name="configure_biometric">Nessuna credenziale biometrica o del dispositivo è registrata.</string>
<string name="education_advanced_unlock_summary">Collega la password alla tua autenticazione biometrica (o del dispositivo) per sbloccare velocemente il database.</string>
<string name="education_advanced_unlock_title">Sblocco avanzato del database</string>
<string name="enter">Invio</string>
<string name="backspace">Backspace</string>
<string name="select_entry">Seleziona voce</string>
<string name="back_to_previous_keyboard">Torna alla tasitera precedente</string>
<string name="custom_fields">Campi personalizzati</string>
<string name="advanced_unlock_delete_all_key_warning">Vuoi eliminare le chiavi di cifratura relative allo sblocco avanzato\?</string>
<string name="advanced_unlock_timeout">Scadenza sblocco avanzato</string>
<string name="temp_advanced_unlock_enable_summary">Non salvare alcun contenuto criptato per usare lo sblocco avanzato</string>
<string name="temp_advanced_unlock_timeout_summary">Validità dello sblocco avanzato prima di eliminarne il contenuto</string>
<string name="temp_advanced_unlock_timeout_title">Scadenza sblocco avanzato</string>
<string name="temp_advanced_unlock_enable_title">Sblocco avanzato temporaneo</string>
<string name="device_credential_unlock_enable_summary">Utilizza le credenziali del dispositivo per sbloccare il database</string>
<string name="device_credential_unlock_enable_title">Sblocco con credenziali dispositivo</string>
<string name="advanced_unlock_tap_delete">Tocca per eliminare le chiavi di sblocco avanzato</string>
<string name="content">Contenuto</string>
<string name="advanced_unlock_prompt_not_initialized">Non è possibile inizializzare lo sblocco avanzato.</string>
<string name="advanced_unlock_not_recognized">Non è possibile riconoscere lo sblocco avanzato</string>
<string name="advanced_unlock_invalid_key">Non è possibile leggere la chiave di sblocco avanzato. Eliminala e ripeti la prodecura dello sblocco.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Estrai le credenziali del database con i dati dallo sblocco avanzato</string>
<string name="advanced_unlock_prompt_store_credential_message">Attenzione: dovrai sempre ricordare la password principale anche se usi lo sblocco avanzato.</string>
<string name="advanced_unlock_prompt_store_credential_title">Riconoscimento con sblocco avanzato</string>
<string name="device_credential">Credenziali del dispositivo</string>
<string name="credential_before_click_advanced_unlock_button">Inserisci la password, quindi clicca sull\'icona \"Sblocco avanzato\".</string>
<string name="advanced_unlock_scanning_error">Errore sblocco avanzato: %1$s</string>
<string name="advanced_unlock_prompt_extract_credential_title">Apri il database con lo sblocco avanzato</string>
<string name="open_advanced_unlock_prompt_unlock_database">Autentica con lo sblocco avanzato per sbloccare il database</string>
<string name="open_advanced_unlock_prompt_store_credential">Autentica con lo sblocco avanzato per salvare le credenziali</string>
<string name="menu_keystore_remove_key">Elimina chiave di sblocco avanzato</string>
<string name="kdf_Argon2id">Argon2id</string>
<string name="kdf_Argon2d">Argon2d</string>
</resources>

View File

@@ -17,8 +17,7 @@
You should have received a copy of the GNU General Public License
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
translated by Arthur Zamarin<arthurzam@gmail.com>
-->
<resources>
--><resources>
<string name="feedback">משוב</string>
<string name="homepage">דף הבית</string>
<string name="about_description">KeePassDX היא תוכנה המממשת את מנהל הסיסמאות KeePass לאנרואיד.</string>
@@ -27,7 +26,7 @@
<string name="add_group">הוסף קבוצה</string>
<string name="encryption_algorithm">אלגוריתם</string>
<string name="app_timeout">פסק זמן ליישום</string>
<string name="app_timeout_summary">זמן לפני נעילת מסד הנתונים כאשר היישום לא פעיל.</string>
<string name="app_timeout_summary">זמן לפני נעילת מסד הנתונים כאשר היישום לא פעיל</string>
<string name="application">יישום</string>
<string name="menu_app_settings">הגדרות יישום</string>
<string name="brackets">סוגריים</string>

View File

@@ -185,7 +185,6 @@
<string name="menu_open">開く</string>
<string name="menu_search">検索</string>
<string name="menu_showpass">パスワードを表示</string>
<string name="menu_biometric_remove_key">保存済み生体鍵を削除</string>
<string name="menu_url">URL に移動</string>
<string name="menu_file_selection_read_only">書き込み禁止</string>
<string name="menu_open_file_read_and_write">変更可能</string>
@@ -272,20 +271,8 @@
<string name="configure_biometric">生体情報またはデバイス認証情報が未登録です。</string>
<string name="biometric_security_update_required">生体認証セキュリティの更新が必要です。</string>
<string name="keystore_not_accessible">キーストアが正しく初期化されていません。</string>
<string name="open_biometric_prompt_unlock_database">生体認証プロンプトを開きロックを解除します</string>
<string name="open_biometric_prompt_store_credential">生体認証プロンプトを開き認証情報を保存します</string>
<string name="biometric_prompt_store_credential_title">生体認証の保存</string>
<string name="biometric_prompt_store_credential_message">警告:生体認証を使用する場合も、マスター パスワードを記憶する必要があります。</string>
<string name="biometric_prompt_extract_credential_title">生体認証でデータベースを開く</string>
<string name="biometric_prompt_extract_credential_message">生体情報を使ってデータベースの認証情報を取り出します</string>
<string name="encrypted_value_stored">保存された暗号化済みパスワード</string>
<string name="biometric_invalid_key">生体鍵が読み取れません。削除して生体認証の手順を繰り返してください。</string>
<string name="biometric_not_recognized">生体情報を認識できませんでした</string>
<string name="biometric_scanning_error">生体認証エラー:%1$s</string>
<string name="no_credentials_stored">データベースの保存済み認証情報はありません。</string>
<string name="biometric_prompt_not_initialized">生体認証プロンプトを初期化できません。</string>
<string name="crypto_object_not_initialized">crypto オブジェクトを取得できません。</string>
<string name="credential_before_click_biometric_button">パスワードを入力し、[生体認証] ボタンをタップします。</string>
<string name="database_history">履歴</string>
<string name="menu_appearance_settings">デザイン</string>
<string name="biometric">生体認証</string>
@@ -317,11 +304,10 @@
<string name="advanced_unlock_explanation_summary">高度なロック解除を使用して、データベースをより簡単に開きます</string>
<string name="biometric_unlock_enable_title">生体認証によるロック解除</string>
<string name="biometric_unlock_enable_summary">生体情報をスキャンしてデータベースを開くことができるようにします</string>
<string name="biometric_auto_open_prompt_title">生体認証プロンプトを自動で開く</string>
<string name="biometric_auto_open_prompt_summary">データベースが生体認証を使用するように設定されている場合、生体情報の取得を自動的に求めます</string>
<string name="biometric_auto_open_prompt_title">プロンプトを自動で開く</string>
<string name="biometric_auto_open_prompt_summary">データベースに設定されている場合、高度なロック解除を自動的に要求します</string>
<string name="biometric_delete_all_key_title">暗号鍵を削除</string>
<string name="biometric_delete_all_key_summary">生体認証に関するすべての暗号鍵を削除します</string>
<string name="biometric_delete_all_key_warning">生体認証に関するすべての暗号鍵を削除しますか?</string>
<string name="biometric_delete_all_key_summary">高度なロック解除に関するすべての暗号鍵を削除します</string>
<string name="unavailable_feature_text">この機能を起動できませんでした。</string>
<string name="unavailable_feature_version">デバイスは Android %1$s を実行していますが、%2$s 以降が必要です。</string>
<string name="unavailable_feature_hardware">対応するハードウェアが見つかりませんでした。</string>
@@ -346,7 +332,7 @@
<string name="settings_database_force_changing_master_key_summary">マスターキーの変更を必須にします(日数)</string>
<string name="settings_database_force_changing_master_key_next_time_title">次回更新を強制</string>
<string name="settings_database_force_changing_master_key_next_time_summary">次回マスターキーの変更を必須にします1 回のみ)</string>
<string name="monospace_font_fields_enable_title">フィールド フォント</string>
<string name="monospace_font_fields_enable_title">フィールド書体</string>
<string name="monospace_font_fields_enable_summary">フィールド内で使用するフォントを変更して、文字を見やすくします</string>
<string name="allow_copy_password_title">クリップボードの信頼</string>
<string name="allow_copy_password_summary">エントリーのパスワードと保護されたフィールドを、クリップボードにコピーすることを許可します</string>
@@ -362,7 +348,7 @@
<string name="database_custom_color_title">カスタムカラー</string>
<string name="database_version_title">データベースのバージョン</string>
<string name="text_appearance">テキスト</string>
<string name="application_appearance">アプリ</string>
<string name="application_appearance">インターフェース</string>
<string name="other">その他</string>
<string name="compression">圧縮</string>
<string name="compression_none">なし</string>
@@ -402,7 +388,7 @@
<string name="keyboard_previous_database_credentials_title">データベース認証情報の画面</string>
<string name="keyboard_previous_database_credentials_summary">データベース認証情報の画面で、切り替え前のキーボードへ自動的に戻します</string>
<string name="keyboard_previous_fill_in_title">自動キーアクション</string>
<string name="keyboard_previous_fill_in_summary">自動キーアクションの実行後、切り替え前のキーボードへ自動的に戻します</string>
<string name="keyboard_previous_fill_in_summary">[自動キーアクション] の実行後、切り替え前のキーボードへ自動的に戻します</string>
<string name="keyboard_previous_lock_title">データベースをロック</string>
<string name="keyboard_previous_lock_summary">データベースのロック後、切り替え前のキーボードへ自動的に戻します</string>
<string name="autofill_close_database_title">データベースを閉じる</string>
@@ -440,8 +426,6 @@
<string name="education_new_node_summary">エントリーはデジタル ID の管理に役立ちます。\n\nグループ≒フォルダはデータベース内のエントリーを整理します。</string>
<string name="education_search_title">エントリーを検索</string>
<string name="education_search_summary">パスワードを取得するには、タイトル、ユーザー名、または他のフィールドの内容を入力します。</string>
<string name="education_biometric_title">生体認証によるロック解除</string>
<string name="education_biometric_summary">スキャンした生体情報にパスワードをリンクして、データベースのロックをすばやく解除します。</string>
<string name="education_entry_edit_title">エントリーを編集</string>
<string name="education_entry_edit_summary">エントリーをカスタム フィールドとともに編集します。共有データは異なるエントリーのフィールド間で参照することができます。</string>
<string name="education_generate_password_title">強力なパスワードを作成</string>
@@ -455,7 +439,10 @@
<string name="education_unlock_title">データベースのロックを解除</string>
<string name="education_unlock_summary">データベースのロックを解除するには、パスワードまたはキーファイル、またはその両方を入力します。\n\nデータベース ファイルは変更するたびに安全な場所へバックアップしてください。</string>
<string name="education_read_only_title">データベースの書き込みを禁止</string>
<string name="education_read_only_summary">セッションのロック解除モードを変更します。\n\n[書き込み禁止] では、データベースに対する意図しない変更を防ぐことができます。\n[変更可能] では、すべての要素を追加、削除、変更できます。</string>
<string name="education_read_only_summary">セッションのロック解除モードを変更します。
\n
\n[書き込み禁止] では、データベースに対する意図しない変更を防ぐことができます。
\n[変更可能] では、すべての要素を必要に応じて追加、削除、変更できます。</string>
<string name="education_field_copy_title">フィールドをコピー</string>
<string name="education_field_copy_summary">コピーしたフィールドはどこにでも貼り付けることができます。\n\nお好みのフォーム入力方法を使用してください。</string>
<string name="education_lock_title">データベースをロック</string>
@@ -487,7 +474,6 @@
<string name="encryption_twofish">Twofish</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string-array name="timeout_options">
<item>5秒</item>
<item>10秒</item>
@@ -524,4 +510,35 @@
<string name="autofill_read_only_save">データの保存は読み取り専用として開かれたデータベースでは許可されていません。</string>
<string name="save_mode">保存モード</string>
<string name="search_mode">検索モード</string>
<string name="error_field_name_already_exists">フィールド名はすでに存在します。</string>
<string name="menu_keystore_remove_key">高度なロック解除用の鍵を削除</string>
<string name="advanced_unlock_not_recognized">高度なロック解除を使って認証できませんでした</string>
<string name="enter">エンター</string>
<string name="backspace">バックスペース</string>
<string name="back_to_previous_keyboard">前のキーボードに戻る</string>
<string name="custom_fields">カスタム フィールド</string>
<string name="advanced_unlock_delete_all_key_warning">高度なロック解除に関する暗号鍵をすべて削除しますか?</string>
<string name="device_credential_unlock_enable_summary">デバイス認証情報を使用してデータベースを開くことができるようにします</string>
<string name="device_credential_unlock_enable_title">デバイス認証情報によるロック解除</string>
<string name="device_credential">デバイス認証情報</string>
<string name="credential_before_click_advanced_unlock_button">パスワードを入力し、[高度なロック解除] ボタンをタップします。</string>
<string name="advanced_unlock_prompt_not_initialized">高度なロック解除プロンプトを初期化できません。</string>
<string name="advanced_unlock_scanning_error">高度なロック解除のエラー:%1$s</string>
<string name="advanced_unlock_invalid_key">高度なロック解除用の鍵が読み取れません。削除してロック解除の手順をやり直してください。</string>
<string name="advanced_unlock_prompt_extract_credential_message">高度なロック解除を使ってデータベース認証情報を取り出します</string>
<string name="advanced_unlock_prompt_extract_credential_title">高度なロック解除を使ってデータベースを開く</string>
<string name="advanced_unlock_prompt_store_credential_message">警告:高度なロック解除を使用する場合も、マスター パスワードを記憶する必要があります。</string>
<string name="advanced_unlock_prompt_store_credential_title">高度なロック解除の認証</string>
<string name="open_advanced_unlock_prompt_store_credential">ログイン プロンプトを開いて認証情報を保存する</string>
<string name="open_advanced_unlock_prompt_unlock_database">ログイン プロンプトを開いてロックを解除する</string>
<string name="select_entry">エントリーを選択</string>
<string name="education_advanced_unlock_summary">スキャンした生体情報またはデバイス認証情報にパスワードをリンクして、データベースのロックをすばやく解除します。</string>
<string name="education_advanced_unlock_title">データベースの高度なロック解除</string>
<string name="advanced_unlock_timeout">高度なロック解除のタイムアウト</string>
<string name="temp_advanced_unlock_timeout_summary">コンテンツを削除して高度なロック解除を終了するまでの期間</string>
<string name="temp_advanced_unlock_timeout_title">高度なロック解除の有効期限</string>
<string name="temp_advanced_unlock_enable_summary">高度なロック解除に使用する暗号化コンテンツを保存しません</string>
<string name="temp_advanced_unlock_enable_title">一時的な高度なロック解除</string>
<string name="advanced_unlock_tap_delete">タップして高度なロック解除用の鍵を削除する</string>
<string name="content">コンテンツ</string>
</resources>

View File

@@ -123,7 +123,6 @@
<string name="menu_open">열기</string>
<string name="menu_search">검색</string>
<string name="menu_showpass">비밀번호 보이기</string>
<string name="menu_biometric_remove_key">저장된 지문 삭제됨</string>
<string name="menu_url">링크로 가기</string>
<string name="menu_file_selection_read_only">쓰기 보호됨</string>
<string name="menu_open_file_read_and_write">수정 가능</string>

View File

@@ -25,7 +25,7 @@
<string name="add_group">Jauna grupa</string>
<string name="encryption_algorithm">Šifrēšanas algoritms</string>
<string name="app_timeout">Pielikuma taimauts</string>
<string name="app_timeout_summary">Bloķēšanas taimauts, kad programma nav aktīva.</string>
<string name="app_timeout_summary">Bloķēšanas taimauts, kad programma nav aktīva</string>
<string name="application">Programma</string>
<string name="menu_app_settings">Programmas iestatījumi</string>
<string name="brackets">Iekavas</string>

View File

@@ -177,7 +177,6 @@
<string name="content_description_file_information">ഫയലിനെക്കുറിച്ചുള്ള വിവരം</string>
<string name="content_description_background">ബാക്ക്ഗ്രൗണ്ട്</string>
<string name="brackets">ബ്രാക്കറ്റുകൾ</string>
<string name="biometric_prompt_store_credential_message">മുന്നറിയിപ്പ്: ബയോമെട്രിക് തിരിച്ചറിയൽ ഉപയോഗിക്കുകയാണെങ്കിലും നിങ്ങൾ മാസ്റ്റർ പാസ്സ്‌വേഡ്‌ ഓർത്തിരിക്കണം.</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft is &lt;strong&gt;ഓപ്പൺ സോഴ്‌സും&lt;/strong&gt; and &lt;strong&gt;പരസ്യം ഇല്ലാത്ത&lt;/strong&gt;.
\nIt is provided as is, under &lt;strong&gt;GPLv3&lt;/strong&gt; license, without any warranty.</string>
<string name="warning_empty_password">പാസ്‌വേഡ് അൺലോക്കുചെയ്യൽ പരിരക്ഷയില്ലാതെ തുടരുക\?</string>
@@ -190,11 +189,9 @@
<string name="education_field_copy_title">ഏതെങ്കിലും ഒരു ഫീൽഡ് പകർത്തുക</string>
<string name="error_invalid_path">Path ശെരിയാണോ എന്ന് ഉറപ്പാക്കുക.</string>
<string name="kdf_AES">AES</string>
<string name="biometric_scanning_error">ബയോമെട്രിക് പിശക്: %1$s</string>
<string name="extended_ASCII">വിപുലീകരിച്ച ASCII</string>
<string name="icon_pack_choose_summary">ആപ്പിൽ ഉപയോഗിച്ചിരിക്കുന്ന ഐക്കൺ പാക്ക്</string>
<string name="style_choose_title">അപ്പ്ലിക്കേഷന്റെ തീം</string>
<string name="kdf_Argon2">Argon2</string>
<string name="download_finalization">അന്തിമമാക്കുന്നു. . .</string>
<string name="html_text_dev_feature_thanks">നിങ്ങളുടെ സംഭാവനയ്ക്ക് ഒരുപാട് നന്ദി.</string>
<string name="education_unlock_title">ഡാറ്റാബേസ് തുറക്കുക</string>
@@ -222,13 +219,10 @@
<string name="database_opened">ഡാറ്റാബേസ് തുറന്നു</string>
<string name="autofill_preference_title">ഓട്ടോഫിൽ ക്രമീകരണങ്ങൾ</string>
<string name="autofill_sign_in_prompt">KeePassDX ഉപയോഗിച്ച് പ്രവേശിക്കുക</string>
<string name="biometric_not_recognized">ബയോമെട്രിക് തിരിച്ചറിയാൻ കഴിഞ്ഞില്ല</string>
<string name="biometric_prompt_extract_credential_title">ഡാറ്റാബേസ് ബയോമെട്രിക് തിരിച്ചറിയൽ ഉപയോഗിച്ച് തുറക്കുക</string>
<string name="unsupported_db_version">പിന്തുണയ്‌ക്കാത്ത ഡാറ്റാബേസ് പതിപ്പ്.</string>
<string name="sort_last_modify_time">പരിഷ്‌ക്കരണം</string>
<string name="command_execution">കമാൻഡ് നടപ്പിലാക്കുന്നു. . .</string>
<string name="subdomain_search_title">ഉപഡൊമെയ്ൻ തിരയുക</string>
<string name="menu_biometric_remove_key">സംരക്ഷിച്ച ബയോമെട്രിക് കീ ഇല്ലാതാക്കുക</string>
<string name="menu_master_key_settings">മാസ്റ്റർകീയുടെ ക്രമീകരണങ്ങൾ</string>
<string name="about">ഇതിനെ കുറിച്ച്</string>
<string name="lowercase">ചെറിയക്ഷരം</string>
@@ -298,13 +292,7 @@
<string name="file_manager_install_description">ഉദ്ദേശിക്കുന്ന പ്രവര്‍ത്തനം സ്വീകരിക്കുന്ന ഒരു ഫയല്‍ മാനേജര്‍. ഡാറ്റാബേസ് ഫയലുകള്‍ നിര്‍മ്മിക്കാനും തുറക്കാനും സൂക്ഷിക്കാനും ACTION_CREATE_DOCUMENT നോടൊപ്പം ACTION_OPEN_DOCUMENT കൂടെ ആവശ്യമുണ്ട്.</string>
<string name="autofill_service_name">KeePassDX ഫോം ഓട്ടോഫില്ലിംഗ്</string>
<string name="biometric">ബയോമെട്രിക്</string>
<string name="credential_before_click_biometric_button">പാസ്‌വേഡ് ടൈപ്പുചെയ്യുക, തുടർന്ന് \"ബയോമെട്രിക്\" ബട്ടൺ ക്ലിക്കുചെയ്യുക.</string>
<string name="no_credentials_stored">ഈ ഡാറ്റാബേസിൽ ഇതുവരെ ക്രെഡൻഷ്യൽ സംഭരിച്ചിട്ടില്ല.</string>
<string name="biometric_invalid_key">ബയോമെട്രിക് കീ വായിക്കാൻ കഴിയില്ല. ദയവായി ഇത് ഇല്ലാതാക്കി ബയോമെട്രിക് തിരിച്ചറിയൽ നടപടിക്രമം ആവർത്തിക്കുക.</string>
<string name="biometric_prompt_extract_credential_message">ബയോമെട്രിക് ഡാറ്റ ഉപയോഗിച്ച് ഡാറ്റാബേസ് ക്രെഡൻഷ്യൽ എക്‌സ്‌ട്രാക്റ്റുചെയ്യുക</string>
<string name="biometric_prompt_store_credential_title">ബയോമെട്രിക് തിരിച്ചറിയൽ സംരക്ഷിക്കുക</string>
<string name="open_biometric_prompt_store_credential">ക്രെഡൻഷ്യലുകൾ സംഭരിക്കുന്നതിന് ബയോമെട്രിക് പ്രോംപ്റ്റ് തുറക്കുക</string>
<string name="open_biometric_prompt_unlock_database">ഡാറ്റാബേസ് അൺലോക്കുചെയ്യുന്നതിന് ബയോമെട്രിക് പ്രോംപ്റ്റ് തുറക്കുക</string>
<string name="warning_sure_add_file">എന്തായാലും ഫയൽ ചേർക്കണോ\?</string>
<string name="warning_replace_file">ഈ ഫയൽ അപ്‌ലോഡുചെയ്യുന്നത് നിലവിലുള്ള ഫയലിനെ മാറ്റിസ്ഥാപിക്കും.</string>
<string name="warning_database_link_revoked">ഫയൽ മാനേജർ റദ്ദാക്കിയ ഫയലിലേക്കുള്ള ആക്സസ്</string>
@@ -372,7 +360,6 @@
<string name="warning_empty_keyfile">ഒരു ശൂന്യ കീ ഫയൽ ചേർക്കാൻ ശുപാർശ ചെയ്യുന്നില്ല.</string>
<string name="list_password_generator_options_summary">അനുവദനീയമായ പാസ്‌വേഡ് ജനറേറ്റർ പ്രതീകങ്ങൾ ക്രമീകരിക്കുക</string>
<string name="lock_database_back_root_summary">ഉപയോക്താവ് റൂട്ട് സ്ക്രീനിലെ ബാക്ക് ബട്ടൺ ക്ലിക്കുചെയ്യുമ്പോൾ ഡാറ്റാബേസ് ലോക്കുചെയ്യുക</string>
<string name="biometric_delete_all_key_warning">ബയോമെട്രിക് തിരിച്ചറിയലുമായി ബന്ധപ്പെട്ട എല്ലാ എൻ‌ക്രിപ്ഷൻ കീകളും ഇല്ലാതാക്കണോ\?</string>
<string name="biometric_delete_all_key_summary">ബയോമെട്രിക് തിരിച്ചറിയലുമായി ബന്ധപ്പെട്ട എല്ലാ എൻ‌ക്രിപ്ഷൻ കീകളും ഇല്ലാതാക്കുക</string>
<string name="path">പാത</string>
<string name="database_data_remove_unlinked_attachments_title">ലിങ്കുചെയ്യാത്ത ഡാറ്റ നീക്കംചെയ്യുക</string>
@@ -381,7 +368,6 @@
<string name="keyboard_notification_entry_title">അറിയിപ്പ് വിവരം</string>
<string name="education_sort_summary">എൻ‌ട്രികളും ഗ്രൂപ്പുകളും എങ്ങനെ അടുക്കുന്നുവെന്ന് തിരഞ്ഞെടുക്കുക.</string>
<string name="education_sort_title">ഇനം തരംതിരിക്കൽ</string>
<string name="education_biometric_title">ബയോമെട്രിക് ഡാറ്റാബേസ് അൺലോക്കുചെയ്യൽ</string>
<string name="keyboard_entry_timeout_title">ടൈം ഔട്ട്</string>
<string name="monospace_font_fields_enable_title">ഫീൽഡിന്റെ ഫോണ്ട്</string>
<string name="data">ഡാറ്റ</string>
@@ -402,4 +388,12 @@
<string name="registration_mode">രജിസ്ട്രേഷൻ മോഡ്</string>
<string name="search_mode">തിരയൽ മോഡ്</string>
<string name="error_registration_read_only">read-only ഡാറ്റാബേസിൽ പുതിയ ഒരു ഇനം സംരക്ഷിക്കാൻ കഴിയില്ല</string>
<string name="education_advanced_unlock_title">വിപുലമായ ഡാറ്റാബേസ് അൺലോക്ക്</string>
<string name="select_entry">എൻ‌ട്രി തിരഞ്ഞെടുക്കുക</string>
<string name="custom_fields">ഇഷ്‌ടാനുസൃത ഫീൽഡുകൾ</string>
<string name="keyboard_keys_category">കീകൾ</string>
<string name="notification">അറിയിപ്പ്</string>
<string name="settings_database_recommend_changing_master_key_title">പുതുക്കൽ ശുപാർശ ചെയ്യുക</string>
<string name="content">ഉള്ളടക്കം</string>
<string name="device_credential">ഉപകരണ ക്രെഡൻഷ്യൽ</string>
</resources>

View File

@@ -123,7 +123,6 @@
<string name="menu_open">Åpne</string>
<string name="menu_search">Søk</string>
<string name="menu_showpass">Vis passord</string>
<string name="menu_biometric_remove_key">Fjern fingeravtrykksnøkkelen</string>
<string name="menu_url">Gå til nettadresse</string>
<string name="menu_file_selection_read_only">Skrivebeskyttet</string>
<string name="menu_open_file_read_and_write">Les og skriv</string>
@@ -173,12 +172,7 @@
<string name="warning_empty_password">Ønsker du å fortsette uten passordbeskyttelse\?</string>
<string name="warning_no_encryption_key">Ønsker du å fortsette uten en krypteringsnøkkel\?</string>
<string name="version_label">Versjon %1$s</string>
<string name="open_biometric_prompt_unlock_database">Venter på fingeravtrykk</string>
<string name="encrypted_value_stored">Kryptert passord lagret</string>
<string name="biometric_invalid_key">Kan ikke lese biometrisk nøkkel. Slett den og gjenta biometrisk gjenkjennelse.</string>
<string name="biometric_not_recognized">Fremmed fingeravtrykk</string>
<string name="biometric_scanning_error">Fingeravtrykksproblem: %1$s</string>
<string name="open_biometric_prompt_store_credential">Bruk fingeravtrykk til å lagre dette passordet</string>
<string name="no_credentials_stored">Denne databasen har ikke et passord enda.</string>
<string name="database_history">Historikk</string>
<string name="menu_appearance_settings">Utseende</string>
@@ -204,7 +198,6 @@
<string name="biometric_unlock_enable_summary">Skru på fingeravtrykksåpning av database</string>
<string name="biometric_delete_all_key_title">Slett krypteringsnøkler</string>
<string name="biometric_delete_all_key_summary">Slett alle fingeravtrykksnøkler som har med fingeravtrykksgjenkjennelse å gjøre</string>
<string name="biometric_delete_all_key_warning">Er du sikker på at du vil slette alle nøklene som har med fingeravtrykk å gjøre?</string>
<string name="unavailable_feature_text">Kunne ikke starte denne funksjonen.</string>
<string name="unavailable_feature_version">Din Androidversjon %1$s oppfyller ikke minimumskravet, %2$s kreves.</string>
<string name="unavailable_feature_hardware">Fant ikke maskinvaren.</string>
@@ -247,8 +240,6 @@
\nLegg til grupper (tilsvarende mapper) for å organisere dine oppføringer og databasen din.</string>
<string name="education_search_title">Søk i dine oppføringer</string>
<string name="education_search_summary">Søk etter oppføringer etter tittel, brukernavn eller andre felter for å hente passordene dine.</string>
<string name="education_biometric_title">Lås opp databasen din med fingeravtrykket ditt</string>
<string name="education_biometric_summary">Lenk passordet og fingeravtrykket ditt for å låse opp databasen din enkelt.</string>
<string name="education_entry_edit_title">Rediger oppføringen</string>
<string name="education_entry_edit_summary">Rediger din oppføring med egendefinerte felter, referanser til pooldata kan legges til mellom felter av forskjellige oppføringer.</string>
<string name="education_generate_password_title">Opprett et sterkt passord</string>
@@ -293,7 +284,6 @@
<string name="encryption_twofish">Twofish</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Velg en drakt</string>
<string name="style_choose_summary">Tilpass programdrakten ved å endre fargene</string>
<string name="icon_pack_choose_title">Velg en ikonpakke</string>
@@ -347,8 +337,6 @@
<string name="content_description_keyboard_close_fields">Lukk felt</string>
<string name="error_create_database_file">Kan ikke opprette database med dette passordet og nøkkelfilen.</string>
<string name="menu_advanced_unlock_settings">Avansert opplåsing</string>
<string name="biometric_prompt_store_credential_title">Lagre biometrisk gjenkjennelse</string>
<string name="biometric_prompt_store_credential_message">Advarsel: Du vil fortsatt måtte huske hovedpassordet dersom du bruker biometrisk gjenkjenning.</string>
<string name="enable">Aktiver</string>
<string name="disable">Skru av</string>
<string name="content_description_entry_icon">Oppføringsikon</string>
@@ -424,9 +412,17 @@
<string name="lock_database_show_button_title">Vis låseknapp</string>
<string name="error_label_exists">Denne etiketten finnes allerede.</string>
<string name="validate">Bekreft</string>
<string name="biometric_prompt_extract_credential_title">Åpne database med biometrisk gjenkjenning</string>
<string name="warning_database_link_revoked">Tilgang til filen nektes av filbehandleren</string>
<string name="warning_database_read_only">Innvilg skrivetilgang for å lagre databaseendringer</string>
<string name="hide_broken_locations_summary">Skjul ødelagte lenker i listen over nylige databaser</string>
<string name="hide_broken_locations_title">Skjul ødelagte databaselenker</string>
<string name="autofill_ask_to_save_data_title">Spør om lagring av data</string>
<string name="advanced_unlock_scanning_error">Avansert opplåsningsfeil: %1$s</string>
<string name="warning_empty_keyfile">Det anbefales ikke å legge til en tom nøkkelfil.</string>
<string name="warning_sure_add_file">Legg til filen uansett\?</string>
<string name="registration_mode">Registreringsmodus</string>
<string name="save_mode">Lagringsmodus</string>
<string name="search_mode">Søkemodus</string>
<string name="error_field_name_already_exists">Feltnavnet finnes allerede.</string>
<string name="content_description_add_item">Legg til element</string>
</resources>

View File

@@ -34,7 +34,7 @@
<string name="file_manager_install_description">Bestandsbeheer dat de Intent-actie ACTION_CREATE_DOCUMENT en ACTION_OPEN_DOCUMENT accepteert, is nodig om databasebestanden aan te maken, te openen en op te slaan.</string>
<string name="clipboard_cleared">Klembord gewist</string>
<string name="clipboard_timeout">Klembordtime-out</string>
<string name="clipboard_timeout_summary">Tijd van opslag op het klembord (indien ondersteund op jouw apparaat)</string>
<string name="clipboard_timeout_summary">Tijd van opslag op het klembord (voor zover ondersteund op dit apparaat)</string>
<string name="select_to_copy">Selecteer om %1$s naar klembord te kopiëren</string>
<string name="retrieving_db_key">Databasesleutel ophalen…</string>
<string name="database">Database</string>
@@ -67,7 +67,7 @@
<string name="error_out_of_memory">Onvoldoende vrij geheugen om de gehele database te laden.</string>
<string name="error_pass_gen_type">Je moet minimaal één soort wachtwoordgenerering kiezen.</string>
<string name="error_pass_match">De wachtwoorden komen niet overeen.</string>
<string name="error_rounds_too_large">\"Cycli-waarde\" te groot. Wordt ingesteld op 2147483648.</string>
<string name="error_rounds_too_large">\"Cycli-waarde\" te groot. Deze wordt ingesteld op 2147483648.</string>
<string name="error_wrong_length">Voer een positief geheel getal in in het veld \"Lengte\".</string>
<string name="file_browser">Bestandsbeheer</string>
<string name="generate_password">Wachtwoord genereren</string>
@@ -81,16 +81,16 @@
<string name="invalid_credentials">Kan referenties niet lezen.</string>
<string name="invalid_db_sig">Databaseformaat kan niet worden herkend.</string>
<string name="length">Lengte</string>
<string name="list_size_title">Lengte van lijst met items</string>
<string name="list_size_summary">Tekstgrootte in de lijst</string>
<string name="list_size_title">Lijstgrootte</string>
<string name="list_size_summary">Tekstgrootte in de itemslijst</string>
<string name="loading_database">Database laden…</string>
<string name="lowercase">Kleine letters</string>
<string name="hide_password_title">Wachtwoorden verbergen</string>
<string name="hide_password_summary">Wachtwoorden standaard verbergen (***)</string>
<string name="hide_password_summary">Wachtwoorden standaard maskeren (***)</string>
<string name="about">Over</string>
<string name="menu_change_key_settings">Hoofdsleutel wijzigen</string>
<string name="settings">Instellingen</string>
<string name="menu_database_settings">Instellingen database</string>
<string name="menu_database_settings">Database-instellingen</string>
<string name="menu_delete">Verwijderen</string>
<string name="menu_donate">Doneren</string>
<string name="menu_edit">Bewerken</string>
@@ -170,7 +170,6 @@
<string name="menu_move">Verplaatsen</string>
<string name="menu_paste">Plakken</string>
<string name="menu_cancel">Annuleren</string>
<string name="menu_biometric_remove_key">Opgeslagen biometrische gegevens verwijderen</string>
<string name="menu_file_selection_read_only">Alleen-lezen</string>
<string name="menu_open_file_read_and_write">Lezen en schrijven</string>
<string name="protection">Beveiliging</string>
@@ -198,12 +197,7 @@
<string name="warning_password_encoding">Vermijd wachtwoordtekens buiten het tekstcoderingsformaat in het databasebestand (niet-herkende tekens worden geconverteerd naar dezelfde letter).</string>
<string name="warning_empty_password">Doorgaan zonder beveiliging voor wachtwoordontgrendeling\?</string>
<string name="warning_no_encryption_key">Doorgaan zonder coderingssleutel\?</string>
<string name="open_biometric_prompt_unlock_database">Biometrische herkenning gebruiken om de database te ontgrendelen</string>
<string name="encrypted_value_stored">Versleuteld wachtwoord is opgeslagen</string>
<string name="biometric_invalid_key">Kan de biometrische gegevens niet lezen. Verwijder deze en herhaal de procedure voor biometrische herkenning.</string>
<string name="biometric_not_recognized">Biometrie niet herkend</string>
<string name="biometric_scanning_error">Probleem met biometrie: %1$s</string>
<string name="open_biometric_prompt_store_credential">Biometrische herkenning gebruiken om wachtwoorden op te slaan</string>
<string name="no_credentials_stored">Deze database heeft nog geen opgeslagen gegevens.</string>
<string name="database_history">Geschiedenis</string>
<string name="menu_appearance_settings">Uiterlijk</string>
@@ -211,15 +205,15 @@
<string name="autofill">Auto-aanvullen</string>
<string name="autofill_service_name">KeePassDX auto-aanvullendienst</string>
<string name="autofill_sign_in_prompt">Inloggen met KeePassDX</string>
<string name="set_autofill_service_title">Dienst voor automatisch aanvullen</string>
<string name="set_autofill_service_title">Dienst automatisch aanvullen</string>
<string name="autofill_explanation_summary">Schakel de dienst in om formulieren in andere apps in te vullen</string>
<string name="password_size_title">Gegenereerde wachtwoordlengte</string>
<string name="password_size_summary">Standaardlengte van gegenereerd wachtwoord instellen</string>
<string name="password_size_summary">Stel de standaardlengte van gegenereerd wachtwoord in</string>
<string name="list_password_generator_options_title">Wachtwoordtekens</string>
<string name="list_password_generator_options_summary">Toegestane wachtwoordtekens instellen</string>
<string name="clipboard">Klembord</string>
<string name="clipboard_notifications_title">Klembordmeldingen</string>
<string name="clipboard_notifications_summary">Toon klembordmeldingen om velden te kopiëren bij het bekijken van een item</string>
<string name="clipboard_notifications_summary">Schakel klembordmeldingen in om velden te kopiëren bij het bekijken van een item</string>
<string name="clipboard_warning">Als automatisch wissen van het klembord mislukt, doe dit dan handmatig.</string>
<string name="lock">Vergrendelen</string>
<string name="lock_database_screen_off_title">Schermvergrendeling</string>
@@ -228,10 +222,9 @@
<string name="biometric_unlock_enable_title">Ontgrendelen met biometrie</string>
<string name="biometric_unlock_enable_summary">Gebruik biometrische herkenning om de database te openen</string>
<string name="biometric_delete_all_key_title">Coderingssleutels verwijderen</string>
<string name="biometric_delete_all_key_summary">Alle sleutels voor biometrische herkenning verwijderen</string>
<string name="biometric_delete_all_key_warning">Alle coderingssleutels voor biometrische herkenning verwijderen\?</string>
<string name="biometric_delete_all_key_summary">Alle coderingssleutels met betrekking tot geavanceerde ontgrendelingsherkenning verwijderen</string>
<string name="unavailable_feature_text">Kan deze functie niet starten.</string>
<string name="unavailable_feature_version">Het apparaat draait op Android %1$s, maar %2$s of hoger is vereist.</string>
<string name="unavailable_feature_version">Dit apparaat draait op Android %1$s, maar %2$s of hoger is vereist.</string>
<string name="unavailable_feature_hardware">De bijbehorende hardware werd niet gevonden.</string>
<string name="file_name">Bestandsnaam</string>
<string name="path">Pad</string>
@@ -248,19 +241,19 @@
<string name="database_description_title">Databaseomschrijving</string>
<string name="database_version_title">Databaseversie</string>
<string name="text_appearance">Tekst</string>
<string name="application_appearance">App</string>
<string name="application_appearance">Gebruikersomgeving</string>
<string name="other">Overig</string>
<string name="keyboard">Toetsenbord</string>
<string name="magic_keyboard_title">Magikeyboard</string>
<string name="magic_keyboard_explanation_summary">Aangepast toetsenbord met je wachtwoorden en alle identiteitsvelden activeren</string>
<string name="magic_keyboard_explanation_summary">Activeer een aangepast toetsenbord dat je wachtwoorden en identiteitsvelden vult</string>
<string name="allow_no_password_title">Geen hoofdwachtwoord toestaan</string>
<string name="allow_no_password_summary">Maakt het mogelijk op de knop \"Openen\" te tikken als er geen inloggegevens zijn geselecteerd</string>
<string name="allow_no_password_summary">Schakel de knop \"Openen\" in als er geen referenties zijn geselecteerd</string>
<string name="enable_read_only_title">Alleen-lezen</string>
<string name="enable_read_only_summary">Open de database standaard alleen-lezen</string>
<string name="enable_education_screens_title">Informatieve tips</string>
<string name="enable_education_screens_summary">Markeer elementen om te leren hoe de app werkt</string>
<string name="reset_education_screens_title">Informatieve tips opnieuw instellen</string>
<string name="reset_education_screens_summary">Informatieve tips opnieuw weergeven</string>
<string name="reset_education_screens_summary">Informatieve tips opnieuw tonen</string>
<string name="reset_education_screens_text">Informatieve tips opnieuw ingesteld</string>
<string name="education_create_database_title">Maak je databasebestand aan</string>
<string name="education_create_database_summary">Maak je eerste wachtwoordbeheerbestand aan.</string>
@@ -272,8 +265,6 @@
\nGroepen (~mappen) organiseren de items in je database.</string>
<string name="education_search_title">Doorzoek al je items</string>
<string name="education_search_summary">Doorzoek items op titel, gebruikersnaam of andere velden om wachtwoorden te vinden.</string>
<string name="education_biometric_title">Biometrische database -ontgrendeling</string>
<string name="education_biometric_summary">Koppel je wachtwoord aan je biometrie om de database snel te ontgrendelen.</string>
<string name="education_entry_edit_title">Item bewerken</string>
<string name="education_entry_edit_summary">Bewerk het item met aangepaste velden. Referenties kunnen worden toegevoegd tussen velden van verschillende items.</string>
<string name="education_generate_password_title">Genereer een sterk wachtwoord</string>
@@ -282,10 +273,10 @@
<string name="education_entry_new_field_summary">Registreer een extra veld, voeg een waarde toe en bescherm dit desgewenst.</string>
<string name="education_unlock_title">Ontgrendel je database</string>
<string name="education_read_only_title">Database alleen-lezen</string>
<string name="education_read_only_summary">Wijzig de opstartmodus van de sessie.
\n
\nIn alleen-lezenmodus kunnen geen onbedoelde wijzigingen worden gemaakt.
\nIn schrijfmodus kun je elementen toevoegen, verwijderen of aanpassen.</string>
<string name="education_read_only_summary">Wijzig de opstartmodus van de sessie.
\n
\nIn alleen-lezenmodus kunnen geen onbedoelde wijzigingen worden gemaakt.
\nIn schrijfmodus kun je naar wens elementen toevoegen, verwijderen of aanpassen.</string>
<string name="education_field_copy_title">Veld kopiëren toestaan</string>
<string name="education_field_copy_summary">Kopieer een veld en plak de inhoud waar je maar wilt.
\n
@@ -306,16 +297,15 @@
<string name="html_text_dev_feature_encourage">motiveer je ontwikkelaars om &lt;strong&gt;nieuwe functies&lt;/strong&gt; te creëren en &lt;strong&gt;problemen op te lossen&lt;/strong&gt;.</string>
<string name="html_text_dev_feature_thanks">Hartelijk bedankt voor je bijdrage.</string>
<string name="html_text_dev_feature_work_hard">We zijn druk bezig om deze functie snel beschikbaar te stellen.</string>
<string name="html_text_dev_feature_upgrade">Vergeet niet om je app up-to-date te houden door nieuwe versies te installeren.</string>
<string name="html_text_dev_feature_upgrade">Vergeet niet je app up-to-date te houden door nieuwe versies te installeren.</string>
<string name="download">Downloaden</string>
<string name="contribute">Bijdragen</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">App-thema</string>
<string name="style_choose_summary">Thema gebruikt in de app</string>
<string name="icon_pack_choose_title">Pictogrammenverzameling</string>
<string name="icon_pack_choose_summary">Pictogrammenverzameling in gebruik</string>
<string name="icon_pack_choose_title">Icon pack</string>
<string name="icon_pack_choose_summary">Gebruikt Icon Pack</string>
<string name="build_label">Build %1$s</string>
<string name="keyboard_name">Magikeyboard</string>
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
@@ -338,14 +328,14 @@
<string name="selection_mode">Selectiemodus</string>
<string name="do_not_kill_app">App niet afsluiten…</string>
<string name="lock_database_back_root_title">Druk \'Terug\' om te vergrendelen</string>
<string name="lock_database_back_root_summary">Vergrendel de database wanneer de gebruiker op de knop Terug in het hoofdscherm klikt</string>
<string name="lock_database_back_root_summary">Vergrendel de database wanneer de gebruiker in het hoofdscherm op de knop Terug klikt</string>
<string name="clear_clipboard_notification_title">Wissen bij afsluiten</string>
<string name="clear_clipboard_notification_summary">Vergrendel de database wanneer de duur van het klembord verloopt of de melding wordt gesloten nadat u deze bent gaan gebruiken</string>
<string name="recycle_bin">Prullenmand</string>
<string name="keyboard_selection_entry_title">Itemselectie</string>
<string name="keyboard_selection_entry_summary">Invoervelden in Magikeyboard tonen bij het bekijken van een item</string>
<string name="delete_entered_password_title">Wachtwoord wissen</string>
<string name="delete_entered_password_summary">Wis het ingevoerde wachtwoord na een poging met een database te verbinden</string>
<string name="delete_entered_password_summary">Wis het ingevoerde wachtwoord na een verbindingspoging met een database</string>
<string name="content_description_open_file">Bestand openen</string>
<string name="content_description_node_children">Onderliggende items</string>
<string name="content_description_add_node">Knooppunt toevoegen</string>
@@ -363,20 +353,16 @@
<string name="entry_UUID">UUID</string>
<string name="error_move_entry_here">Je kan hier geen item plaatsen.</string>
<string name="error_copy_entry_here">Je kan hier geen item kopiëren.</string>
<string name="list_groups_show_number_entries_title">Toon het aantal items</string>
<string name="list_groups_show_number_entries_title">Aantal items tonen</string>
<string name="list_groups_show_number_entries_summary">Toon het aantal items in een groep</string>
<string name="content_description_background">Achtergrond</string>
<string name="content_description_update_from_list">Update</string>
<string name="content_description_keyboard_close_fields">Velden sluiten</string>
<string name="error_create_database_file">Kan geen database aanmaken met dit wachtwoord en sleutelbestand.</string>
<string name="menu_advanced_unlock_settings">Geavanceerd ontgrendelen</string>
<string name="biometric_prompt_store_credential_title">Biometrische herkenning opslaan</string>
<string name="biometric_prompt_store_credential_message">Waarschuwing: Je moet nog steeds je hoofdwachtwoord onthouden als je biometrische herkenning gebruikt.</string>
<string name="biometric_prompt_extract_credential_title">Database openen met biometrische herkenning</string>
<string name="biometric_prompt_extract_credential_message">Database-referenties uitpakken met biometrische herkenning</string>
<string name="biometric">Biometrie</string>
<string name="biometric_auto_open_prompt_title">Automatisch om biometrie vragen</string>
<string name="biometric_auto_open_prompt_summary">Automatisch om biometrie vragen als een database hiervoor is ingesteld</string>
<string name="biometric_auto_open_prompt_title">Auto-open suggestie</string>
<string name="biometric_auto_open_prompt_summary">Automatisch om geavanceerde ontgrendeling vragen als een database hiervoor is ingesteld</string>
<string name="enable">Inschakelen</string>
<string name="disable">Uitschakelen</string>
<string name="master_key">Hoofdsleutel</string>
@@ -404,7 +390,7 @@
<string name="contains_duplicate_uuid">De database bevat dubbele UUID\'s.</string>
<string name="contains_duplicate_uuid_procedure">Probleem oplossen door nieuwe UUID\'s te genereren voor de duplicaten\?</string>
<string name="database_opened">Database geopend</string>
<string name="clipboard_explanation_summary">Kopieer invoervelden met behulp van het klembord van uw apparaat</string>
<string name="clipboard_explanation_summary">Kopieer invoervelden met behulp van het klembord van dit apparaat</string>
<string name="advanced_unlock_explanation_summary">Geavanceerde ontgrendeling gebruiken om een database gemakkelijker te openen</string>
<string name="database_data_compression_title">Gegevenscompressie</string>
<string name="database_data_compression_summary">Gegevenscompressie verkleint de omvang van de database</string>
@@ -427,32 +413,31 @@
<string name="enable_auto_save_database_summary">Sla de database op na elke belangrijke actie (in \"Schrijf\" modus)</string>
<string name="education_setup_OTP_title">OTP instellen</string>
<string name="remember_keyfile_locations_title">Locatie van sleutelbestanden opslaan</string>
<string name="remember_database_locations_title">Databaselocaties onthouden</string>
<string name="remember_database_locations_title">Databaselocaties opslaan</string>
<string name="hide_expired_entries_summary">Verlopen items worden niet getoond</string>
<string name="hide_expired_entries_title">Verberg verlopen items</string>
<string name="download_complete">Klaar!</string>
<string name="hide_expired_entries_title">Verlopen items verbergen</string>
<string name="download_complete">Voltooid!</string>
<string name="download_finalization">Voltooien…</string>
<string name="download_progression">Voortgang: %1$d%%</string>
<string name="download_initialization">Initialiseren…</string>
<string name="download_attachment">Download %1$s</string>
<string name="education_setup_OTP_summary">Stel eenmalig wachtwoordbeheer (HOTP / TOTP) in om een token te genereren dat wordt gevraagd voor tweefactorauthenticatie (2FA).</string>
<string name="education_setup_OTP_summary">Stel eenmalig wachtwoordbeheer (HOTP / TOTP) in om een token te genereren voor tweefactorauthenticatie (2FA).</string>
<string name="enable_auto_save_database_title">Automatisch opslaan</string>
<string name="autofill_auto_search_summary">Automatisch zoekresultaten voorstellen vanuit het webdomein of de toepassings-ID</string>
<string name="autofill_auto_search_title">Automatisch zoeken</string>
<string name="recycle_bin_group_title">Prullenbak</string>
<string name="lock_database_show_button_summary">Geeft de vergrendelknop weer in de gebruikersinterface</string>
<string name="lock_database_show_button_summary">Geef de vergrendelknop weer in de gebruikersinterface</string>
<string name="lock_database_show_button_title">Vergrendelknop weergeven</string>
<string name="autofill_preference_title">Instellingen voor automatisch aanvullen</string>
<string name="credential_before_click_biometric_button">Voer het wachtwoord in en klik vervolgens op de knop \"Biometrie\".</string>
<string name="keystore_not_accessible">De sleutelopslag is niet correct geïnitialiseerd.</string>
<string name="warning_permanently_delete_nodes">Geselecteerde knooppunten definitief verwijderen\?</string>
<string name="warning_database_link_revoked">Toegang tot het bestand ingetrokken door bestandsbeheer</string>
<string name="warning_database_read_only">Bestandstoegang verlenen om databasewijzigingen op te slaan</string>
<string name="command_execution">Opdracht uitvoeren…</string>
<string name="hide_broken_locations_summary">Verberg gebroken links in de lijst met recente databases</string>
<string name="hide_broken_locations_title">Verberg corrupte databasekoppelingen</string>
<string name="remember_keyfile_locations_summary">Onthoudt waar de databasesleutelbestanden zijn opgeslagen</string>
<string name="remember_database_locations_summary">Onthoudt waar de databases zijn opgeslagen</string>
<string name="hide_broken_locations_summary">Gebroken links in de lijst met recente databases verbergen</string>
<string name="hide_broken_locations_title">Corrupte databasekoppelingen verbergen</string>
<string name="remember_keyfile_locations_summary">Onthoud de locatie van databasesleutelbestanden</string>
<string name="remember_database_locations_summary">Onthoud de locatie van databases</string>
<string name="auto_focus_search_summary">Zoekopdracht aanmaken bij het openen van een database</string>
<string name="auto_focus_search_title">Snel zoeken</string>
<string name="menu_delete_entry_history">Geschiedenis wissen</string>
@@ -485,19 +470,19 @@
<string name="content_description_add_item">Item toevoegen</string>
<string name="keyboard_auto_go_action_summary">\"Gaan\"-toetsactie na het indrukken van een \"Veld\"-toets</string>
<string name="keyboard_auto_go_action_title">Automatische toetsactie</string>
<string name="keyboard_previous_fill_in_summary">Schakel automatisch terug naar het vorige toetsenbord na het uitvoeren van de Automatische toetsactie</string>
<string name="keyboard_previous_fill_in_summary">Schakel automatisch terug naar het vorige toetsenbord na het uitvoeren van de \"Automatische toetsactie\"</string>
<string name="keyboard_previous_fill_in_title">Automatische toetsactie</string>
<string name="keyboard_previous_database_credentials_summary">Schakel automatisch terug naar het vorige toetsenbord op het databasereferentiescherm</string>
<string name="keyboard_previous_database_credentials_title">Scherm Databasereferenties</string>
<string name="keyboard_change">Van toetsenbord wisselen</string>
<string name="upload_attachment">%1$s uploaden</string>
<string name="education_add_attachment_summary">Upload een bijlage bij dit item om belangrijke externe gegevens op te slaan.</string>
<string name="upload_attachment">Upload %1$s</string>
<string name="education_add_attachment_summary">Voeg een bijlage toe aan dit item om belangrijke externe gegevens op te slaan.</string>
<string name="education_add_attachment_title">Bijlage toevoegen</string>
<string name="warning_sure_add_file">Toch het bestand toevoegen\?</string>
<string name="warning_file_too_big">Een KeePass-database mag alleen kleine hulpprogramma-bestanden bevatten (zoals PGP-sleutelbestanden).
<string name="warning_sure_add_file">Het bestand toch toevoegen\?</string>
<string name="warning_file_too_big">Een KeePass database is bedoeld om alleen kleine gebruiksbestanden te bevatten (zoals PGP sleutelbestanden).
\n
\nDe database kan erg groot worden en de prestaties kunnen verminderen bij deze upload.</string>
<string name="warning_replace_file">Als je dit bestand uploadt, wordt het bestaande vervangen.</string>
\nMet deze upload kan de database erg groot worden en kunnen de prestaties verminderen.</string>
<string name="warning_replace_file">Uploaden van dit bestand zal het bestaande bestand vervangen.</string>
<string name="content_description_credentials_information">Inloggegevens</string>
<string name="warning_remove_unlinked_attachment">Het verwijderen van niet-gekoppelde gegevens kan de omvang van uw database verkleinen, maar kan ook gegevens verwijderen die voor KeePass-plug-ins worden gebruikt.</string>
<string name="warning_sure_remove_data">Deze gegevens toch verwijderen\?</string>
@@ -506,4 +491,56 @@
<string name="data">Gegevens</string>
<string name="database_data_remove_unlinked_attachments_title">Niet-gekoppelde gegevens verwijderen</string>
<string name="database_data_remove_unlinked_attachments_summary">Verwijdert bijlagen die in de database staan, maar niet aan een item zijn gekoppeld</string>
<string name="show_uuid_summary">Geeft de UUID weer die aan een item is gekoppeld</string>
<string name="show_uuid_title">UUID tonen</string>
<string name="autofill_read_only_save">Het opslaan van gegevens is niet toegestaan voor een database die is geopend als alleen-lezen.</string>
<string name="autofill_ask_to_save_data_summary">Vraag om gegevens op te slaan wanneer een formulier is gevalideerd</string>
<string name="autofill_ask_to_save_data_title">Vragen om gegevens op te slaan</string>
<string name="autofill_save_search_info_summary">Probeer zoekinformatie op te slaan bij u een handmatige invoerselectie</string>
<string name="autofill_save_search_info_title">Zoekinformatie opslaan</string>
<string name="autofill_close_database_summary">Sluit de database na een selectie voor automatisch aanvullen</string>
<string name="autofill_close_database_title">Database sluiten</string>
<string name="keyboard_previous_lock_summary">Schakel na het vergrendelen van de database automatisch terug naar het vorige toetsenbord</string>
<string name="keyboard_previous_lock_title">Database vergrendelen</string>
<string name="keyboard_save_search_info_summary">Probeer gedeelde informatie op te slaan bij een handmatige invoerselectie</string>
<string name="keyboard_save_search_info_title">Gedeelde info opslaan</string>
<string name="notification">Melding</string>
<string name="biometric_security_update_required">Biometrische beveiligingsupdate vereist.</string>
<string name="configure_biometric">Geen biometrische gegevens of apparaatgegevens geregistreerd.</string>
<string name="warning_empty_recycle_bin">Alles definitief uit de prullenbak verwijderen\?</string>
<string name="registration_mode">Registratiemodus</string>
<string name="save_mode">Veilige modus</string>
<string name="search_mode">Zoekmodus</string>
<string name="error_registration_read_only">Het opslaan van een nieuw item is niet toegestaan in een alleen-lezen database</string>
<string name="education_advanced_unlock_summary">Koppel je wachtwoord aan je gescande biometrische gegevens of apparaatreferentie om je database snel te ontgrendelen.</string>
<string name="education_advanced_unlock_title">Geavanceerde database-ontgrendeling</string>
<string name="enter">Enter</string>
<string name="backspace">Backspace</string>
<string name="select_entry">Item selecteren</string>
<string name="back_to_previous_keyboard">Terug naar vorig toetsenbord</string>
<string name="custom_fields">Aangepaste velden</string>
<string name="advanced_unlock_delete_all_key_warning">Alle coderingssleutels met betrekking tot geavanceerde ontgrendelingsherkenning verwijderen\?</string>
<string name="advanced_unlock_timeout">Time-out voor geavanceerd ontgrendelen</string>
<string name="temp_advanced_unlock_timeout_summary">Duur van geavanceerd ontgrendelingsgebruik voordat de inhoud wordt verwijderd</string>
<string name="temp_advanced_unlock_timeout_title">Vervaltijd voor geavanceerde ontgrendeling</string>
<string name="temp_advanced_unlock_enable_summary">Sla geen versleutelde inhoud op om geavanceerde ontgrendeling te gebruiken</string>
<string name="temp_advanced_unlock_enable_title">Tijdelijke geavanceerde ontgrendeling</string>
<string name="device_credential_unlock_enable_summary">Hiermee kan je de referentie van je apparaat gebruiken om de database te openen</string>
<string name="device_credential_unlock_enable_title">Ontgrendeling met apparaatreferenties</string>
<string name="advanced_unlock_tap_delete">Tik om geavanceerde ontgrendelingstoetsen te verwijderen</string>
<string name="content">Inhoud</string>
<string name="device_credential">Apparaatreferentie</string>
<string name="credential_before_click_advanced_unlock_button">Typ het wachtwoord en klik vervolgens op de knop \"Geavanceerd ontgrendelen\".</string>
<string name="advanced_unlock_prompt_not_initialized">Kan geavanceerde ontgrendelingsprompt niet initialiseren.</string>
<string name="advanced_unlock_scanning_error">Geavanceerde ontgrendelingsfout: %1$s</string>
<string name="advanced_unlock_not_recognized">Kan geavanceerde ontgrendelingsafdruk niet herkennen</string>
<string name="advanced_unlock_invalid_key">Kan de geavanceerde ontgrendelingssleutel niet lezen. Verwijder deze en herhaal de herkenningsprocedure voor het ontgrendelen.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Databasegegevens uitpakken met geavanceerde ontgrendelingsgegevens</string>
<string name="advanced_unlock_prompt_extract_credential_title">Open database met geavanceerde ontgrendelingsherkenning</string>
<string name="advanced_unlock_prompt_store_credential_message">Waarschuwing: je moet nog steeds je hoofdwachtwoord onthouden als je geavanceerde ontgrendelingsherkenning gebruikt.</string>
<string name="advanced_unlock_prompt_store_credential_title">Geavanceerde ontgrendelingsherkenning</string>
<string name="open_advanced_unlock_prompt_store_credential">Open de geavanceerde ontgrendelingsprompt om inloggegevens op te slaan</string>
<string name="open_advanced_unlock_prompt_unlock_database">Open de geavanceerde ontgrendelingsprompt om de database te ontgrendelen</string>
<string name="menu_keystore_remove_key">Geavanceerde ontgrendelingssleutel verwijderen</string>
<string name="error_field_name_already_exists">De veldnaam bestaat al.</string>
</resources>

View File

@@ -25,7 +25,7 @@
<string name="add_group">Legg til gruppe</string>
<string name="encryption_algorithm">Encryption algorithm</string>
<string name="app_timeout">Programtidsavbrot</string>
<string name="app_timeout_summary">Idle time before locking the database</string>
<string name="app_timeout_summary"></string>
<string name="application">App</string>
<string name="menu_app_settings">Programinnstillingar</string>
<string name="brackets">Parentesar</string>

View File

@@ -85,7 +85,6 @@
<string name="menu_open_file_read_and_write">ਸੋਧ-ਯੋਗ</string>
<string name="menu_file_selection_read_only">ਲਿਖਣ-ਤੋਂ-ਬਚਾਅ</string>
<string name="menu_url">URL ਉੱਤੇ ਜਾਓ</string>
<string name="menu_biometric_remove_key">ਸੰਭਾਲੀ ਬਾਇਓਮੈਟਰਿਕ ਕੁੰਜੀ ਹਟਾਓ</string>
<string name="menu_showpass">ਪਾਸਵਰਡ ਵਿਖਾਓ</string>
<string name="menu_search">ਖੋਜੋ</string>
<string name="menu_open">ਖੋਲ੍ਹੋ</string>
@@ -272,14 +271,6 @@
<string name="lock_database_screen_off_summary">ਜਦੋਂ ਸਕਰੀਨ ਬੰਦ ਹੋ ਜਾਵੇ ਤਾਂ ਡਾਟਾਬੇਸ ਨੂੰ ਲਾਕ ਕਰੋ</string>
<string name="clipboard_notifications_title">ਕਲਿੱਪਬੋਰਡ ਨੋਟੀਫਿਕੇਸ਼ਨ</string>
<string name="set_autofill_service_title">ਮੂਲ ਆਪੇ-ਭਰਨ ਸੇਵਾ ਵਜੋਂ ਸੈੱਟ ਕਰੋ</string>
<string name="credential_before_click_biometric_button">ਪਾਸਵਰਡ ਲਿਖੋ ਅਤੇ ਤਦ \"ਬਾਇਓਮੈਟਰਿਕ\" ਬਟਨ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।</string>
<string name="biometric_scanning_error">ਬਾਇਓਮੈਟਰਿਕ ਗ਼ਲਤੀ: %1$s</string>
<string name="biometric_not_recognized">ਬਾਇਓਮੈਟਰਿਕ ਪਛਾਣ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ</string>
<string name="biometric_prompt_extract_credential_title">ਬਾਇਓਮੈਟਰਿਕ ਪਛਾਣ ਨਾਲ ਡਾਟਾਬੇਸ ਖੋਲ੍ਹੋ</string>
<string name="biometric_prompt_store_credential_message">ਸਾਵਧਾਨ: ਜੇ ਤੁਸੀਂ ਬਾਇਓਮੈਟਰਿਕ ਪਛਾਣ ਵਰਤਣੀ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਤੁਹਾਨੂੰ ਹਾਲੇ ਵੀ ਆਪਣਾ ਮੁੱਖ ਪਾਸਵਰਡ ਯਾਦ ਰੱਖਣ ਦੀ ਲੋੜ ਹੈ।</string>
<string name="biometric_prompt_store_credential_title">ਬਾਇਓਮੈਟਰਿਕ ਪਛਾਣ ਨੂੰ ਸੰਭਾਲੋ</string>
<string name="open_biometric_prompt_store_credential">ਸਨਦਾਂ ਸੰਭਾਲਣ ਲਈ ਬਾਇਓਮੈਟਰਿਕ ਪੁੱਛਗਿੱਛ ਕਰੋ</string>
<string name="open_biometric_prompt_unlock_database">ਡਾਟਾਬੇਸ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਬਾਇਮੈਟਰਿਕ ਪੁੱਛਗਿੱਛ ਖੋਲ੍ਹੋ</string>
<string name="configure_biometric">ਕੋਈ ਬਾਇਓਮੈਟਰਿਕ ਜਾਂ ਡਿਵਾਈਸ ਸਨਦ ਦਾਖਲ ਨਹੀਂ ਕੀਤੀ ਹੈ।</string>
<string name="warning_sure_remove_data">ਇਹ ਡਾਟਾ ਕਿਵੇਂ ਵੀ ਹਟਾਉਣਾ ਹੈ\?</string>
<string name="warning_sure_add_file">ਕਿਵੇਂ ਵੀ ਫ਼ਾਇਲ ਜੋੜਨੀ ਹੈ\?</string>
@@ -347,8 +338,6 @@
<string name="autofill_close_database_title">ਡਾਟਾਬੇਸ ਬੰਦ ਕਰੋ</string>
<string name="enable_read_only_title">ਲਿਖਣ ਤੋਂ ਸੁਰੱਖਿਅਤ</string>
<string name="education_search_title">ਐਂਟਰੀਆਂ ਵਿੱਚੋਂ ਲੱਭੋ</string>
<string name="education_biometric_title">ਬਾਇਓਮੈਟਰਿਕ ਡਾਟਾਬੇਸ ਅਣ-ਲਾਕ ਕਰੋ</string>
<string name="education_biometric_summary">ਤੁਹਾਡੇ ਡਾਟਾਬੇਸ ਨੂੰ ਫ਼ੌਰੀ ਅਣ-ਲਾਕ ਕਰਨ ਲਈ ਆਪਣੇ ਪਾਸਵਰਡ ਨੂੰ ਆਪਣੇ ਸਕੈਨ ਕੀਤੇ ਬਾਇਮੈਟਰਿਕ ਨਾਲ ਲਿੰਕ ਕਰੋ।</string>
<string name="education_entry_edit_title">ਐਂਟਰੀ ਨੂੰ ਸੋਧੋ</string>
<string name="education_add_attachment_title">ਅਟੈਚਮੈਂਟ ਜੋੜੋ</string>
<string name="education_add_attachment_summary">ਖ਼ਾਸ ਬਾਹਰੀ ਡਾਟਾ ਸੰਭਾਲਣ ਲਈ ਤੁਹਾਡੀ ਐਂਟਰੀ ਲਈ ਅਟੈਚਮੈਂਟ ਅੱਪਲੋਡ ਕਰੋ।</string>

View File

@@ -167,7 +167,6 @@
<string name="menu_move">Przenieś</string>
<string name="menu_paste">Wklej</string>
<string name="menu_cancel">Anuluj</string>
<string name="menu_biometric_remove_key">Usuń zapisany klucz linii papilarnych</string>
<string name="menu_file_selection_read_only">Chroniony przed zapisem</string>
<string name="menu_open_file_read_and_write">Modyfikowalne</string>
<string name="protection">Ochrona</string>
@@ -195,11 +194,6 @@
<string name="version_label">Wersja %1$s</string>
<string name="encrypted_value_stored">Zapisano zaszyfrowane hasło</string>
<string name="sort_groups_before">Grupy poprzednie</string>
<string name="open_biometric_prompt_unlock_database">Otwórz żądanie biometryczne, aby odblokować bazę danych</string>
<string name="biometric_invalid_key">Nie można odczytać klucza biometrycznego. Usuń go i powtórz procedurę rozpoznawania biometrycznego.</string>
<string name="biometric_not_recognized">Nie można rozpoznać odcisku palca</string>
<string name="biometric_scanning_error">Problem z odciskiem palca: %1$s</string>
<string name="open_biometric_prompt_store_credential">Użyj odcisku palca, aby zapisać to hasło</string>
<string name="no_credentials_stored">Baza danych nie ma jeszcze hasła.</string>
<string name="database_history">Historia</string>
<string name="menu_appearance_settings">Wygląd</string>
@@ -224,8 +218,7 @@
<string name="biometric_unlock_enable_title">Skanowanie odcisków palców</string>
<string name="biometric_unlock_enable_summary">Umożliwia zeskanowanie danych biometrycznych w celu otwarcia bazy danych</string>
<string name="biometric_delete_all_key_title">Usuń klucze szyfrowania</string>
<string name="biometric_delete_all_key_summary">Usuń wszystkie klucze szyfrowania związane z rozpoznawaniem linii papilarnych</string>
<string name="biometric_delete_all_key_warning">Czy usunąć wszystkie klucze szyfrowania związane z rozpoznawaniem biometrycznym\?</string>
<string name="biometric_delete_all_key_summary">Usuń wszystkie klucze szyfrujące związane z zaawansowanym rozpoznawaniem odblokowania</string>
<string name="unavailable_feature_text">Nie można uruchomić tej funkcji.</string>
<string name="unavailable_feature_version">Urządzenie pracuje na systemie Android %1$s, ale wymaga wersji %2$s lub nowszej.</string>
<string name="unavailable_feature_hardware">Nie można znaleźć odpowiedniego sprzętu.</string>
@@ -235,7 +228,7 @@
<string name="create_keepass_file">Utwórz nową bazę danych</string>
<string name="recycle_bin_title">Wykorzystaj kosz</string>
<string name="recycle_bin_summary">Przenosi grupy i wpisy do grupy \"Kosz\" przed usunięciem</string>
<string name="monospace_font_fields_enable_title">Pole czcionka</string>
<string name="monospace_font_fields_enable_title">Czcionka pola</string>
<string name="monospace_font_fields_enable_summary">Zmień czcionkę użytą w polach, aby poprawić widoczność postaci</string>
<string name="allow_copy_password_title">Zaufanie do schowka</string>
<string name="allow_copy_password_summary">Zezwalanie na kopiowanie hasła wejściowego i chronionych pól do schowka</string>
@@ -244,7 +237,7 @@
<string name="database_description_title">Opis bazy danych</string>
<string name="database_version_title">Wersja bazy danych</string>
<string name="text_appearance">Tekst</string>
<string name="application_appearance">Aplikacja</string>
<string name="application_appearance">Wygląd</string>
<string name="other">Inne</string>
<string name="keyboard">Klawiatura</string>
<string name="magic_keyboard_title">Magikeyboard</string>
@@ -268,8 +261,6 @@
\nGrupy (~ foldery) organizują wpisy w bazie danych.</string>
<string name="education_search_title">Przeszukuj wpisy</string>
<string name="education_search_summary">Wprowadź tytuł, nazwę użytkownika lub zawartość innych pól, aby odzyskać swoje hasła.</string>
<string name="education_biometric_title">Biometryczne odblokowanie bazy danych</string>
<string name="education_biometric_summary">Połącz swoje hasło z zeskanowanym odciskiem palca, aby szybko odblokować bazę danych.</string>
<string name="education_entry_edit_title">Edytuj wpis</string>
<string name="education_entry_edit_summary">Edytuj swój wpis za pomocą pól niestandardowych. Dane puli mogą być przywoływane między różnymi polami wprowadzania.</string>
<string name="education_generate_password_title">Utwórz silne hasło</string>
@@ -280,8 +271,8 @@
<string name="education_read_only_title">Zapisz ochronę swojej bazy danych</string>
<string name="education_read_only_summary">Zmień tryb otwierania sesji.
\n
\n„Zabezpieczony przed zapisem zapobiega niezamierzonym zmianom w bazie danych.
\nModyfikowalne pozwala dodawać, usuwać lub modyfikować wszystkie elementy.</string>
\n\"Ochrona przed zapisem\" zapobiega niezamierzonych zmian w bazie danych.
\n\"Modyfikowalne\" pozwala dodawać, usuwać lub modyfikować wszystkie elementy, jak chcesz.</string>
<string name="education_field_copy_title">Skopiuj pole</string>
<string name="education_field_copy_summary">Skopiowane pola można wkleić w dowolnym miejscu.
\n
@@ -302,12 +293,11 @@
<string name="html_text_dev_feature_encourage">zachęcasz programistów do tworzenia &lt;strong&gt;nowych funkcji&lt;/strong&gt; i &lt;strong&gt;naprawy błędów&lt;/strong&gt; zgodnie z Twoimi uwagami.</string>
<string name="html_text_dev_feature_thanks">Wielkie dzięki za twój wkład.</string>
<string name="html_text_dev_feature_work_hard">Ciężko pracujemy, aby szybko udostępnić tę funkcję.</string>
<string name="html_text_dev_feature_upgrade">Nie zapomnij o aktualizacji aplikacji, instalując nowe wersje.</string>
<string name="html_text_dev_feature_upgrade">Pamiętaj, aby aktualizować swoją aplikację, instalując nowe wersje.</string>
<string name="download">Pobieranie</string>
<string name="contribute">Przyczyń się</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Motyw aplikacji</string>
<string name="style_choose_summary">Motyw używany w aplikacji</string>
<string name="icon_pack_choose_title">Pakiet ikon</string>
@@ -365,15 +355,11 @@
<string name="content_description_keyboard_close_fields">Zamknij pola</string>
<string name="error_create_database_file">Nie można utworzyć bazy danych przy użyciu tego hasła i pliku klucza.</string>
<string name="menu_advanced_unlock_settings">Zaawansowane odblokowywanie</string>
<string name="biometric_prompt_store_credential_title">Zapisz rozpoznawanie biometryczne</string>
<string name="biometric_prompt_store_credential_message">Ostrzeżenie: Jeśli korzystasz z rozpoznawania biometrycznego, musisz jeszcze zapamiętać hasło główne.</string>
<string name="biometric_prompt_extract_credential_title">Otwarta baza danych z rozpoznawaniem biometrycznym</string>
<string name="biometric_prompt_extract_credential_message">Wyodrębnij poświadczenia bazy danych z danymi biometrycznymi</string>
<string name="biometric">Biometryczne</string>
<string name="biometric_auto_open_prompt_title">Automatyczne otwieranie monitu biometrycznego</string>
<string name="biometric_auto_open_prompt_title">Automatyczne otwieranie</string>
<string name="enable">Włącz</string>
<string name="disable">Wyłącz</string>
<string name="biometric_auto_open_prompt_summary">Automatycznie pytaj o dane biometryczne, jeśli baza danych jest ustawiona do korzystania z nich</string>
<string name="biometric_auto_open_prompt_summary">Automatyczne żądanie zaawansowanego odblokowania, jeśli baza danych jest skonfigurowana do korzystania z niej</string>
<string name="content_description_node_children">Węzły podrzędne</string>
<string name="master_key">Klucz główny</string>
<string name="security">Zabezpieczenia</string>
@@ -386,7 +372,7 @@
<string name="otp_digits">Cyfry</string>
<string name="otp_algorithm">Algorytm</string>
<string name="entry_otp">OTP</string>
<string name="error_copy_group_here">Nie można tutaj skopiować wpisu.</string>
<string name="error_copy_group_here">Tutaj nie można skopiować grupy.</string>
<string name="creating_database">Tworzenie bazy danych…</string>
<string name="menu_security_settings">Ustawienia zabezpieczeń</string>
<string name="menu_master_key_settings">Ustawienia klucza głównego</string>
@@ -426,7 +412,6 @@
<string name="command_execution">Wykonywanie polecenia…</string>
<string name="warning_permanently_delete_nodes">Czy trwale usunąć wybrane węzły\?</string>
<string name="keystore_not_accessible">Magazyn kluczy nie został poprawnie zainicjowany.</string>
<string name="credential_before_click_biometric_button">Wpisz hasło, a następnie kliknij przycisk \"Biometric\".</string>
<string name="recycle_bin_group_title">Kosz grupy</string>
<string name="enable_auto_save_database_title">Automatycznie zapisuj bazę danych</string>
<string name="enable_auto_save_database_summary">Zapisz bazę danych po każdym ważnym działaniu (w trybie „Modyfikowalnym”)</string>
@@ -518,8 +503,6 @@
<string name="keyboard_save_search_info_summary">Spróbuj zapisać udostępnione informacje podczas ręcznego wybierania pozycji</string>
<string name="keyboard_save_search_info_title">Zapisz udostępnione informacje</string>
<string name="notification">Powiadomienia</string>
<string name="crypto_object_not_initialized">Nie można pobrać obiektu kryptograficznego.</string>
<string name="biometric_prompt_not_initialized">Nie można zainicjować monitu biometrycznego.</string>
<string name="biometric_security_update_required">Wymagana aktualizacja zabezpieczeń biometrycznych.</string>
<string name="configure_biometric">Nie zarejestrowano żadnych danych biometrycznych ani danych urządzenia.</string>
<string name="warning_empty_recycle_bin">Trwale usunąć wszystkie węzły z kosza\?</string>
@@ -527,4 +510,30 @@
<string name="save_mode">Tryb zapisywania</string>
<string name="search_mode">Tryb wyszukiwania</string>
<string name="error_registration_read_only">Zapisywanie nowego elementu nie jest dozwolone w bazie danych tylko do odczytu</string>
<string name="error_field_name_already_exists">Nazwa pola już istnieje.</string>
<string name="enter">Enter</string>
<string name="backspace">Backspace</string>
<string name="select_entry">Wybierz pozycję</string>
<string name="back_to_previous_keyboard">Wróć do poprzedniej klawiatury</string>
<string name="custom_fields">Pola niestandardowe</string>
<string name="advanced_unlock_delete_all_key_warning">Czy usunąć wszystkie klucze szyfrowania związane z zaawansowanym rozpoznawaniem odblokowania\?</string>
<string name="device_credential_unlock_enable_summary">Umożliwia otwieranie bazy danych za pomocą poświadczeń urządzenia</string>
<string name="device_credential_unlock_enable_title">Odblokowanie uwierzytelniające urządzenia</string>
<string name="device_credential">Uwierzytelnienie urządzenia</string>
<string name="credential_before_click_advanced_unlock_button">Wpisz hasło, a następnie kliknij przycisk \"Zaawansowane odblokowanie\".</string>
<string name="advanced_unlock_not_recognized">Nie można rozpoznać zaawansowanego wydruku odblokowującego</string>
<string name="advanced_unlock_invalid_key">Nie można odczytać zaawansowanego klucza odblokowuj. Usuń go i powtórz procedurę rozpoznawania odblokowania.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Wyodrębnij poświadczenia bazy danych z zaawansowanymi danymi odblokowującymi</string>
<string name="advanced_unlock_prompt_store_credential_message">Ostrzeżenie: Jeśli używasz zaawansowanego rozpoznawania odblokowania, nadal musisz zapamiętać hasło główne.</string>
<string name="advanced_unlock_prompt_store_credential_title">Zaawansowane rozpoznawanie odblokowania</string>
<string name="menu_keystore_remove_key">Usuń zaawansowany klucz odblokowujący</string>
<string name="education_advanced_unlock_summary">Połącz swoje hasło ze zeskanowanymi danymi biometrycznymi lub danymi logowania urządzenia, aby szybko odblokować bazę danych.</string>
<string name="education_advanced_unlock_title">Zaawansowane odblokowywanie bazy danych</string>
<string name="advanced_unlock_timeout">Zaawansowany limit czasu odblokowania</string>
<string name="temp_advanced_unlock_timeout_summary">Czas trwania zaawansowanego odblokowywania przed usunięciem jego zawartości</string>
<string name="temp_advanced_unlock_timeout_title">Wygaśnięcie zaawansowanego odblokowania</string>
<string name="temp_advanced_unlock_enable_summary">Nie przechowuj żadnych zaszyfrowanych treści, aby korzystać z zaawansowanego odblokowywania</string>
<string name="advanced_unlock_tap_delete">Naciśnij, aby usunąć zaawansowane klucze odblokowujące</string>
<string name="content">Zawartość</string>
<string name="advanced_unlock_prompt_extract_credential_title">Otwórz bazę danych z zaawansowanym rozpoznawaniem odblokowania</string>
</resources>

View File

@@ -163,7 +163,6 @@
<string name="menu_move">Mover</string>
<string name="menu_paste">Colar</string>
<string name="menu_cancel">Cancelar</string>
<string name="menu_biometric_remove_key">Deletar impressão digital salva</string>
<string name="menu_file_selection_read_only">Somente leitura</string>
<string name="menu_open_file_read_and_write">Gravação</string>
<string name="protection">Proteção</string>
@@ -191,12 +190,7 @@
<string name="warning_password_encoding">Evite caracteres fora do formato de codificação do arquivo do banco (todos os caracteres não reconhecidos são convertidos para a mesma letra).</string>
<string name="warning_empty_password">Continuar sem proteção de desbloqueio de senha\?</string>
<string name="warning_no_encryption_key">Continuar sem chave de criptografia\?</string>
<string name="open_biometric_prompt_unlock_database">Escaneamento de impressão digital para abrir o bando de dados</string>
<string name="encrypted_value_stored">Senha encriptada armazenada</string>
<string name="biometric_invalid_key">Não pôde ler chave de impressão digital. Por favor, apague-a e repita o procedimento de reconhecimento biométrico.</string>
<string name="biometric_not_recognized">Não pôde reconhecer impressão digital</string>
<string name="biometric_scanning_error">Problema de Impressão digital: %1$s</string>
<string name="open_biometric_prompt_store_credential">Use Impressão digital para armazenar esta senha</string>
<string name="no_credentials_stored">Ainda não há nenhuma senha armazenada nesse banco de dados.</string>
<string name="database_history">Histórico</string>
<string name="menu_appearance_settings">Aparência</string>
@@ -221,7 +215,6 @@
<string name="biometric_unlock_enable_summary">Permite que você escaneie sua biometria para a abertura do banco de dados</string>
<string name="biometric_delete_all_key_title">Apague chaves de encriptação</string>
<string name="biometric_delete_all_key_summary">Apague todas as chaves de encriptação relacionadas ao reconhecimento de Impressões digitais</string>
<string name="biometric_delete_all_key_warning">Apagar todas as chaves de criptografia relacionadas ao reconhecimento biométrico\?</string>
<string name="unavailable_feature_text">Não foi possível iniciar esse recurso.</string>
<string name="unavailable_feature_version">O dispositivo está utilizando Android %1$s, mas precisa %2$s ou posterior.</string>
<string name="unavailable_feature_hardware">Não foi possível encontrar o hardware correspondente.</string>
@@ -264,8 +257,6 @@
\nGrupos (~pastas) organizam suas entradas e sua base de dados.</string>
<string name="education_search_title">Pesquise suas entradas</string>
<string name="education_search_summary">Entre com título, nome de usuário ou outros campos para recuperar facilmente suas senhas.</string>
<string name="education_biometric_title">Desbloqueio do banco de dados por Impressão digital</string>
<string name="education_biometric_summary">Faça o link entre sua senha e sua impressão digital para rapidamente desbloquear seu banco de dados.</string>
<string name="education_entry_edit_title">Modifique a entrada</string>
<string name="education_entry_edit_summary">Edite a sua entrada com campos personalizados. Os conjuntos de dados podem ser referenciados entre campos de entradas diferentes.</string>
<string name="education_generate_password_title">Criar uma senha forte</string>
@@ -303,7 +294,6 @@
<string name="contribute">Contribuir</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Tema do aplicativo</string>
<string name="style_choose_summary">Tema usado no aplicativo</string>
<string name="icon_pack_choose_title">Pacote de ícones</string>
@@ -338,7 +328,7 @@
<string name="lock_database_back_root_title">Pressione \'Voltar\' para trancar</string>
<string name="lock_database_back_root_summary">Trancar a base de dados quando o usuário pressiona o botão \"Voltar\" na tela inicial</string>
<string name="clear_clipboard_notification_title">Limpar ao fechar</string>
<string name="clear_clipboard_notification_summary">Bloquear o banco de dados quando a duração da área de transferência expirar ou a notificação for fechada depois do inicio do uso</string>
<string name="clear_clipboard_notification_summary">Bloquear o banco de dados quando a duração da área de transferência expirar ou a notificação for fechada depois do início do uso</string>
<string name="recycle_bin">Lixeira</string>
<string name="keyboard_selection_entry_title">Seleção de entrada</string>
<string name="keyboard_selection_entry_summary">Mostrar campos de entrada no Magikeyboard quando estiver visualizando uma Entrada</string>
@@ -368,10 +358,6 @@
<string name="content_description_keyboard_close_fields">Campos fechados</string>
<string name="error_create_database_file">Impossibilitado de criar um banco de dados com essa senha e arquivo-chave.</string>
<string name="menu_advanced_unlock_settings">Desbloqueio avançado</string>
<string name="biometric_prompt_store_credential_title">Salvar reconhecimento biométrico</string>
<string name="biometric_prompt_store_credential_message">AVISO: Apesar de usar o reconhecimento biométrico, você ainda precisará lembrar sua senha mestra.</string>
<string name="biometric_prompt_extract_credential_title">Abrir banco de dados com biometria</string>
<string name="biometric_prompt_extract_credential_message">Extrair credenciais do banco de dados com biometria</string>
<string name="biometric">Biometria</string>
<string name="biometric_auto_open_prompt_title">Abrir automaticamente o prompt de biometria</string>
<string name="biometric_auto_open_prompt_summary">Pedir automaticamente pelo prompt de biometria se a base de dados estiver configurada para usá-la</string>
@@ -428,7 +414,6 @@
<string name="command_execution">Executando o comando…</string>
<string name="warning_permanently_delete_nodes">Apagar permanentemente os nós selecionados\?</string>
<string name="keystore_not_accessible">A chave não foi propriamente inicializada.</string>
<string name="credential_before_click_biometric_button">Digite sua senha e então clique no botão de \"Biometria\".</string>
<string name="recycle_bin_group_title">Grupo de lixeira</string>
<string name="enable_auto_save_database_title">Salvar automaticamente a base de dados</string>
<string name="enable_auto_save_database_summary">Salvar automaticamente a base de dados depois de uma ação importante (somente no modo \"Gravação\")</string>

View File

@@ -157,7 +157,7 @@
<item>Média</item>
<item>Grande</item>
</string-array>
<string name="extended_ASCII">ASCII Estendido</string>
<string name="extended_ASCII">ASCII Extendido</string>
<string name="allow">Permitir</string>
<string name="error_load_database">Não foi possível abrir a sua base de dados.</string>
<string name="error_load_database_KDF_memory">Não foi possível carregar a chave. Tente descarregar o \"Uso de Memória\" do KDF.</string>
@@ -169,7 +169,6 @@
<string name="menu_move">Mover</string>
<string name="menu_paste">Colar</string>
<string name="menu_cancel">Cancelar</string>
<string name="menu_biometric_remove_key">Apagar o biométrico gravado</string>
<string name="menu_file_selection_read_only">Protegido contra escrita</string>
<string name="menu_open_file_read_and_write">Pode ser modificado</string>
<string name="create_keepass_file">Criar base de dados</string>
@@ -191,9 +190,6 @@
<string name="warning_no_encryption_key">Continuar sem a chave de criptografia\?</string>
<string name="build_label">Compilação %1$s</string>
<string name="encrypted_value_stored">Palavra-passe encriptada armazenada</string>
<string name="biometric_not_recognized">Biométrico não reconhecido</string>
<string name="biometric_scanning_error">Problema do biométrico: %1$s</string>
<string name="open_biometric_prompt_store_credential">Use o biométrico para armazenar esta palavra-chave</string>
<string name="no_credentials_stored">Ainda não há nenhuma palavra-chave armazenada nesta base de dados.</string>
<string name="database_history">Histórico</string>
<string name="menu_appearance_settings">Aparência</string>
@@ -251,8 +247,6 @@
\nGrupos (~pastas) organizam as suas entradas na sua base de dados.</string>
<string name="education_search_title">Pesquise suas entradas</string>
<string name="education_search_summary">Entre com título, nome de utilizador ou outros campos para recuperar facilmente as suas palavras-passe.</string>
<string name="education_biometric_title">Desbloqueio da base de dados por biométricos</string>
<string name="education_biometric_summary">Ligue a sua palavra-passe e o seu biométrico gravado para rapidamente desbloquear a sua base de dados.</string>
<string name="education_entry_edit_title">Modifique a entrada</string>
<string name="education_entry_edit_summary">Edite a sua entrada com campos personalizados. Os conjuntos de dados podem ser referenciados entre campos de entradas diferentes.</string>
<string name="education_generate_password_title">Crie uma palavra-passe forte</string>
@@ -287,7 +281,6 @@
<string name="contribute">Contribuir</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Tema da app</string>
<string name="style_choose_summary">Tema usado na app</string>
<string name="icon_pack_choose_title">Pacote de ícones</string>
@@ -305,7 +298,7 @@
\n
\n\"Somente leitura\" evita que faça alterações não intencionais na base de dados.
\n\"Gravação\" permite-o adicionar, apagar ou modificar todos os elementos.</string>
<string name="list_entries_show_username_summary">Mostrar nomes de utilizador em listas de entrada</string>
<string name="list_entries_show_username_summary">Mostrar nomes de utilizador na lista entradas</string>
<string name="clipboard">Área de transferência</string>
<string name="keyboard_name">Magikeyboard</string>
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
@@ -360,14 +353,11 @@
<string name="biometric_unlock_enable_summary">Permite que escaneie o seu biométrico para abrir a base de dados</string>
<string name="advanced_unlock_explanation_summary">Usar desbloqueamento avançado para abrir a base de dados mais facilmente</string>
<string name="database_opened">Base de dados aberta</string>
<string name="biometric_prompt_extract_credential_message">Extrair credenciais da base de dados com biométrico</string>
<string name="biometric_prompt_extract_credential_title">Abrir base de dados com biométrico</string>
<string name="contains_duplicate_uuid">A base de dados contém UUIDs duplicados.</string>
<string name="menu_save_database">Gravar base de dados</string>
<string name="creating_database">A criar a base de dados…</string>
<string name="error_save_database">Não foi possível gravar a base de dados.</string>
<string name="error_create_database_file">Impossível de criar uma base de dados com essa palavra-passe e ficheiro-chave.</string>
<string name="biometric_prompt_store_credential_message">Aviso: apesar de usar o reconhecimento biométrico, ainda precisará de se lembrar da sua palavra-passe.</string>
<string name="error_label_exists">Este rótulo já existe.</string>
<string name="autofill_block_restart">Reinicie a app que contém o formulário para ativar o bloqueio.</string>
<string name="autofill_block">Bloquear preenchimento automático</string>
@@ -387,7 +377,6 @@
<string name="subdomain_search_title">Pesquisa de subdomínios</string>
<string name="error_string_type">Este texto não corresponde ao item solicitado.</string>
<string name="content_description_add_item">Adicionar item</string>
<string name="credential_before_click_biometric_button">Digite sua palavra-passe e depois clique no botão de \"Biométrico\".</string>
<string name="error_otp_digits">O token deve conter de %1$d até %2$d dígitos.</string>
<string name="max_history_items_title">Número máximo</string>
<string name="warning_permanently_delete_nodes">Apagar permanentemente os nós selecionados\?</string>
@@ -432,7 +421,6 @@
<string name="download_attachment">Descarregar %1$s</string>
<string name="warning_database_read_only">Conceder acesso de gravação de ficheiro para gravar alterações na base de dados</string>
<string name="clipboard_explanation_summary">Copiar campos de entrada usando a área de transferência do seu aparelho</string>
<string name="biometric_prompt_store_credential_title">Gravar reconhecimento biométrico</string>
<string name="otp_digits">Dígitos</string>
<string name="discard_changes">Descartar alterações\?</string>
<string name="keystore_not_accessible">A chave não foi propriamente inicializada.</string>
@@ -448,7 +436,6 @@
<string name="lock_database_show_button_title">Mostrar botão de bloqueio</string>
<string name="security">Segurança</string>
<string name="hide_broken_locations_title">Esconder ligações quebradas de bases de dados</string>
<string name="open_biometric_prompt_unlock_database">Escaneamento do biométrico para abrir a base de dados</string>
<string name="content_description_keyboard_close_fields">Fechar campos</string>
<string name="biometric">Biométrico</string>
<string name="error_create_database">Incapaz de criar o ficheiro de base de dados.</string>
@@ -462,7 +449,6 @@
<string name="error_invalid_OTP">Segredo OTP inválido.</string>
<string name="contact">Contato</string>
<string name="otp_counter">Contador</string>
<string name="biometric_invalid_key">Não pôde ler a chave biométrica. Por favor, apague-a e repita o procedimento de reconhecimento biométrico.</string>
<string name="menu_restore_entry_history">Restaurar histórico</string>
<string name="entry_otp">OTP</string>
<string name="compression_none">Nenhum</string>
@@ -485,7 +471,6 @@
<string name="menu_advanced_unlock_settings">Desbloqueio avançado</string>
<string name="education_setup_OTP_summary">Configurar a gestão de palavra-passe única (HOTP / TOTP) para gerar um token solicitado para autenticação de dois fatores (2FA).</string>
<string name="remember_keyfile_locations_title">Lembrar locais de ficheiros-chave</string>
<string name="biometric_delete_all_key_warning">Apagar todas as chaves de criptografia relacionadas ao reconhecimento biométrico\?</string>
<string name="download_progression">Em progresso: %1$d%%</string>
<string name="biometric_auto_open_prompt_title">Abrir automaticamente o escaneamento de biomẽtrico</string>
<string name="advanced_unlock">Desbloqueio avançado</string>

View File

@@ -20,7 +20,6 @@
<string name="icon_pack_choose_title">Pacote de ícones</string>
<string name="style_choose_summary">Tema usado na app</string>
<string name="style_choose_title">Tema da app</string>
<string name="kdf_Argon2">Argon2</string>
<string name="kdf_AES">AES</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="encryption_twofish">Twofish</string>
@@ -194,7 +193,6 @@
<string name="education_setup_OTP_title">Configurar OTP</string>
<string name="education_add_attachment_summary">Envie um anexo à sua entrada para gravar dados externos importantes.</string>
<string name="education_add_attachment_title">Adicionar anexo</string>
<string name="education_biometric_title">Desbloqueio da base de dados por biométricos</string>
<string name="allow_no_password_summary">Permite tocar no botão \"Abrir\" se nenhumas credenciais estiverem selecionadas</string>
<string name="database_data_remove_unlinked_attachments_summary">Remove anexos contidos na base de dados, mas não ligados a uma entrada</string>
<string name="database_data_remove_unlinked_attachments_title">Remover dados não ligados</string>
@@ -284,14 +282,13 @@
<string name="enable_auto_save_database_summary">Gravar a base de dados automaticamente depois de uma ação importante (somente no modo \"Modificável\")</string>
<string name="enable_auto_save_database_title">Gravar a base de dados automaticamente</string>
<string name="recycle_bin_group_title">Grupo de cesto da reciclagem</string>
<string name="credential_before_click_biometric_button">Digite sua palavra-passe e depois clique no botão de \"Biométrico\".</string>
<string name="keystore_not_accessible">A chave não foi propriamente inicializada.</string>
<string name="warning_permanently_delete_nodes">Apagar permanentemente os nós selecionados\?</string>
<string name="command_execution">A executar o comando…</string>
<string name="menu_empty_recycle_bin">Esvaziar cesto da reciclagem</string>
<string name="menu_save_database">Gravar base de dados</string>
<string name="error_save_database">Não foi possível gravar a base de dados.</string>
<string name="education_biometric_summary">Ligue a sua palavra-passe e o seu biométrico gravado para rapidamente desbloquear a sua base de dados.</string>
<string name="education_advanced_unlock_summary">Ligue a sua palavra-passe e o seu biométrico gravado para rapidamente desbloquear a sua base de dados.</string>
<string name="device_keyboard_setting_title">Configurações do teclado do aparelho</string>
<string name="magic_keyboard_explanation_summary">Ative um teclado customizado, populando suas palavras-passe e todos os campos de identidade</string>
<string name="compression_gzip">Gzip</string>
@@ -342,7 +339,6 @@
<string name="master_key">Chave Mestre</string>
<string name="disable">Desativar</string>
<string name="enable">Ativar</string>
<string name="biometric_delete_all_key_warning">Apagar todas as chaves de criptografia relacionadas ao reconhecimento biométrico\?</string>
<string name="biometric_delete_all_key_summary">Apague todas as chaves de encriptação relacionadas ao reconhecimento de biométrico</string>
<string name="biometric_delete_all_key_title">Apague chaves de encriptação</string>
<string name="biometric_auto_open_prompt_summary">Pedir pelo biométrico automaticamente se a base de dados estiver configurada para usá-la</string>
@@ -352,16 +348,6 @@
<string name="biometric">Biométrico</string>
<string name="menu_appearance_settings">Aparência</string>
<string name="no_credentials_stored">Ainda não há nenhuma palavra-chave armazenada nesta base de dados.</string>
<string name="biometric_scanning_error">Problema do biométrico: %1$s</string>
<string name="biometric_not_recognized">Biométrico não reconhecido</string>
<string name="biometric_invalid_key">Não pôde ler a chave biométrica. Por favor, apague-a e repita o procedimento de reconhecimento biométrico.</string>
<string name="biometric_prompt_extract_credential_message">Extrair credenciais da base de dados com biométrico</string>
<string name="biometric_prompt_extract_credential_title">Abrir base de dados com biométrico</string>
<string name="biometric_prompt_store_credential_message">Aviso: apesar de usar o reconhecimento biométrico, ainda precisará de se lembrar da sua palavra-passe.</string>
<string name="biometric_prompt_store_credential_title">Gravar reconhecimento biométrico</string>
<string name="open_biometric_prompt_store_credential">Use o biométrico para armazenar esta palavra-chave</string>
<string name="open_biometric_prompt_unlock_database">Escaneamento do biométrico para abrir a base de dados</string>
<string name="menu_biometric_remove_key">Apagar o biométrico gravado</string>
<string name="menu_database_settings">Definições da base de dados</string>
<string name="menu_change_key_settings">Alterar chave mestre</string>
<string name="error_create_database_file">Impossível de criar uma base de dados com essa palavra-passe e ficheiro-chave.</string>

View File

@@ -170,7 +170,6 @@
<string name="menu_open">Deschide</string>
<string name="menu_search">Căutare</string>
<string name="menu_showpass">Arata parola</string>
<string name="menu_biometric_remove_key">Ștergeți cheia biometrică salvată</string>
<string name="menu_url">Accesați adresa URL</string>
<string name="menu_file_selection_read_only">Protejat la scriere</string>
<string name="menu_open_file_read_and_write">Modificabil</string>
@@ -235,18 +234,8 @@
<string name="version_label">Versiunea %1$s</string>
<string name="build_label">Construiți %1$s</string>
<string name="keystore_not_accessible">Magazinul de chei nu este inițializat corect.</string>
<string name="open_biometric_prompt_unlock_database">Deschideți promptul biometric pentru deblocarea bazei de date</string>
<string name="open_biometric_prompt_store_credential">Deschideți promptul biometric pentru a stoca datele de acreditare</string>
<string name="biometric_prompt_store_credential_title">Salvați recunoașterea biometrică</string>
<string name="biometric_prompt_store_credential_message">Avertisment: trebuie să vă amintiți parola de master dacă utilizați recunoașterea biometrică.</string>
<string name="biometric_prompt_extract_credential_title">Baza de date deschisă cu recunoaștere biometrică</string>
<string name="biometric_prompt_extract_credential_message">Extrageți datele de bază cu date biometrice</string>
<string name="encrypted_value_stored">Parola criptată stocată</string>
<string name="biometric_invalid_key">Nu pot citi cheia biometrică. Vă rugăm să îl ștergeți și să repetați procedura de recunoaștere biometrică.</string>
<string name="biometric_not_recognized">Nu a putut recunoaște biometric</string>
<string name="biometric_scanning_error">Eroare biometrică: %1$s</string>
<string name="no_credentials_stored">Această bază de date nu are încă credențiale stocate.</string>
<string name="credential_before_click_biometric_button">De acum nu există date creditate stocate.</string>
<string name="database_history">Istoric</string>
<string name="menu_appearance_settings">Aparenta</string>
<string name="biometric">Biometric</string>
@@ -279,7 +268,6 @@
<string name="biometric_auto_open_prompt_summary">Deschideți automat biometric prompt atunci când o cheie biometrică este definită pentru o bază de date</string>
<string name="biometric_delete_all_key_title">Ștergeți cheile de criptare</string>
<string name="biometric_delete_all_key_summary">Ștergeți toate cheile de criptare legate de recunoașterea biometrică</string>
<string name="biometric_delete_all_key_warning">Sigur doriți să ștergeți toate cheile legate de recunoașterea biometrică\?</string>
<string name="unavailable_feature_text">Nu s-a putut porni această caracteristică.</string>
<string name="unavailable_feature_version">Versiunea dvs. de Android %1$s nu corespunde versiunii minime %2$s necesare.</string>
<string name="unavailable_feature_hardware">Nu s-a putut găsi hardware-ul corespunzător.</string>
@@ -371,8 +359,6 @@
\nGrupuri (~ foldere) organizează intrări în baza de date.</string>
<string name="education_search_title">Căutați prin intrări</string>
<string name="education_search_summary">Introduceți titlul, numele de utilizator sau conținutul altor câmpuri pentru a prelua parolele.</string>
<string name="education_biometric_title">Deblocarea bazei de date prin biometric</string>
<string name="education_biometric_summary">Conectați parola la biometrica scanată pentru a debloca rapid baza de date.</string>
<string name="education_entry_edit_title">Modificați intrarea</string>
<string name="education_entry_edit_summary">Modificați-vă înregistrarea cu câmpuri personalizate. Datele despre pool pot fi referențiate între diferite câmpuri de intrare.</string>
<string name="education_generate_password_title">Creați o parolă puternică pentru intrarea dvs.</string>
@@ -420,7 +406,6 @@
<string name="encryption_twofish">Twofish</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Tema aplicației</string>
<string name="style_choose_summary">Tema folosită în aplicație</string>
<string name="icon_pack_choose_title">Pachet de pictograme</string>

View File

@@ -138,11 +138,7 @@
<string name="warning">Внимание</string>
<string name="warning_password_encoding">Избегайте использования в пароле символов вне кодировки текста в файле базы, так как эти символы будут преобразованы в одинаковый символ.</string>
<string name="version_label">Версия %1$s</string>
<string name="open_biometric_prompt_unlock_database">Начать биометрическую разблокировку базы</string>
<string name="encrypted_value_stored">Зашифрованный пароль сохранён</string>
<string name="biometric_invalid_key">Невозможно распознать биометрический ключ. Удалите его и повторите процедуру настройки биометрического распознавания.</string>
<string name="biometric_scanning_error">Проблема с биометрическим ключом: %1$s</string>
<string name="open_biometric_prompt_store_credential">Используйте биометрический ключ, чтобы сохранить главный пароль</string>
<string name="no_credentials_stored">Для этой базы главный пароль ещё не сохранён.</string>
<string name="education_unlock_summary">Введите пароль и/или файл ключа, чтобы разблокировать базу.
\n
@@ -192,7 +188,6 @@
<string name="menu_move">Переместить</string>
<string name="menu_paste">Вставить</string>
<string name="menu_cancel">Отмена</string>
<string name="menu_biometric_remove_key">Удалить биометрический ключ</string>
<string name="menu_file_selection_read_only">Только чтение</string>
<string name="menu_open_file_read_and_write">Чтение и запись</string>
<string name="sort_groups_before">Сначала группы</string>
@@ -200,7 +195,6 @@
<string name="sort_title">Название записи</string>
<string name="warning_empty_password">Продолжить без пароля для защиты базы\?</string>
<string name="warning_no_encryption_key">Продолжить без ключа шифрования\?</string>
<string name="biometric_not_recognized">Биометрический ключ не распознан</string>
<string name="database_history">История</string>
<string name="menu_appearance_settings">Внешний вид</string>
<string name="general">Общие</string>
@@ -220,14 +214,13 @@
<string name="lock">Блокировка</string>
<string name="lock_database_screen_off_title">Блокировка экрана</string>
<string name="lock_database_screen_off_summary">Блокировать базу при отключении экрана</string>
<string name="advanced_unlock">Дополнительная разблокировка</string>
<string name="biometric_unlock_enable_title">Сканирование биометрического ключа</string>
<string name="advanced_unlock">Расширенная разблокировка</string>
<string name="biometric_unlock_enable_title">Биометрическая разблокировка</string>
<string name="biometric_unlock_enable_summary">Включить разблокировку базы при помощи биометрического ключа</string>
<string name="biometric_delete_all_key_title">Удалить ключи шифрования</string>
<string name="biometric_delete_all_key_summary">Удалить все ключи шифрования, связанные с распознаванием биометрического ключа</string>
<string name="biometric_delete_all_key_warning">Удалить все ключи шифрования, связанные с биометрическим распознаванием\?</string>
<string name="unavailable_feature_text">Невозможно запустить эту функцию.</string>
<string name="unavailable_feature_version">Ваша версия Android %1$s, но требуется %2$s.</string>
<string name="biometric_delete_all_key_summary">Удалить все ключи шифрования, связанные с распознаванием расширенной разблокировки</string>
<string name="unavailable_feature_text">Невозможно использовать эту функцию.</string>
<string name="unavailable_feature_version">Ваша версия Android %1$s, требуется %2$s.</string>
<string name="unavailable_feature_hardware">Соответствующее оборудование не найдено.</string>
<string name="file_name">Имя файла</string>
<string name="path">Путь</string>
@@ -235,8 +228,8 @@
<string name="create_keepass_file">Создать новую базу</string>
<string name="recycle_bin_title">Использовать \"корзину\"</string>
<string name="recycle_bin_summary">Перемещать группу или запись в \"корзину\" вместо удаления</string>
<string name="monospace_font_fields_enable_title">Особый шрифт</string>
<string name="monospace_font_fields_enable_summary">Использовать в полях особый шрифт для лучшей читаемости</string>
<string name="monospace_font_fields_enable_title">Особый шрифт полей</string>
<string name="monospace_font_fields_enable_summary">Использовать в полях специальный шрифт для лучшей читаемости</string>
<string name="allow_copy_password_title">Доверять буферу обмена</string>
<string name="allow_copy_password_summary">Разрешить копирование пароля и защищённых полей в буфер обмена</string>
<string name="allow_copy_password_warning">Внимание: буфер обмена доступен всем приложениям. Если копируются чувствительные данные, другие программы могут их перехватить.</string>
@@ -244,7 +237,7 @@
<string name="database_description_title">Описание базы</string>
<string name="database_version_title">Версия базы</string>
<string name="text_appearance">Текст</string>
<string name="application_appearance">Приложение</string>
<string name="application_appearance">Внешний вид</string>
<string name="other">Прочее</string>
<string name="keyboard">Клавиатура</string>
<string name="magic_keyboard_title">Настройки Magikeyboard</string>
@@ -267,21 +260,19 @@
\n
\nДобавляйте группы (аналог папок) для организации записей и баз.</string>
<string name="education_search_title">Легко находите ваши записи</string>
<string name="education_biometric_title">Биометрическая разблокировка базы</string>
<string name="education_biometric_summary">Установите взаимосвязь между паролем и биометрическим ключом для быстрой разблокировки базы.</string>
<string name="education_search_summary">Ищите записи по названию, имени или другим полям для быстрого доступа к своим паролям.</string>
<string name="education_entry_edit_title">Редактируйте записи</string>
<string name="education_entry_edit_summary">Редактируйте записи с настраиваемыми полями. Возможны перекрёстные ссылки между полями разных записей.</string>
<string name="education_entry_edit_summary">Редактируйте записи с пользовательскими полями. Возможны перекрёстные ссылки между полями разных записей.</string>
<string name="education_generate_password_title">Создайте надёжный пароль</string>
<string name="education_generate_password_summary">Создайте надёжный пароль, связанный с записью, легко настраиваемый под критерии формы. И не забудьте главный пароль от базы.</string>
<string name="education_entry_new_field_title">Добавляйте настраиваемые поля</string>
<string name="education_entry_new_field_title">Добавляйте пользовательские поля</string>
<string name="education_entry_new_field_summary">Зарегистрируйте дополнительное поле, добавьте значение и при необходимости защитите его.</string>
<string name="education_unlock_title">Разблокируйте базу</string>
<string name="education_read_only_title">База только для чтения</string>
<string name="education_read_only_summary">Изменяйте режим открытия в сессии.
\n
\nВ \"режиме только для чтения\" можно предотвратить непреднамеренные изменения в базе.
\nВ \"режиме записи\" вы можете добавлять, удалять или изменять любые элементы.</string>
\nВ \"режиме записи\" можно добавлять, удалять или изменять любые элементы.</string>
<string name="education_field_copy_title">Копируйте поля</string>
<string name="education_field_copy_summary">Скопированные поля можно вставить в любом месте.
\n
@@ -307,7 +298,6 @@
<string name="contribute">Содействие</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Тема приложения</string>
<string name="style_choose_summary">Тема, используемая в приложении</string>
<string name="icon_pack_choose_title">Набор значков</string>
@@ -333,7 +323,7 @@
<string name="keyboard_key_sound_title">Звук при нажатии</string>
<string name="do_not_kill_app">Не убивайте приложение…</string>
<string name="lock_database_back_root_title">Блокировка нажатием \"Назад\"</string>
<string name="lock_database_back_root_summary">Блокировка базы при нажатии кнопки \"Назад\" на начальном экране</string>
<string name="lock_database_back_root_summary">Блокировка базы нажатием кнопки \"Назад\" на начальном экране</string>
<string name="clear_clipboard_notification_title">Очищать при закрытии</string>
<string name="clear_clipboard_notification_summary">Блокировать базу при закрытии уведомления после использования или истечения времени ожидания</string>
<string name="recycle_bin">Корзина</string>
@@ -364,14 +354,10 @@
<string name="content_description_update_from_list">Обновить</string>
<string name="content_description_keyboard_close_fields">Закрыть поля</string>
<string name="error_create_database_file">Невозможно создать базу с этим паролем и ключевым файлом.</string>
<string name="menu_advanced_unlock_settings">Дополнительная разблокировка</string>
<string name="biometric_prompt_store_credential_title">Сохранение биометрического ключа</string>
<string name="biometric_prompt_store_credential_message">Внимание: вам по-прежнему нужно помнить главный пароль при использовании использование функции биометрического распознавания.</string>
<string name="biometric_prompt_extract_credential_title">Открыть базу биометрическим ключом</string>
<string name="biometric_prompt_extract_credential_message">Извлекать главный пароль биометрическим ключом</string>
<string name="menu_advanced_unlock_settings">Расширенная разблокировка</string>
<string name="biometric">Биометрический ключ</string>
<string name="biometric_auto_open_prompt_title">Автозапрос биометрического ключа</string>
<string name="biometric_auto_open_prompt_summary">Автоматически запрашивать биометрический ключ, если он установлен для базы</string>
<string name="biometric_auto_open_prompt_title">Автозапрос ключа</string>
<string name="biometric_auto_open_prompt_summary">Автоматически запрашивать расширенную разблокировку, если она установлена для базы</string>
<string name="enable">Включить</string>
<string name="disable">Отключить</string>
<string name="selection_mode">Режим выбора</string>
@@ -401,7 +387,7 @@
<string name="contains_duplicate_uuid_procedure">Исправить проблему путём создания новых UUID для дубликатов и продолжить работу\?</string>
<string name="database_opened">База открыта</string>
<string name="clipboard_explanation_summary">Копирование полей ввода с помощью буфера обмена устройства</string>
<string name="advanced_unlock_explanation_summary">Использовать дополнительную разблокировку для более лёгкого открытия базы данных</string>
<string name="advanced_unlock_explanation_summary">Использовать расширенную разблокировку для более лёгкого открытия базы данных</string>
<string name="database_data_compression_title">Сжатие данных</string>
<string name="database_data_compression_summary">Сжатие данных уменьшает размер базы</string>
<string name="max_history_items_title">Максимум записей</string>
@@ -426,7 +412,6 @@
<string name="command_execution">Выполнение команды…</string>
<string name="warning_permanently_delete_nodes">Безвозвратно удалить выбранные элементы\?</string>
<string name="keystore_not_accessible">Хранилище ключей не инициализировано должным образом.</string>
<string name="credential_before_click_biometric_button">Введите пароль, затем нажмите кнопку биометрии.</string>
<string name="recycle_bin_group_title">Группа \"корзины\"</string>
<string name="enable_auto_save_database_title">Автосохранение базы</string>
<string name="enable_auto_save_database_summary">Сохранять базу после каждого важного действия (в \"режиме записи\")</string>
@@ -504,13 +489,11 @@
<string name="warning_sure_remove_data">Всё равно удалить эти данные\?</string>
<string name="warning_remove_unlinked_attachment">Удаление несвязанных данных может уменьшить размер вашей базы данных, но также может удалить данные, используемые для плагинов KeePass.</string>
<string name="content_description_credentials_information">Информация об учётных данных</string>
<string name="biometric_prompt_not_initialized">Невозможно инициализировать ввод биометрического ключа.</string>
<string name="configure_biometric">Отсутствует зарегистрированный биометрический ключ или учётные данные устройства.</string>
<string name="autofill_save_search_info_summary">Сохранять поисковую информацию при ручном выборе записи</string>
<string name="autofill_save_search_info_title">Сохранять данные поиска</string>
<string name="keyboard_save_search_info_summary">Сохранять общую информацию при ручном выборе записи</string>
<string name="keyboard_save_search_info_title">Сохранять общие данные</string>
<string name="crypto_object_not_initialized">Невозможно получить доступ к зашифрованному объекту.</string>
<string name="keyboard_previous_lock_title">Блокировка базы</string>
<string name="keyboard_previous_lock_summary">Автоматически переключаться на предыдущую клавиатуру после блокировки базы</string>
<string name="show_uuid_summary">Показывать UUID, связанный с записью</string>
@@ -527,4 +510,37 @@
<string name="save_mode">Режим записи</string>
<string name="search_mode">Режим поиска</string>
<string name="error_registration_read_only">Сохранение новых записей невозможно, т.к. база открыта только для чтения</string>
<string name="error_field_name_already_exists">Поле с таким именем уже существует.</string>
<string name="device_credential_unlock_enable_summary">Позволяет использовать учётные данные вашего устройства для открытия базы</string>
<string name="device_credential_unlock_enable_title">Разблокировка учётными данными устройства</string>
<string name="device_credential">Учётные данные устройства</string>
<string name="credential_before_click_advanced_unlock_button">Введите пароль и нажмите кнопку \"Расширенная разблокировка\".</string>
<string name="advanced_unlock_prompt_not_initialized">Невозможно инициализировать запрос расширенной разблокировки.</string>
<string name="advanced_unlock_not_recognized">Невозможно распознать расширенную разблокировку</string>
<string name="advanced_unlock_invalid_key">Невозможно прочитать ключ расширенной разблокировки. Удалите его и повторите процедуру распознавания разблокировки.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Извлекать учётные данные базы с использованием расширенной разблокировки</string>
<string name="advanced_unlock_prompt_extract_credential_title">Открыть базу с расширенным распознаванием разблокировки</string>
<string name="advanced_unlock_prompt_store_credential_message">Предупреждение: даже при использовании расширенной разблокировки вам всё равно необходимо помнить главный пароль.</string>
<string name="open_advanced_unlock_prompt_store_credential">Открыть запрос расширенной разблокировки для сохранения учётных данных</string>
<string name="open_advanced_unlock_prompt_unlock_database">Открыть запрос расширенной разблокировки для разблокировки базы</string>
<string name="advanced_unlock_delete_all_key_warning">Удалить все ключи шифрования, связанные с распознаванием расширенной разблокировки\?</string>
<string name="advanced_unlock_scanning_error">Ошибка расширенной разблокировки: %1$s</string>
<string name="advanced_unlock_prompt_store_credential_title">Распознавание расширенной разблокировки</string>
<string name="menu_keystore_remove_key">Удалить ключ расширенной разблокировки</string>
<string name="enter">Ввод</string>
<string name="back_to_previous_keyboard">Возврат к предыдущей клавиатуре</string>
<string name="custom_fields">Пользовательские поля</string>
<string name="backspace">Backspace</string>
<string name="select_entry">Выберите запись</string>
<string name="education_advanced_unlock_title">Расширенная разблокировка базы</string>
<string name="advanced_unlock_timeout">Срок действия расширенной разблокировки</string>
<string name="education_advanced_unlock_summary">Свяжите пароль с отсканированными биометрическими данными или учётными данными устройства, чтобы быстро разблокировать базу.</string>
<string name="temp_advanced_unlock_timeout_summary">Продолжительность использования содержимого расширенной разблокировки до его удаления</string>
<string name="temp_advanced_unlock_timeout_title">Время действия</string>
<string name="temp_advanced_unlock_enable_title">Временная расширенная разблокировка</string>
<string name="temp_advanced_unlock_enable_summary">Не сохранять зашифрованное содержимое для использования расширенной разблокировки</string>
<string name="advanced_unlock_tap_delete">Нажмите, чтобы удалить ключи расширенной разблокировки</string>
<string name="content">Содержимое</string>
<string name="kdf_Argon2id">Argon2ID</string>
<string name="kdf_Argon2d">Argon2D</string>
</resources>

View File

@@ -16,8 +16,7 @@
You should have received a copy of the GNU General Public License
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
-->
<resources>
--><resources>
<string name="feedback">Spätná väzba</string>
<string name="homepage">Domovská stránka</string>
<string name="about_description">Správca hesiel KeePass pre Android</string>
@@ -26,7 +25,7 @@
<string name="add_group">Pridať Skupinu</string>
<string name="encryption_algorithm">Šifrovací algoritmus</string>
<string name="app_timeout">Časový limit aplikácie</string>
<string name="app_timeout_summary">Čas pred uzamknutím databázy, ak je aplikácia neaktívna.</string>
<string name="app_timeout_summary">Čas pred uzamknutím databázy, ak je aplikácia neaktívna</string>
<string name="application">Aplikácia</string>
<string name="menu_app_settings">Nastavenia aplikácie</string>
<string name="brackets">Konzoly</string>

View File

@@ -281,7 +281,6 @@
<string name="contribute">Bidra</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Apptema</string>
<string name="style_choose_summary">Tema som används i appen</string>
<string name="icon_pack_choose_title">Ikonpaket</string>
@@ -349,16 +348,6 @@
<string name="list_groups_show_number_entries_summary">Visa antalet poster i en grupp</string>
<string name="error_create_database_file">Det går inte att skapa en databas med det här lösenordet och nyckelfil.</string>
<string name="menu_advanced_unlock_settings">Avancerad upplåsning</string>
<string name="menu_biometric_remove_key">Radera sparad biometrisk nyckel</string>
<string name="open_biometric_prompt_unlock_database">Öppna den biometriska prompten för att låsa upp databasen</string>
<string name="open_biometric_prompt_store_credential">Öppna den biometriska prompten för att lagra autentiseringsuppgifter</string>
<string name="biometric_prompt_store_credential_title">Spara biometrisk igenkänning</string>
<string name="biometric_prompt_store_credential_message">VARNING: Användandet av biometrisk igenkänning befriar dig inte från att veta ditt huvudlösenord.</string>
<string name="biometric_prompt_extract_credential_title">Öppna databas med biometrisk igenkänning</string>
<string name="biometric_prompt_extract_credential_message">Hämta databasinformation med biometrisk data</string>
<string name="biometric_invalid_key">Kan inte läsa den biometriska nyckeln. Radera den och gör om den biometriska igenkänningsproceduren.</string>
<string name="biometric_not_recognized">Känner inte igen biometrik</string>
<string name="biometric_scanning_error">Biometriskt fel: %1$s</string>
<string name="no_credentials_stored">Den här databasen har inga sparade autentiseringsuppgifter ännu.</string>
<string name="menu_appearance_settings">Utseende</string>
<string name="biometric">Biometrik</string>
@@ -369,7 +358,6 @@
<string name="biometric_auto_open_prompt_summary">Öppna biometrisk prompt automatiskt när en biometrisk nyckel är definierad för en databas</string>
<string name="biometric_delete_all_key_title">Radera krypteringsnycklar</string>
<string name="biometric_delete_all_key_summary">Radera alla krypteringsnycklar som hör till den biometriska igenkänningen</string>
<string name="biometric_delete_all_key_warning">Är du säker på att du vill radera alla nycklar som hör till den biometriska igenkänningen\?</string>
<string name="enable">Aktivera</string>
<string name="disable">Avaktivera</string>
<string name="entry_history">Historik</string>
@@ -418,15 +406,12 @@
<string name="compression_gzip">Gzip</string>
<string name="magic_keyboard_explanation_summary">Aktivera ett anpassat tangentbord som innehåller dina lösenord och alla identitetsfält</string>
<string name="device_keyboard_setting_title">Enhetens tangentbordsinställningar</string>
<string name="education_biometric_title">Lås upp databasen med biometrik</string>
<string name="education_biometric_summary">Länka dina lösenord till din skannande biometrik för att snabbt låsa upp din databas.</string>
<string name="error_save_database">Kunde inte spara databas.</string>
<string name="menu_save_database">Spara databas</string>
<string name="menu_empty_recycle_bin">Töm papperskorgen</string>
<string name="command_execution">Utför kommandot …</string>
<string name="warning_permanently_delete_nodes">Är du säker på att du vill radera de valda noderna permanent\?</string>
<string name="keystore_not_accessible">Keystore har inte initierats korrekt.</string>
<string name="credential_before_click_biometric_button">Skriv lösenordet innan du klickar på biometrik-knappen.</string>
<string name="recycle_bin_group_title">Papperskorgsgruppen</string>
<string name="enable_auto_save_database_title">Autospara databas</string>
<string name="enable_auto_save_database_summary">Spara databasen automatiskt efter varje viktig händelse (endast i läget \"Modifierbar\")</string>

View File

@@ -21,8 +21,8 @@
<string name="homepage">Ana sayfa</string>
<string name="about_description">KeePass parola yöneticisinin Android uygulaması</string>
<string name="accept">Kabul et</string>
<string name="add_entry">Girdi Ekle</string>
<string name="edit_entry">Girdi Düzenle</string>
<string name="add_entry">Girdi ekle</string>
<string name="edit_entry">Girdi düzenle</string>
<string name="add_group">Grup Ekle</string>
<string name="encryption">Şifreleme</string>
<string name="encryption_algorithm">Şifreleme algoritması</string>
@@ -32,7 +32,7 @@
<string name="application">Uygulama</string>
<string name="brackets">Parantez</string>
<string name="extended_ASCII">Genişletilmiş ASCII</string>
<string name="file_manager_install_description">Veritabanı dosyaları oluşturmak, açmak ve kaydetmek için Niyet eylemini ACTION_CREATE_DOCUMENT ve ACTION_OPEN_DOCUMENT kabul eden bir dosya yöneticisi gerekir.</string>
<string name="file_manager_install_description">Niyet eylemini kabul eden bir dosya yöneticisi. ACTION_CREATE_DOCUMENT ve ACTION_OPEN_DOCUMENT veri tabanı dosyaları oluşturmak, açmak ve kaydetmek için gereklidir.</string>
<string name="allow">İzin ver</string>
<string name="clipboard_cleared">Pano temizlendi</string>
<string name="clipboard_error_title">Pano hatası</string>
@@ -40,14 +40,14 @@
<string name="clipboard_error_clear">Pano temizlenemedi</string>
<string name="clipboard_timeout">Pano zaman aşımı</string>
<string name="clipboard_timeout_summary">Panodaki depolama süresi (aygıtınız tarafından destekleniyorsa)</string>
<string name="database">Veritabanı</string>
<string name="database">Veri tabanı</string>
<string name="entry_accessed">Erişildi</string>
<string name="entry_cancel">İptal</string>
<string name="entry_notes">Notlar</string>
<string name="entry_confpassword">Parolayı onayla</string>
<string name="entry_created">Oluşturuldu</string>
<string name="entry_modified">Değiştirilmiş</string>
<string name="entry_not_found">Giriş Verisi bulamadı.</string>
<string name="entry_not_found">Girdi verisi bulunamadı.</string>
<string name="entry_password">Parola</string>
<string name="save">Kaydet</string>
<string name="entry_title">Başlık</string>
@@ -58,9 +58,9 @@
<string name="error_invalid_path">Yolun doğru olduğundan emin olun.</string>
<string name="error_no_name">Bir isim girin.</string>
<string name="select_to_copy">%1$s dosyasını panoya kopyalamak için seçin</string>
<string name="retrieving_db_key">Veritabanı anahtarı alınıyor…</string>
<string name="decrypting_db">Veritabanı içeriği deşifre ediliyor…</string>
<string name="default_checkbox">Öntanımlı veritabanı olarak kullan</string>
<string name="retrieving_db_key">Veri tabanı anahtarı alınıyor…</string>
<string name="decrypting_db">Veri tabanı içeriğinin şifresi çözülüyor…</string>
<string name="default_checkbox">Öntanımlı veri tabanı olarak kullan</string>
<string name="digits">Rakamlar</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft &lt;strong&gt;ık kaynaklıdır&lt;/strong&gt; ve &lt;strong&gt;reklam içermez&lt;/strong&gt;.
\n&lt;strong&gt;GPLv3&lt;/strong&gt; lisansı altında sağlanmaktadır, herhangi bir garanti vermez.</string>
@@ -69,8 +69,8 @@
<string name="error_arc4">Arcfour akış şifresi desteklenmiyor.</string>
<string name="error_can_not_handle_uri">Bu URI, KeePassDX\'te işlenemedi.</string>
<string name="error_nokeyfile">Bir anahtar dosyası seçin.</string>
<string name="error_out_of_memory">Tüm veritabanınızı yüklemek için bellek yok.</string>
<string name="error_load_database">Veritabanınız yüklenemedi.</string>
<string name="error_out_of_memory">Tüm veri tabanınızı yükleyecek kadar bellek yok.</string>
<string name="error_load_database">Veri tabanınız yüklenemedi.</string>
<string name="error_load_database_KDF_memory">Anahtar yüklenemedi. KDF \"Bellek Kullanımı\" nı azaltmaya çalışın.</string>
<string name="error_pass_gen_type">En az bir parola oluşturma türü seçilmelidir.</string>
<string name="error_pass_match">Parolalar uyuşmuyor.</string>
@@ -93,14 +93,14 @@
<string name="password">Parola</string>
<string name="invalid_credentials">Kimlik bilgileri okunamadı.</string>
<string name="invalid_algorithm">Yanlış algoritma.</string>
<string name="invalid_db_sig">Veritabanı biçimi tanımlanamadı.</string>
<string name="invalid_db_sig">Veri tabanı biçimi tanınamadı.</string>
<string name="keyfile_is_empty">Anahtar dosya boş.</string>
<string name="length">Uzunluk</string>
<string name="list_entries_show_username_title">Kullanıcı adlarını göster</string>
<string name="list_entries_show_username_summary">Giriş listelerinde kullanıcı adlarını göster</string>
<string name="list_entries_show_username_summary">Girdi listelerinde kullanıcı adlarını göster</string>
<string name="list_size_title">Liste ögelerinin boyutu</string>
<string name="list_size_summary">Öğe listesindeki metin boyutu</string>
<string name="loading_database">Veritabanı yükleniyor…</string>
<string name="list_size_summary">Öge listesindeki metin boyutu</string>
<string name="loading_database">Veri tabanı yükleniyor…</string>
<string name="lowercase">Küçük harf</string>
<string name="hide_password_title">Parolaları gizle</string>
<string name="hide_password_summary">Parolaları öntanımlı olarak (***) ile maskele</string>
@@ -110,7 +110,7 @@
<string name="settings">Ayarlar</string>
<string name="menu_app_settings">Uygulama ayarları</string>
<string name="menu_form_filling_settings">Form doldurma</string>
<string name="menu_database_settings">Veritabanı ayarları</string>
<string name="menu_database_settings">Veri tabanı ayarları</string>
<string name="menu_donate">Bağış Yap</string>
<string name="menu_edit">Düzen</string>
<string name="menu_copy">Kopyala</string>
@@ -123,25 +123,24 @@
<string name="menu_open"></string>
<string name="menu_search">Ara</string>
<string name="menu_showpass">Parolayı göster</string>
<string name="menu_biometric_remove_key">Kaydedilen parmak izini silin</string>
<string name="menu_url">URL\'ye git</string>
<string name="menu_file_selection_read_only">Yazma korumalı</string>
<string name="menu_open_file_read_and_write">Değiştirilebilir</string>
<string name="never">Asla</string>
<string name="no_results">Arama sonucu bulunamadı</string>
<string name="no_url_handler">Bu URL\'u açmak için bir web tarayıcısı yükleyin.</string>
<string name="select_database_file">Mevcut veritabanını</string>
<string name="create_keepass_file">Yeni veritabanı oluştur</string>
<string name="omit_backup_search_title">Yedek girişleri arama</string>
<string name="select_database_file">Mevcut veri tabanını</string>
<string name="create_keepass_file">Yeni veri tabanı oluştur</string>
<string name="omit_backup_search_title">Yedek girdilerde arama</string>
<string name="omit_backup_search_summary">Arama sonuçlarından \"Yedekleme\" ve \"Geri dönüşüm kutusu\" gruplarını atlar</string>
<string name="progress_create">Yeni veritabanı oluştur…</string>
<string name="progress_create">Yeni veri tabanı oluşturuluyor</string>
<string name="progress_title">Çalışıyor…</string>
<string name="protection">Koruma</string>
<string name="read_only">Yazma korumalı</string>
<string name="read_only_warning">Veritabanınızdaki herhangi bir şeyi değiştirmek için KeePassDX\'in yazma iznine ihtiyacı var.</string>
<string name="read_only_warning">Dosya yöneticinize bağlı olarak KeePassDX\'in depolama alanınıza yazmasına izin verilmeyebilir.</string>
<string name="content_description_remove_from_list">Kaldır</string>
<string name="root">Kök</string>
<string name="encryption_explanation">Tüm veriler için veritabanı şifreleme algoritması kullanılmıştır.</string>
<string name="encryption_explanation">Tüm veriler için kullanılan veri tabanı şifreleme algoritması.</string>
<string name="kdf_explanation">Şifreleme algoritmasının anahtarını üretmek için ana anahtar, rastgele anahtar türetme işlevi kullanılarak dönüştürülür.</string>
<string name="rounds">Dönüşüm turları</string>
<string name="rounds_explanation">Ek şifreleme turları, kaba kuvvet saldırılarına karşı daha yüksek koruma sağlar, ancak yükleme ve kaydetmeyi gerçekten yavaşlatabilir.</string>
@@ -149,7 +148,7 @@
<string name="memory_usage_explanation">Anahtar türetme işlevi tarafından kullanılacak bellek miktarı (bayt olarak).</string>
<string name="parallelism">Paralellik</string>
<string name="parallelism_explanation">Anahtar türev fonksiyonu tarafından kullanılan paralellik derecesi (yani iplik sayısı).</string>
<string name="saving_database">Veritabanı kaydediliyor…</string>
<string name="saving_database">Veri tabanı kaydediliyor…</string>
<string name="space">Boşluk</string>
<string name="search_label">Ara</string>
<string name="sort_menu">Sırala</string>
@@ -167,7 +166,7 @@
<string name="search_results">Arama Sonuçları</string>
<string name="minus">Eksi</string>
<string name="underline">Altı çizili</string>
<string name="unsupported_db_version">Desteklenmeyen veritabanı sürümü.</string>
<string name="unsupported_db_version">Desteklenmeyen veri tabanı sürümü.</string>
<string name="uppercase">Büyük harf</string>
<string name="warning">Uyarı</string>
<string name="warning_password_encoding">Veri tabanı dosyasındaki metin kodlama biçiminin dışındaki parola karakterlerinden kaçın (tanınmayan karakterler aynı harfe dönüştürülür).</string>
@@ -175,13 +174,7 @@
<string name="warning_no_encryption_key">Şifreleme anahtarı olmadan devam edilsin mi\?</string>
<string name="version_label">Sürüm %1$s</string>
<string name="build_label">Yapı %1$s</string>
<string name="open_biometric_prompt_unlock_database">Veri tabanının kilidini açmak için biyometrik taramayı</string>
<string name="encrypted_value_stored">Şifreli parola saklandı</string>
<string name="biometric_invalid_key">Parmak izi anahtarı okunamadı. Şifreni geri yükle.</string>
<string name="biometric_not_recognized">Parmak izi tanınamadı</string>
<string name="biometric_scanning_error">Parmak izi sorunu: %1$s</string>
<string name="open_biometric_prompt_store_credential">Bu şifreyi saklamak için parmak izini kullanın</string>
<string name="no_credentials_stored">Bu veritabanının henüz bir parolası yok.</string>
<string name="database_history">Geçmiş</string>
<string name="menu_appearance_settings">Görünüm</string>
<string name="general">Genel</string>
@@ -196,17 +189,16 @@
<string name="list_password_generator_options_summary">İzin verilen parola üreticisi karakterlerini ayarla</string>
<string name="clipboard">Pano</string>
<string name="clipboard_notifications_title">Pano bildirimleri</string>
<string name="clipboard_notifications_summary">Bir giri görüntülerken alanları kopyalamak için pano bildirimlerini göster</string>
<string name="clipboard_notifications_summary">Bir girdiyi görüntülerken alanları kopyalamak için pano bildirimlerini göster</string>
<string name="clipboard_warning">Panodaki otomatik silme başarısız olursa, geçmişini elle silin.</string>
<string name="lock">Kilit</string>
<string name="lock_database_screen_off_title">Ekran kilidi</string>
<string name="lock_database_screen_off_summary">Ekran kapalıyken veritabanını kilitle</string>
<string name="advanced_unlock">Parmakizi</string>
<string name="biometric_unlock_enable_title">Parmak izi tarama</string>
<string name="biometric_unlock_enable_summary">Veritabanını açmak için biyometriklerinizi taramanızı sağlar</string>
<string name="lock_database_screen_off_summary">Ekran kapalıyken veri tabanını kilitle</string>
<string name="advanced_unlock">Gelişmiş kilit açma</string>
<string name="biometric_unlock_enable_title">Biyometrik kilit açma</string>
<string name="biometric_unlock_enable_summary">Veri tabanını açmak için biyometriklerinizi taramanızı sağlar</string>
<string name="biometric_delete_all_key_title">Şifreleme anahtarlarını silin</string>
<string name="biometric_delete_all_key_summary">Parmak izi tanıma ile ilgili tüm şifreleme anahtarlarını silin</string>
<string name="biometric_delete_all_key_warning">Biyometrik tanıma ile ilgili tüm şifreleme anahtarları silinsin mi\?</string>
<string name="biometric_delete_all_key_summary">Gelişmiş kilit açma tanıma ile ilgili tüm şifreleme anahtarlarını silin</string>
<string name="unavailable_feature_text">Bu özellik başlatılamadı.</string>
<string name="unavailable_feature_version">Aygıtta Android %1$s çalışıyor, ancak %2$s veya sonraki bir sürüm gerekli.</string>
<string name="unavailable_feature_hardware">İlgili donanım bulunamadı.</string>
@@ -215,16 +207,16 @@
<string name="assign_master_key">Ana anahtar atayın</string>
<string name="recycle_bin_title">Geri dönüşüm kutusu kullanımı</string>
<string name="recycle_bin_summary">Silmeden önce grupları ve girdileri \"Geri Dönüşüm Kutusu\"na taşır</string>
<string name="monospace_font_fields_enable_title">Yazı tipi alanı</string>
<string name="monospace_font_fields_enable_title">Alan yazı tipi</string>
<string name="monospace_font_fields_enable_summary">Daha iyi karakter görünürlüğü için alanlarda kullanılan yazı tipini değiştirin</string>
<string name="allow_copy_password_title">Pano güveni</string>
<string name="allow_copy_password_summary">Giriş parolası ve korunan alanları panoya kopyalamaya izin ver</string>
<string name="allow_copy_password_summary">Girdi parolası ve korunan alanları panoya kopyalamaya izin ver</string>
<string name="allow_copy_password_warning">Uyarı: Pano tüm uygulamalar tarafından paylaşılır. Hassas veriler kopyalanırsa, diğer yazılımlar bu verileri kurtarabilir.</string>
<string name="database_name_title">Veritabanı adı</string>
<string name="database_description_title">Veritabanııklaması</string>
<string name="database_version_title">Veritabanı sürümü</string>
<string name="database_name_title">Veri tabanı adı</string>
<string name="database_description_title">Veri tabanııklaması</string>
<string name="database_version_title">Veri tabanı sürümü</string>
<string name="text_appearance">Metin</string>
<string name="application_appearance">Uygulama</string>
<string name="application_appearance">Arayüz</string>
<string name="other">Diğer</string>
<string name="keyboard">Klavye</string>
<string name="magic_keyboard_title">Magikeyboard</string>
@@ -234,14 +226,14 @@
<string name="keyboard_setting_label">Magikeyboard ayarları</string>
<string name="keyboard_entry_category">Girdi</string>
<string name="keyboard_entry_timeout_title">Zaman aşımı</string>
<string name="keyboard_entry_timeout_summary">Klavye girini temizlemek için zaman aşımı</string>
<string name="keyboard_entry_timeout_summary">Klavye girdisini temizlemek için zaman aşımı</string>
<string name="keyboard_notification_entry_title">Bildirim bilgisi</string>
<string name="keyboard_notification_entry_summary">Bir giriş mevcut olduğunda bir bildirim göster</string>
<string name="keyboard_notification_entry_summary">Bir girdi kullanılabilir olduğunda bildirim göster</string>
<string name="keyboard_notification_entry_content_title_text">Girdi</string>
<string name="keyboard_notification_entry_content_title">Magikeyboard\'da %1$s mevcut</string>
<string name="keyboard_notification_entry_content_title">%1$s Magikeyboard\'da kullanılabilir</string>
<string name="keyboard_notification_entry_content_text">%1$s</string>
<string name="keyboard_notification_entry_clear_close_title">Kapanışta temizle</string>
<string name="keyboard_notification_entry_clear_close_summary">Bildirimi kapatırken veritabanını kapatın</string>
<string name="keyboard_notification_entry_clear_close_summary">Bildirimi kapatırken veri tabanını kapat</string>
<string name="keyboard_appearance_category">Görünüm</string>
<string name="keyboard_theme_title">Klavye teması</string>
<string name="keyboard_keys_category">Anahtarlar</string>
@@ -256,42 +248,40 @@
<string name="reset_education_screens_title">Eğitim ipuçlarını sıfırla</string>
<string name="reset_education_screens_summary">Tüm eğitim bilgilerini tekrar göster</string>
<string name="reset_education_screens_text">Eğitim ipuçlarını sıfırla</string>
<string name="education_create_database_title">Veritabanı dosyanızı oluşturun</string>
<string name="education_create_database_title">Veri tabanı dosyanızı oluşturun</string>
<string name="education_create_database_summary">İlk parola yönetim dosyanızı oluşturun.</string>
<string name="education_select_database_title">Mevcut bir veritabanını</string>
<string name="education_select_database_summary">Kullanmaya devam etmek için önceki veritabanı dosyanızı dosya tarayıcınızdan açın.</string>
<string name="education_select_database_title">Mevcut bir veri tabanınıın</string>
<string name="education_select_database_summary">Kullanmaya devam etmek için önceki veri tabanı dosyanızı dosya tarayıcınızdan açın.</string>
<string name="education_new_node_title">Veri tabanınıza öge ekleyin</string>
<string name="education_new_node_summary">Girdiler dijital kimliğinizi yönetmenize yardımcı olur.
\n
\nGruplar (~klasörler) veritabanınızdaki girdileri düzenler.</string>
<string name="education_search_title">Girişlerde ara</string>
<string name="education_search_summary">Parolanızı kurtarmak için başlık, kullanıcı adı veya diğer alanların içeriğini girin.</string>
<string name="education_biometric_title">Parmak iziyle veri tabanı kilidi açma</string>
<string name="education_biometric_summary">Veritabanınızı hızlıca açmak için parolanızı taranan parmak izinize bağlayın.</string>
<string name="education_entry_edit_title">Girdiyi düzenle</string>
<string name="education_entry_edit_summary">Girdinizi özel alanlarla düzenleyin. Havuz verileri farklı giriş alanları arasında referans alınabilir.</string>
<string name="education_generate_password_title">Güçlü bir parola oluşturun</string>
<string name="education_generate_password_summary">Girişinizle ilişkilendirmek için güçlü bir parola oluşturun, formun kriterlerine göre kolayca tanımlayın ve güvenli parolayı unutmayın.</string>
<string name="education_entry_new_field_title">Özel alanlar ekle</string>
<string name="education_entry_new_field_summary">Ek bir alan kaydedin, bir değer ekleyin ve isteğe bağlı olarak koruyun.</string>
<string name="education_unlock_title">Veritabanınızın kilidini açın</string>
<string name="education_unlock_summary">Veritabanınızın kilidini açmak için parola ve/veya anahtar dosya girin.
<string name="education_new_node_summary">Girdiler dijital kimliğinizi yönetmenize yardımcı olur.
\n
\nHer değişiklikten sonra veritabanı dosyanızı güvenli bir yerde yedekleyin.</string>
<string name="education_read_only_title">Veritabanınızı yazmaya karşı koru</string>
\nGruplar (~klasörler) veri tabanınızdaki girdileri düzenler.</string>
<string name="education_search_title">Girdilerde arayın</string>
<string name="education_search_summary">Parolanızı kurtarmak için başlık, kullanıcı adı veya diğer alanların içeriğini girin.</string>
<string name="education_entry_edit_title">Girdiyi düzenleyin</string>
<string name="education_entry_edit_summary">Girdinizi özel alanlarla düzenleyin. Havuz verileri farklı girdi alanları arasında referans alınabilir.</string>
<string name="education_generate_password_title">Güçlü bir parola oluşturun</string>
<string name="education_generate_password_summary">Girdinizle ilişkilendirmek için güçlü bir parola oluşturun, formun kriterlerine göre kolayca tanımlayın ve güvenli parolayı unutmayın.</string>
<string name="education_entry_new_field_title">Özel alanlar ekleyin</string>
<string name="education_entry_new_field_summary">Ek bir alan kaydedin, bir değer ekleyin ve isteğe bağlı olarak koruyun.</string>
<string name="education_unlock_title">Veri tabanınızın kilidini açın</string>
<string name="education_unlock_summary">Veri tabanınızın kilidini açmak için parola ve/veya anahtar dosyası girin.
\n
\nHer değişiklikten sonra veri tabanı dosyanızı güvenli bir yerde yedekleyin.</string>
<string name="education_read_only_title">Veri tabanınızı yazmaya karşı koruyun</string>
<string name="education_read_only_summary">Oturum için açılış modunu değiştir.
\n
\n\"Yazma korumalı\", veritabanında istenmeyen değişiklikleri önler.
\n\"Değiştirilebilir\", tüm öğeleri eklemenizi, silmenizi veya değiştirmenizi sağlar.</string>
<string name="education_field_copy_title">Bir alan kopyala</string>
\n\"Yazma korumalı\", veri tabanında istenmeyen değişiklikleri önler.
\n\"Değiştirilebilir\", tüm ögeleri istediğiniz gibi eklemenize, silmenize veya değiştirmenize izin verir.</string>
<string name="education_field_copy_title">Bir alanı kopyalayın</string>
<string name="education_field_copy_summary">Kopyalanan alanlar herhangi bir yere yapıştırılabilir.
\n
\nTercih ettiğiniz form doldurma yöntemini kullanın.</string>
<string name="education_lock_title">Veritabanını kilitle</string>
<string name="education_lock_summary">Veritabanınızı hızlıca kilitleyin, uygulamayı bir süre sonra kilitlemek için ve ekran kapandığında ayarlayabilirsiniz.</string>
<string name="education_sort_title">Öge sıralama</string>
<string name="education_lock_title">Veri tabanını kilitleyin</string>
<string name="education_lock_summary">Veri tabanınızı hızlıca kilitleyin, belirli bir süre sonra ve ekran kapandığında kilitlenmesi için uygulamayı ayarlayabilirsiniz.</string>
<string name="education_sort_title">Ögeleri sıralayın</string>
<string name="education_sort_summary">Girdilerin ve grupların nasıl sıralandığını seçin.</string>
<string name="education_donation_title">Katıl</string>
<string name="education_donation_title">Katılın</string>
<string name="education_donation_summary">Daha fazla özellik ekleyerek istikrarı, güvenliği artırmaya yardımcı olun.</string>
<string name="html_text_ad_free">Birçok parola yönetimi uygulamasının aksine, bu uygulama &lt;strong&gt;reklam içermez&lt;/strong&gt;, &lt;strong&gt; copyleft lisanslı özgür yazılımdır&lt;/strong&gt; ve hangi sürümü kullanırsanız kullanın, sunucularında kişisel veri toplamaz.</string>
<string name="html_text_buy_pro">Profesyonel sürümü satın alarak, bu &lt;strong&gt;görsel stile&lt;/strong&gt; erişebilecek ve özellikle &lt;strong&gt;topluluk projelerinin gerçekleştirilmesine&lt;/strong&gt; yardımcı olacaksınız.</string>
@@ -301,7 +291,7 @@
<string name="html_text_dev_feature_buy_pro">&lt;strong&gt;Pro&lt;/strong&gt; sürümü satın alarak,</string>
<string name="html_text_dev_feature_contibute">&lt;strong&gt;Katkıda&lt;/strong&gt; bulunarak,</string>
<string name="html_text_dev_feature_encourage">geliştiricilerin &lt;strong&gt;yeni özellikler&lt;/strong&gt; oluşturmasını ve söz konusu hatalara göre &lt;strong&gt;hataları düzeltmesini&lt;/strong&gt; teşvik ediyorsunuz.</string>
<string name="html_text_dev_feature_thanks">Katkınız için çok teşekkür ederim.</string>
<string name="html_text_dev_feature_thanks">Katkıda bulunduğunuz için çok teşekkür ederim.</string>
<string name="html_text_dev_feature_work_hard">Bu özelliği çabucak yayınlamak için çok çalışıyoruz.</string>
<string name="html_text_dev_feature_upgrade">Yeni sürümleri yükleyerek uygulamanızı güncel tutmayı unutmayın.</string>
<string name="download">İndir</string>
@@ -310,37 +300,36 @@
<string name="encryption_twofish">Twofish</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">Uygulama teması</string>
<string name="style_choose_summary">Uygulamada kullanılan tema</string>
<string name="icon_pack_choose_title">Simge paketi</string>
<string name="icon_pack_choose_summary">Uygulamada kullanılan simge paketi</string>
<string name="selection_mode">Seçim modu</string>
<string name="do_not_kill_app">Uygulamayı öldürmeyin…</string>
<string name="lock_database_back_root_summary">Kullanıcı kök ekranda geri düğmesine tıkladığında veritabanını kilitle</string>
<string name="lock_database_back_root_summary">Kullanıcı kök ekranda geri düğmesine tıkladığında veri tabanını kilitle</string>
<string name="clear_clipboard_notification_title">Kapanışta temizle</string>
<string name="clear_clipboard_notification_summary">Panonun süresi dolduğunda veya kullanmaya başladıktan sonra bildirim kapatıldığında veri tabanını kilitle</string>
<string name="content_description_open_file">Dosya aç</string>
<string name="content_description_add_node">Düğüm ekle</string>
<string name="content_description_add_entry">Girdi Ekle</string>
<string name="content_description_add_entry">Girdi ekle</string>
<string name="content_description_add_group">Grup ekle</string>
<string name="content_description_file_information">Dosya bilgileri</string>
<string name="content_description_password_checkbox">Parola onay kutusu</string>
<string name="content_description_keyfile_checkbox">Anahtar dosyası onay kutusu</string>
<string name="content_description_entry_icon">Giriş simgesi</string>
<string name="content_description_entry_icon">Girdi simgesi</string>
<string name="entry_password_generator">Parola üreteci</string>
<string name="content_description_password_length">Parola uzunluğu</string>
<string name="entry_add_field">Alan ekle</string>
<string name="content_description_remove_field">Alanı kaldır</string>
<string name="entry_UUID">UUID</string>
<string name="error_move_entry_here">Buraya bir girişi taşıyamazsınız.</string>
<string name="error_copy_entry_here">Buraya bir girişi kopyalayamazsınız.</string>
<string name="list_groups_show_number_entries_title">Giriş sayısını göster</string>
<string name="list_groups_show_number_entries_summary">Bir gruptaki girişlerin sayısını göster</string>
<string name="error_move_entry_here">Bir girdiyi buraya taşıyamazsınız.</string>
<string name="error_copy_entry_here">Bir girdiyi buraya kopyalayamazsınız.</string>
<string name="list_groups_show_number_entries_title">Girdi sayısını göster</string>
<string name="list_groups_show_number_entries_summary">Bir gruptaki girdilerin sayısını göster</string>
<string name="lock_database_back_root_title">Kilitlemek için \'Geri\'ye basın</string>
<string name="recycle_bin">Geri dönüşüm kutusu</string>
<string name="keyboard_selection_entry_title">Giriş seçimi</string>
<string name="keyboard_selection_entry_summary">Bir giri görüntülerken Magikeyboard\'da giriş alanlarını göster</string>
<string name="keyboard_selection_entry_title">Girdi seçimi</string>
<string name="keyboard_selection_entry_summary">Bir girdiyi görüntülerken Magikeyboard\'da giriş alanlarını göster</string>
<string name="delete_entered_password_title">Parolayı sil</string>
<string name="delete_entered_password_summary">Veri tabanına bağlantı denemesinden sonra girilen parolayı siler</string>
<string name="content_description_node_children">Alt düğüm</string>
@@ -348,15 +337,11 @@
<string name="content_description_background">Arka plan</string>
<string name="content_description_update_from_list">Güncelleme</string>
<string name="content_description_keyboard_close_fields">Alanları kapat</string>
<string name="error_create_database_file">Bu parola ve anahtar dosyası ile veritabanı oluşturulamıyor.</string>
<string name="error_create_database_file">Bu parola ve anahtar dosyası ile veri tabanı oluşturulamıyor.</string>
<string name="menu_advanced_unlock_settings">Gelişmiş kilit açma</string>
<string name="biometric_prompt_store_credential_title">Biyometrik tanımayı kaydedin</string>
<string name="biometric_prompt_store_credential_message">Uyarı: Biyometrik tanıma kullanıyorsanız hala ana parolanızı hatırlamanız gerekir.</string>
<string name="biometric_prompt_extract_credential_title">Biyometrik tanıma ile veritabanı</string>
<string name="biometric_prompt_extract_credential_message">Biyometrik verilerle veritabanı kimlik bilgilerini çıkar</string>
<string name="biometric">Biyometrik</string>
<string name="biometric_auto_open_prompt_title">Biyometrik taramayı otomatik aç</string>
<string name="biometric_auto_open_prompt_summary">Vari tabanı, onu kullanacak biçimde ayarlandıysa biyometriği otomatik olarak sor</string>
<string name="biometric_auto_open_prompt_title">Otomatik açma istemi</string>
<string name="biometric_auto_open_prompt_summary">Vari tabanı onu kullanacak biçimde ayarlandıysa otomatik olarak gelişmiş kilit açma isteğinde bulun</string>
<string name="enable">Etkinleştir</string>
<string name="disable">Devre dışı</string>
<string name="master_key">Ana anahtar</string>
@@ -378,20 +363,20 @@
<string name="error_otp_period">Periyot %1$d ile %2$d saniye arasında olmalıdır.</string>
<string name="error_otp_digits">Belirteç %1$d ile %2$d basamak içermelidir.</string>
<string name="invalid_db_same_uuid">%1$s aynı UUID değerine sahip %2$s zaten var.</string>
<string name="creating_database">Veritabanı oluşturuluyor…</string>
<string name="creating_database">Veri tabanı oluşturuluyor…</string>
<string name="menu_security_settings">Güvenlik ayarları</string>
<string name="menu_master_key_settings">Ana anahtar ayarları</string>
<string name="contains_duplicate_uuid">Veritabanı tekrarlanan UUID\'ler içermektedir.</string>
<string name="contains_duplicate_uuid">Veri tabanı tekrarlanan UUID\'ler içeriyor.</string>
<string name="contains_duplicate_uuid_procedure">Tekrarlananlar için yeni UUID\'ler oluşturarak sorunu çöz ve devam et\?</string>
<string name="database_opened">Veritabanııldı</string>
<string name="clipboard_explanation_summary">Aygıtınızın panosunu kullanarak giriş alanlarını kopyala</string>
<string name="advanced_unlock_explanation_summary">Veritabanını daha kolay açmak için gelişmiş kilit açma özelliğini kullan</string>
<string name="database_opened">Veri tabanııldı</string>
<string name="clipboard_explanation_summary">Aygıtınızın panosunu kullanarak girdi alanlarını kopyalayın</string>
<string name="advanced_unlock_explanation_summary">Veri tabanını daha kolay açmak için gelişmiş kilit açma özelliğini kullan</string>
<string name="database_data_compression_title">Veri sıkıştırma</string>
<string name="database_data_compression_summary">Veri sıkıştırma veri tabanı boyutunu azaltır</string>
<string name="max_history_items_title">Azami sayı</string>
<string name="max_history_items_summary">Girdi başına geçmiş ögelerinin sayısını sınırla</string>
<string name="max_history_size_title">Azami boyut</string>
<string name="max_history_size_summary">Giriş başına geçmiş boyutunu (bayt olarak) sınırlama</string>
<string name="max_history_size_summary">Girdi başına geçmiş boyutunu (bayt olarak) sınırla</string>
<string name="settings_database_recommend_changing_master_key_title">Yenilemeyi öner</string>
<string name="settings_database_recommend_changing_master_key_summary">Ana anahtarın değiştirilmesini öner (gün)</string>
<string name="settings_database_force_changing_master_key_title">Yenilemeyi zorla</string>
@@ -399,20 +384,19 @@
<string name="settings_database_force_changing_master_key_next_time_title">Bir dahaki sefere yenilemeye zorla</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Bir dahaki sefere ana anahtarı değiştirmeyi gerektirir (bir kez)</string>
<string name="database_default_username_title">Öntanımlı kullanıcı adı</string>
<string name="database_custom_color_title">Özel veritabanı rengi</string>
<string name="database_custom_color_title">Özel veri tabanı rengi</string>
<string name="compression">Sıkıştırma</string>
<string name="compression_none">Yok</string>
<string name="compression_gzip">Gzip</string>
<string name="device_keyboard_setting_title">Aygıt klavye ayarları</string>
<string name="error_save_database">Veritabanı kaydedilemedi.</string>
<string name="error_save_database">Veri tabanı kaydedilemedi.</string>
<string name="menu_save_database">Veri tabanını kaydet</string>
<string name="menu_empty_recycle_bin">Geri dönüşüm kutusunu boşalt</string>
<string name="command_execution">Komut çalıştırılıyor…</string>
<string name="warning_permanently_delete_nodes">Seçilen düğümler kalıcı olarak silinsin mi\?</string>
<string name="keystore_not_accessible">Anahtar deposu düzgün bir şekilde başlatılmadı.</string>
<string name="credential_before_click_biometric_button">Parolayı yazın, sonra \"Biyometrik\" düğmesine tıklayın.</string>
<string name="recycle_bin_group_title">Geri dönüşüm kutusu grubu</string>
<string name="enable_auto_save_database_title">Veritabanını otomatik kaydet</string>
<string name="enable_auto_save_database_title">Veri tabanını otomatik kaydet</string>
<string name="enable_auto_save_database_summary">Her önemli işlemden sonra veri tabanını kaydet (\"Değiştirilebilir\" modda)</string>
<string name="entry_attachments">Ekler</string>
<string name="menu_restore_entry_history">Geçmişi geri yükle</string>
@@ -427,9 +411,9 @@
<string name="hide_expired_entries_title">Süresi dolmuş girdileri gizle</string>
<string name="hide_expired_entries_summary">Süresi dolmuş girdiler gösterilmez</string>
<string name="warning_database_read_only">Veri tabanı değişikliklerini kaydetmek için dosya yazma erişimi ver</string>
<string name="hide_broken_locations_summary">Son veritabanları listesindeki bozuk bağlantıları gizle</string>
<string name="hide_broken_locations_title">Bozuk veritabanı bağlantılarını gizle</string>
<string name="show_recent_files_summary">Son veritabanlarının konumlarını göster</string>
<string name="hide_broken_locations_summary">Son veri tabanları listesindeki bozuk bağlantıları gizle</string>
<string name="hide_broken_locations_title">Bozuk veri tabanı bağlantılarını gizle</string>
<string name="show_recent_files_summary">Son veri tabanlarının konumlarını göster</string>
<string name="show_recent_files_title">Son dosyaları göster</string>
<string name="remember_keyfile_locations_summary">Anahtar dosyalarının nerede saklandığını takip eder</string>
<string name="remember_keyfile_locations_title">Anahtar dosyası konumlarını hatırla</string>
@@ -440,8 +424,8 @@
<string name="contribution">Katkı</string>
<string name="contact">İletişim</string>
<string name="education_setup_OTP_summary">İki ögeli kimlik doğrulaması (2FA) için istenen bir belirteç oluşturmak için bir kerelik parola yönetimini (HOTP / TOTP) ayarlayın.</string>
<string name="education_setup_OTP_title">OTP ayarla</string>
<string name="error_create_database">Veritabanı dosyası oluşturulamıyor.</string>
<string name="education_setup_OTP_title">Bir kerelik parola (OTP) ayarlayın</string>
<string name="error_create_database">Veri tabanı dosyası oluşturulamıyor.</string>
<string name="html_about_contribution">&lt;strong&gt;Özgürlüğümüzü korumak&lt;/strong&gt;, &lt;strong&gt;hataları düzeltmek&lt;/strong&gt;, &lt;strong&gt;özellikler eklemek&lt;/strong&gt; ve &lt;strong&gt;her zaman etkin olmak&lt;/strong&gt; için, &lt;strong&gt;desteğinize&lt;/strong&gt; güveniyoruz.</string>
<string name="entry_add_attachment">Ek ekle</string>
<string name="discard">Vazgeç</string>
@@ -467,14 +451,14 @@
<string name="subdomain_search_title">Alt etki alanı arama</string>
<string name="error_string_type">Bu metin istenen ögeyle eşleşmiyor.</string>
<string name="content_description_add_item">Öge ekle</string>
<string name="keyboard_previous_fill_in_summary">Otomatik tuş eylemini gerçekleştirdikten sonra otomatik olarak önceki klavyeye dön</string>
<string name="keyboard_previous_fill_in_summary">\"Otomatik tuş eylemini\" gerçekleştirdikten sonra otomatik olarak önceki klavyeye dön</string>
<string name="keyboard_previous_fill_in_title">Otomatik tuş eylemi</string>
<string name="keyboard_previous_database_credentials_summary">Veri tabanı kimlik bilgileri ekranında otomatik olarak önceki klavyeye dön</string>
<string name="keyboard_previous_database_credentials_title">Veri tabanı kimlik bilgileri ekranı</string>
<string name="keyboard_change">Klavye değiştir</string>
<string name="upload_attachment">%1$s yükle</string>
<string name="education_add_attachment_summary">Önemli harici verileri kaydetmek için girdinize bir ek yükleyin.</string>
<string name="education_add_attachment_title">Ek ekle</string>
<string name="education_add_attachment_title">Ek ekleyin</string>
<string name="warning_sure_add_file">Dosya yine de eklensin mi\?</string>
<string name="warning_replace_file">Bu dosyanın yüklenmesi mevcut dosyanın yerini alacaktır.</string>
<string name="warning_file_too_big">Bir KeePass veri tabanının sadece küçük yardımcı dosyaları (PGP anahtar dosyaları gibi) içermesi beklenmektedir.
@@ -502,8 +486,6 @@
<string name="keyboard_save_search_info_summary">Elle girdi seçimi yaparken paylaşılan bilgileri kaydetmeyi dene</string>
<string name="keyboard_save_search_info_title">Paylaşılan bilgileri kaydet</string>
<string name="notification">Bildirim</string>
<string name="crypto_object_not_initialized">Şifreleme nesnesi alınamıyor.</string>
<string name="biometric_prompt_not_initialized">Biyometrik tarama başlatılamıyor.</string>
<string name="biometric_security_update_required">Biyometrik güvenlik güncellemesi gerekli.</string>
<string name="configure_biometric">Biyometrik bilgiler veya aygıt kimlik doğrulama bilgileri kaydedilmedi.</string>
<string name="warning_empty_recycle_bin">Geri dönüşüm kutusundaki tüm düğümler kalıcı olarak silinsin mi\?</string>
@@ -511,4 +493,38 @@
<string name="save_mode">Kaydetme modu</string>
<string name="search_mode">Arama modu</string>
<string name="error_registration_read_only">Salt okunur bir veri tabanında yeni bir öge kaydetmeye izin verilmiyor</string>
<string name="error_field_name_already_exists">Alan adı zaten var.</string>
<string name="advanced_unlock_delete_all_key_warning">Gelişmiş kilit açma tanıma ile ilgili tüm şifreleme anahtarları silinsin mi\?</string>
<string name="device_credential_unlock_enable_summary">Veri tabanını açmak için aygıt kimlik bilgilerinizi kullanmanıza olanak tanır</string>
<string name="device_credential_unlock_enable_title">Aygıt kimlik bilgisiyle kilit açma</string>
<string name="device_credential">Aygıt kimlik bilgileri</string>
<string name="credential_before_click_advanced_unlock_button">Parolayı yazın ve ardından \"Gelişmiş kilit açma\" düğmesine tıklayın.</string>
<string name="advanced_unlock_prompt_not_initialized">Gelişmiş kilit açma istemi başlatılamıyor.</string>
<string name="no_credentials_stored">Bu veri tabanında henüz saklanmış kimlik bilgisi yok.</string>
<string name="advanced_unlock_scanning_error">Gelişmiş kilit açma hatası: %1$s</string>
<string name="advanced_unlock_not_recognized">Gelişmiş kilit açma parmak izi tanınamadı</string>
<string name="advanced_unlock_invalid_key">Gelişmiş kilit açma anahtarı okunamıyor. Lütfen silin ve kilit açma tanıma işlemini tekrarlayın.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Veri tabanı kimlik bilgilerini gelişmiş kilit açma özelliğiyle çıkarın</string>
<string name="advanced_unlock_prompt_extract_credential_title">Veri tabanını gelişmiş kilit açma tanıma ile aç</string>
<string name="advanced_unlock_prompt_store_credential_message">Uyarı: Gelişmiş kilit açma tanıma kullanırsanız, yine de ana parolanızı hatırlamanız gerekmektedir.</string>
<string name="advanced_unlock_prompt_store_credential_title">Gelişmiş kilit açma tanıma</string>
<string name="open_advanced_unlock_prompt_store_credential">Kimlik bilgilerini saklamak için gelişmiş kilit açma istemini aç</string>
<string name="open_advanced_unlock_prompt_unlock_database">Veri tabanının kilidini açmak için gelişmiş kilit açma istemini aç</string>
<string name="menu_keystore_remove_key">Gelişmiş kilit açma anahtarını sil</string>
<string name="enter">Enter</string>
<string name="backspace">Backspace</string>
<string name="select_entry">Girdi seç</string>
<string name="back_to_previous_keyboard">Önceki klavyeye geri dön</string>
<string name="custom_fields">Özel alanlar</string>
<string name="education_advanced_unlock_summary">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.</string>
<string name="education_advanced_unlock_title">Gelişmiş veri tabanı kilidi açma</string>
<string name="advanced_unlock_timeout">Gelişmiş kilit açma zaman aşımı</string>
<string name="temp_advanced_unlock_timeout_summary">İçeriğini silmeden önce gelişmiş kilit açma kullanımının süresi</string>
<string name="temp_advanced_unlock_timeout_title">Gelişmiş kilit açma süre sonu</string>
<string name="temp_advanced_unlock_enable_summary">Gelişmiş kilit açmayı kullanmak için herhangi bir şifrelenmiş içeriği saklama</string>
<string name="temp_advanced_unlock_enable_title">Geçici gelişmiş kilit açma</string>
<string name="advanced_unlock_tap_delete">Gelişmiş kilit açma anahtarlarını silmek için dokunun</string>
<string name="content">İçerik</string>
<string name="kdf_Argon2id">Argon2id</string>
<string name="kdf_Argon2d">Argon2d</string>
</resources>

View File

@@ -25,11 +25,11 @@
<string name="add_group">Додати групу</string>
<string name="encryption_algorithm">Алгоритм шифрування</string>
<string name="app_timeout">Час очікування застосунку</string>
<string name="app_timeout_summary">Час очікування до блокування бази даних</string>
<string name="app_timeout_summary">Час бездіяльности до блокування бази даних</string>
<string name="application">Застосунок</string>
<string name="menu_app_settings">Параметри застосунку</string>
<string name="brackets">Дужки</string>
<string name="file_manager_install_description">Для створення, відкриття та збереження файлів баз даних потрібен файловий менеджер, який приймає дії Intent ACTION_CREATE_DOCUMENT та ACTION_OPEN_DOCUMENT.</string>
<string name="file_manager_install_description">Для створення, відкриття та збереження файлів баз даних потрібен файловий менеджер, який приймує дії Intent ACTION_CREATE_DOCUMENT та ACTION_OPEN_DOCUMENT.</string>
<string name="clipboard_cleared">Буфер обміну очищено</string>
<string name="clipboard_timeout">Час до очищення буфера обміну</string>
<string name="clipboard_timeout_summary">Тривалість зберігання в буфері обміну (якщо підтримується пристроєм)</string>
@@ -66,7 +66,7 @@
<string name="error_pass_gen_type">Необхідно вибрати принаймні один тип створення пароля.</string>
<string name="error_pass_match">Паролі не збігаються.</string>
<string name="error_rounds_too_large">Забагато циклів. Встановлено 2147483648.</string>
<string name="error_wrong_length">Введіть додатне ціле число до поля \"Довжина\".</string>
<string name="error_wrong_length">Введіть додатне ціле додатне число до поля \"Довжина\".</string>
<string name="file_browser">Файловий менеджер</string>
<string name="generate_password">Згенерувати пароль</string>
<string name="hint_conf_pass">Підтвердити пароль</string>
@@ -154,7 +154,7 @@
<string name="compression_gzip">Gzip</string>
<string name="compression">Стиснення</string>
<string name="other">Інше</string>
<string name="application_appearance">Застосунок</string>
<string name="application_appearance">Інтерфейс</string>
<string name="text_appearance">Текст</string>
<string name="database_version_title">Версія бази даних</string>
<string name="database_custom_color_title">Власний колір бази даних</string>
@@ -203,11 +203,10 @@
<string name="menu_paste">Вставити</string>
<string name="menu_move">Перемістити</string>
<string name="menu_copy">Скопіювати</string>
<string name="menu_biometric_remove_key">Видалити збережений біометричний ключ</string>
<string name="content_description_keyfile_checkbox">Поле файла ключа</string>
<string name="menu_master_key_settings">Налаштування головного ключа</string>
<string name="menu_security_settings">Параметри безпеки</string>
<string name="menu_advanced_unlock_settings">Розширені параметри розблокування</string>
<string name="menu_advanced_unlock_settings">Розширене розблокування</string>
<string name="menu_form_filling_settings">Заповнення форм</string>
<string name="copy_field">Скопійовано %1$s</string>
<string name="creating_database">Створення бази даних…</string>
@@ -228,7 +227,7 @@
<string name="error_save_database">Не вдалося зберегти базу даних.</string>
<string name="error_create_database_file">Неможливо створити базу даних із цим паролем та файлом ключа.</string>
<string name="error_create_database">Не вдалося створити файл бази даних.</string>
<string name="error_copy_group_here">Ви не можете скопіювати групу сюди.</string>
<string name="error_copy_group_here">Ви не можете копіювати групу сюди.</string>
<string name="error_copy_entry_here">Ви не можете копіювати записи сюди.</string>
<string name="error_move_entry_here">Ви не можете перемістити запис сюди.</string>
<string name="error_move_folder_in_itself">Ви не можете перемістити групу в себе саму.</string>
@@ -266,16 +265,12 @@
<string name="content_description_add_node">Додати вузол</string>
<string name="content_description_node_children">Дочірні вузли</string>
<string name="unavailable_feature_hardware">Не вдалося знайти відповідне обладнання.</string>
<string name="biometric_not_recognized">Не вдалося розпізнати біометричний ключ</string>
<string name="biometric_invalid_key">Не вдалося розпізнати біометричний ключ. Видаліть його та повторіть процедуру створення ключа.</string>
<string name="biometric_prompt_store_credential_message">Попередження: Якщо ви користуєтеся біометричним ключем, вам однаково необхідно пам\'ятати головний пароль.</string>
<string name="hide_expired_entries_summary">Застарілі записи не показано</string>
<string name="hide_expired_entries_title">Приховувати застарілі записи</string>
<string name="icon_pack_choose_summary">Набір піктограм застосунку</string>
<string name="icon_pack_choose_title">Набір піктограм</string>
<string name="style_choose_summary">Тема застосунку</string>
<string name="style_choose_title">Тема застосунку</string>
<string name="kdf_Argon2">Argon2</string>
<string name="kdf_AES">AES</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="download_complete">Готово!</string>
@@ -285,7 +280,7 @@
<string name="download_attachment">Завантаження %1$s</string>
<string name="contribute">Допомогти</string>
<string name="download">Завантажити</string>
<string name="html_text_dev_feature_upgrade">Не забудьте постійно оновлювати застосунок, встановлюючи нові версії.</string>
<string name="html_text_dev_feature_upgrade">Не забувайте оновлювати застосунок, встановлюючи нові версії.</string>
<string name="html_text_dev_feature_work_hard">Ми докладаємо всіх зусиль для якнайшвидшого випуску цієї функції.</string>
<string name="html_text_dev_feature_thanks">Щиро вдячні за вашу допомогу.</string>
<string name="html_text_dev_feature_encourage">ви заохочуєте розробників створювати &lt;strong&gt;нові функції&lt;/strong&gt; та &lt;strong&gt;виправляти помилки&lt;/strong&gt; відповідно до ваших зауважень.</string>
@@ -309,7 +304,7 @@
<string name="education_read_only_summary">Змініть режим сеансу.
\n
\n\"Захист від запису\" запобігає внесенню випадкових змін до бази даних.
\n\"Дозволити зміни\" дозволяє вам додавати, видаляти чи змінювати будь-які елементи.</string>
\n\"Дозволити зміни\" дозволяє додавати, видаляти чи змінювати будь-які елементи.</string>
<string name="enable_auto_save_database_summary">Зберігати базу даних після кожної важливої дії (у режимі \"Дозволити зміни\")</string>
<string name="education_read_only_title">Захистіть вашу базу даних від запису</string>
<string name="education_unlock_title">Розблокуйте вашу базу даних</string>
@@ -321,8 +316,6 @@
<string name="education_generate_password_title">Створіть надійний пароль</string>
<string name="education_entry_edit_summary">Додавайте власні поля до записів. Дані полів різних записів можна повʼязувати між собою.</string>
<string name="education_entry_edit_title">Змінюйте записи</string>
<string name="education_biometric_summary">Зв\'яжіть пароль та скановані біометричні дані для швидкого розблокування бази даних.</string>
<string name="education_biometric_title">Біометричне розблокування бази даних</string>
<string name="education_search_summary">Введіть назву, ім\'я користувача або вміст інших полів для пошуку паролів.</string>
<string name="education_search_title">Шукайте поміж записів</string>
<string name="education_new_node_summary">Створюйте записи для керування вашими обліковими записами.
@@ -359,7 +352,7 @@
<string name="keyboard_notification_entry_content_title">%1$s доступне на Magikeyboard</string>
<string name="keyboard_notification_entry_content_title_text">Запис</string>
<string name="keyboard_entry_timeout_summary">Час очікування до очищення клавіатури від запису</string>
<string name="keyboard_entry_timeout_title">Час очікування</string>
<string name="keyboard_entry_timeout_title">Обмеження часу</string>
<string name="keyboard_notification_entry_clear_close_summary">Закрити базу даних під час закриття сповіщення</string>
<string name="keyboard_notification_entry_clear_close_title">Очищати під час закриття</string>
<string name="keyboard_notification_entry_summary">Показувати сповіщення, коли запис доступний</string>
@@ -398,18 +391,17 @@
<string name="file_name">Назва файлу</string>
<string name="unavailable_feature_version">Пристрій працює під керуванням Android %1$s, але необхідний %2$s чи пізніші.</string>
<string name="unavailable_feature_text">Не вдалось запустити цю функцію.</string>
<string name="biometric_delete_all_key_warning">Видалити всі ключі шифрування, пов\'язані з розпізнаванням біометричного ключа\?</string>
<string name="biometric_delete_all_key_summary">Видалити всі ключі шифрування, пов\'язані з розпізнаванням біометричного ключа</string>
<string name="biometric_delete_all_key_summary">Видалити всі ключі шифрування, пов\'язані з розпізнаванням розширеного розблокування</string>
<string name="biometric_delete_all_key_title">Видалити ключі шифрування</string>
<string name="biometric_auto_open_prompt_summary">Автоматично запитувати біометричний ключ, якщо базу даних налаштовано для роботи з ним</string>
<string name="biometric_auto_open_prompt_title">Автоматично запитувати біометричний ключ</string>
<string name="biometric_auto_open_prompt_summary">Автоматично запитувати розширене розблокування, якщо базу даних налаштовано для роботи з ним</string>
<string name="biometric_auto_open_prompt_title">Автозапит ключа</string>
<string name="biometric_unlock_enable_summary">Дозволяє сканувати біометричні дані, щоб відкрити базу даних</string>
<string name="biometric_unlock_enable_title">Розблокування біометричним ключем</string>
<string name="advanced_unlock_explanation_summary">Увімкніть розширені параметри розблокування та спростіть відкриття бази даних</string>
<string name="advanced_unlock">Розширені параметри розблокування</string>
<string name="lock_database_show_button_summary">Показувати кнопку блокування в інтерфейсі користувача</string>
<string name="lock_database_show_button_title">Показувати кнопку блокування</string>
<string name="lock_database_back_root_summary">Блокувати базу даних, коли користувач натискає кнопку назад на головному екрані</string>
<string name="lock_database_back_root_summary">Блокувати базу даних, коли користувач натисне кнопку назад на головному екрані</string>
<string name="lock_database_back_root_title">Натисніть \'Назад\', щоб заблокувати</string>
<string name="lock_database_screen_off_summary">Блокувати базу даних, якщо екран вимкнено</string>
<string name="lock_database_screen_off_title">Блокування екрана</string>
@@ -434,15 +426,8 @@
<string name="biometric">Біометричний ключ</string>
<string name="menu_appearance_settings">Зовнішній вигляд</string>
<string name="database_history">Історія</string>
<string name="credential_before_click_biometric_button">Введіть пароль, а потім натисніть \"біометричну\" кнопку.</string>
<string name="no_credentials_stored">У цій базі даних ще немає збережених облікових даних.</string>
<string name="biometric_scanning_error">Помилка біометричного ключа: %1$s</string>
<string name="encrypted_value_stored">Зашифрований пароль збережено</string>
<string name="biometric_prompt_extract_credential_message">Витяг облікових даних бази даних за допомогою біометричного ключа</string>
<string name="biometric_prompt_extract_credential_title">Відкрити базу даних біометричним ключем</string>
<string name="biometric_prompt_store_credential_title">Зберегти біометричний ключ</string>
<string name="open_biometric_prompt_unlock_database">Розблокувати базу даних біометричним ключем</string>
<string name="open_biometric_prompt_store_credential">Скористатися біометричним ключем щоб зберегти дані</string>
<string name="keystore_not_accessible">Сховище ключів не ініціалізовано належним чином.</string>
<string name="build_label">Збірка %1$s</string>
<string name="warning_permanently_delete_nodes">Видалити вибрані вузли остаточно\?</string>
@@ -484,8 +469,8 @@
<string name="filter">Фільтр</string>
<string name="content_description_add_item">Додати елемент</string>
<string name="keyboard_change">Перемикання клавіатури</string>
<string name="keyboard_previous_fill_in_summary">Автоматично перемикатися до попередньої клавіатури після виконання дії Самочинного введення</string>
<string name="keyboard_previous_fill_in_title">Самочинне введення</string>
<string name="keyboard_previous_fill_in_summary">Автоматично перемикатися до попередньої клавіатури після виконання дії «Автоматична дія кнопки»</string>
<string name="keyboard_previous_fill_in_title">Автоматична дія кнопки</string>
<string name="keyboard_previous_database_credentials_summary">Автоматичне перемикання до попередньої клавіатури, на екрані входу до бази даних</string>
<string name="keyboard_previous_database_credentials_title">Екран входу до бази даних</string>
<string name="warning_file_too_big">База даних KeePass має містити лише невеликі файли утиліт (наприклад, файли ключів PGP).
@@ -518,8 +503,6 @@
<string name="keyboard_save_search_info_summary">Намагатися зберегти спільні відомості під час вибору запису власноруч</string>
<string name="keyboard_save_search_info_title">Збереження спільних відомостей</string>
<string name="notification">Сповіщення</string>
<string name="crypto_object_not_initialized">Не вдалося отримати крипто-об\'єкт.</string>
<string name="biometric_prompt_not_initialized">Не вдалося ініціалізувати біометричний запит.</string>
<string name="biometric_security_update_required">Необхідно оновити біометричний захист.</string>
<string name="configure_biometric">Біометричних чи облікових даних пристрою не зареєстровано.</string>
<string name="warning_empty_recycle_bin">Видалити всі вузли з кошика остаточно\?</string>
@@ -527,4 +510,37 @@
<string name="save_mode">Режим збереження</string>
<string name="search_mode">Режим пошуку</string>
<string name="error_registration_read_only">Збереження нового елемента заборонено в базі даних лише для читання</string>
<string name="error_field_name_already_exists">Назва поля вже існує.</string>
<string name="advanced_unlock_delete_all_key_warning">Видалити всі ключі шифрування, пов\'язані з розширеним розпізнаванням розблокування\?</string>
<string name="device_credential_unlock_enable_summary">Дає змогу використовувати облікові дані пристрою для відкриття бази даних</string>
<string name="device_credential_unlock_enable_title">Розблокування облікових даних пристрою</string>
<string name="device_credential">Облікові дані пристрою</string>
<string name="credential_before_click_advanced_unlock_button">Введіть пароль, а потім натисніть кнопку «Розширене розблокування».</string>
<string name="advanced_unlock_prompt_not_initialized">Не вдалося ініціалізувати запит на розширене розблокування.</string>
<string name="advanced_unlock_scanning_error">Помилка розширеного розблокування: %1$s</string>
<string name="advanced_unlock_not_recognized">Не вдалося розпізнати розширене розблокування</string>
<string name="advanced_unlock_invalid_key">Не вдалося розпізнати ключ розширеного розблокування. Видаліть його та повторіть процедуру створення ключа.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Витягування облікових даних бази даних за допомогою даних розширеного розблокування</string>
<string name="advanced_unlock_prompt_extract_credential_title">Відкрити базу даних розширеним розпізнаванням розблокування</string>
<string name="advanced_unlock_prompt_store_credential_message">Попередження: Навіть якщо ви користуєтеся розширеним розблокуванням, вам однаково необхідно пам\'ятати головний пароль.</string>
<string name="advanced_unlock_prompt_store_credential_title">Розпізнавання розширеного розблокування</string>
<string name="open_advanced_unlock_prompt_store_credential">Відкривати запит розширеного розблокування, щоб зберегти облікові дані</string>
<string name="open_advanced_unlock_prompt_unlock_database">Відкривати запит розширеного розблокування, щоб розблокувати базу даних</string>
<string name="menu_keystore_remove_key">Видалити ключ розширеного розблокування</string>
<string name="enter">Enter</string>
<string name="backspace">Backspace</string>
<string name="select_entry">Вибрати запис</string>
<string name="back_to_previous_keyboard">Повернутися до попередньої клавіатури</string>
<string name="custom_fields">Власні поля</string>
<string name="advanced_unlock_timeout">Час дії розширеного розблокування</string>
<string name="temp_advanced_unlock_timeout_title">Час дії розширеного розблокування</string>
<string name="education_advanced_unlock_summary">Пов’яжіть свій пароль зі сканованими біометричними даними або даними пристрою, щоб швидко розблокувати базу даних.</string>
<string name="education_advanced_unlock_title">Розширене розблокування бази даних</string>
<string name="temp_advanced_unlock_timeout_summary">Тривалість використання розширеного розблокування перед видаленням його вмісту</string>
<string name="temp_advanced_unlock_enable_summary">Не зберігайте зашифрований вміст для використання розширеного розблокування</string>
<string name="temp_advanced_unlock_enable_title">Тимчасове розширене розблокування</string>
<string name="advanced_unlock_tap_delete">Торкнутися, щоб видалити клавіші розширеного розблокування</string>
<string name="content">Вміст</string>
<string name="kdf_Argon2id">Argon2id</string>
<string name="kdf_Argon2d">Argon2d</string>
</resources>

View File

@@ -19,4 +19,5 @@
-->
<resources>
<bool name="biometric_unlock_enable_default" translatable="true">true</bool>
<bool name="device_credential_unlock_enable_default" translatable="true">true</bool>
</resources>

View File

@@ -22,8 +22,7 @@
<integer name="fingerprint_viewport_center">80</integer>
<integer name="fingerprint_stroke_width">5</integer>
<integer name="tick_cross_stroke_width">7</integer>
<dimen name="fingerprint_width">80dp</dimen>
<dimen name="fingerprint_height">80dp</dimen>
<dimen name="advanced_unlock_size">80dp</dimen>
<!-- a pretty rough & ready re-draw of the fingerprint glyph from
https://github.com/googlesamples/android-FingerprintDialog -->

View File

@@ -29,7 +29,7 @@
<string name="application">应用</string>
<string name="menu_app_settings">程序设置</string>
<string name="brackets">括号</string>
<string name="file_manager_install_description">新建与保存数据库需要支持打开和新建文件的文件管理器</string>
<string name="file_manager_install_description">需要一款接受意图操作 ACTION_CREATE_DOCUMENT 和 ACTION_OPEN_DOCUMENT 的文件管理器来创建、打开和保存数据库文件</string>
<string name="clipboard_cleared">剪贴板已清空</string>
<string name="clipboard_timeout">剪贴板清空延时</string>
<string name="clipboard_timeout_summary">剪贴板保存时间 (若您的设备支持该功能)</string>
@@ -145,7 +145,6 @@
<string name="clipboard_error_clear">无法清空剪切板</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="style_choose_title">主题</string>
<string name="icon_pack_choose_title">图标包</string>
<string name="icon_pack_choose_summary">程序中使用的图标包</string>
@@ -167,7 +166,6 @@
<string name="menu_paste">粘贴</string>
<string name="menu_cancel">取消</string>
<string name="menu_showpass">显示密码</string>
<string name="menu_biometric_remove_key">删除已保存的与生物识别相关的密钥</string>
<string name="menu_file_selection_read_only">只读</string>
<string name="menu_open_file_read_and_write">可修改</string>
<string name="omit_backup_search_title">搜索时忽略备份条目</string>
@@ -192,7 +190,6 @@
<string name="search_results">搜索结果</string>
<string name="warning">警告</string>
<string name="version_label">版本 %1$s</string>
<string name="open_biometric_prompt_store_credential">使用生物识别保存此密码</string>
<string name="database_history">历史</string>
<string name="menu_appearance_settings">外观</string>
<string name="general">常规</string>
@@ -210,7 +207,7 @@
<string name="database_description_title">数据库描述</string>
<string name="database_version_title">数据库版本</string>
<string name="text_appearance">文字样式</string>
<string name="application_appearance">程序</string>
<string name="application_appearance">界面</string>
<string name="other">其他</string>
<string name="keyboard">键盘</string>
<string name="magic_keyboard_title">魔法键盘</string>
@@ -230,11 +227,7 @@
<string name="warning_empty_password">确定不使用密码保护?</string>
<string name="warning_no_encryption_key">确认不使用加密密钥吗?</string>
<string name="build_label">Build %1$s</string>
<string name="open_biometric_prompt_unlock_database">打开生物识别提示以解锁数据库</string>
<string name="encrypted_value_stored">加密密码已保存</string>
<string name="biometric_invalid_key">不能读取生物识别密钥,请删除所有生物识别密钥,并重新录入。</string>
<string name="biometric_not_recognized">无法识别生物识别信息</string>
<string name="biometric_scanning_error">生物识别错误:%1$s</string>
<string name="no_credentials_stored">当前数据库无密码。</string>
<string name="set_autofill_service_title">设为默认的填充服务</string>
<string name="autofill_explanation_summary">启用自动填充功能,以快速填写其他应用中的表单</string>
@@ -249,15 +242,14 @@
<string name="biometric_unlock_enable_title">生物识别解锁</string>
<string name="biometric_unlock_enable_summary">通过生物识别解锁数据库</string>
<string name="biometric_delete_all_key_title">删除加密密钥</string>
<string name="biometric_delete_all_key_summary">删除所有与生物识别相关的密钥</string>
<string name="biometric_delete_all_key_warning">要删除所有与生物识别相关的密钥吗?</string>
<string name="biometric_delete_all_key_summary">删除所有与高级解锁识别相关的加密密钥</string>
<string name="unavailable_feature_text">无法启动此功能。</string>
<string name="unavailable_feature_version">此设备运行 Android %1$s ,但应用需要 %2$s 或更高版本。</string>
<string name="unavailable_feature_hardware">找不到所需的硬件。</string>
<string name="assign_master_key">分配主密钥</string>
<string name="recycle_bin_title">回收站使用情况</string>
<string name="recycle_bin_summary">删除群组和条目前先移至回收站</string>
<string name="monospace_font_fields_enable_title">字段字</string>
<string name="monospace_font_fields_enable_title">字段字</string>
<string name="monospace_font_fields_enable_summary">更改字段字体,可以使字符更清楚</string>
<string name="allow_copy_password_summary">允许复制整段密码和受保护的字段至剪切板</string>
<string name="allow_copy_password_warning">警告:复制密码时密码在剪贴板中,而所有程序都可访问剪切板。因此复制密码时,设备上的其他程序也能看到密码。</string>
@@ -298,8 +290,6 @@
\n还可以使用群组来管理数据库中的条目。</string>
<string name="education_search_title">搜索条目</string>
<string name="education_search_summary">输入标题、用户名或其他字段的内容来搜索密码。</string>
<string name="education_biometric_title">正在解锁生物识别数据库</string>
<string name="education_biometric_summary">将主密钥与生物识别信息关联,以快速解锁数据库。</string>
<string name="education_entry_edit_title">编辑此条目</string>
<string name="education_entry_edit_summary">使用自定义字段编辑条。自定义字段可以在不同的条目间引用。</string>
<string name="education_generate_password_title">新建一个强密码</string>
@@ -308,10 +298,10 @@
<string name="education_entry_new_field_summary">添加一个新的字段并添加为其添加一个值,此时可以选择是否保护该字段及其值。</string>
<string name="education_unlock_title">解锁数据库</string>
<string name="education_read_only_title">数据库启用写入保护(只读)</string>
<string name="education_read_only_summary">更改会话的打开模式。
\n
\n“写入保护只读”可防止对数据库的意外更改。
\n“可编辑(可写)”允许您添加、删除或者修改元素。</string>
<string name="education_read_only_summary">更改会话的打开模式。
\n
\n“写入保护只读”可防止对数据库的意外更改。
\n“可编辑”允许您随心所欲地添加、删除或者修改所有元素。</string>
<string name="education_field_copy_title">复制字段</string>
<string name="education_field_copy_summary">已复制的字段可以粘贴到任何地方。
\n
@@ -332,11 +322,11 @@
<string name="html_text_dev_feature_encourage">您的留言,是对开发人员添加&lt;strong&gt;新功能&lt;/strong&gt;&lt;strong&gt;修复 bugs&lt;/strong&gt; 的鼓励。</string>
<string name="html_text_dev_feature_thanks">非常感谢您的捐助和贡献。</string>
<string name="html_text_dev_feature_work_hard">我们正在努力的研发并尽快发布新特性。</string>
<string name="html_text_dev_feature_upgrade">别忘了更新程序</string>
<string name="html_text_dev_feature_upgrade">别忘了通过安装新版本来保持你的应用程序是最新的</string>
<string name="selection_mode">选择模式</string>
<string name="do_not_kill_app">不要终止程序…</string>
<string name="lock_database_back_root_title">按返回键以锁定</string>
<string name="lock_database_back_root_summary">点击屏幕底部的返回时锁定数据库</string>
<string name="lock_database_back_root_summary">当用户单击根屏幕上的返回按钮时锁定数据库</string>
<string name="clear_clipboard_notification_title">关闭程序时清空剪贴板</string>
<string name="clear_clipboard_notification_summary">剪贴板持续时间过期或通知在您开始使用后关闭时,锁定数据库</string>
<string name="recycle_bin">回收站</string>
@@ -368,13 +358,9 @@
<string name="content_description_keyboard_close_fields">关闭字段</string>
<string name="error_create_database_file">无法使用此密码和密钥文件新建数据库。</string>
<string name="menu_advanced_unlock_settings">高级解锁</string>
<string name="biometric_prompt_store_credential_title">保存生物识别信息</string>
<string name="biometric_prompt_store_credential_message">警告:即使您已经使用生物识别数据存储了凭据,你仍需牢记主密码</string>
<string name="biometric_prompt_extract_credential_title">使用生物识别功能打开数据库</string>
<string name="biometric_prompt_extract_credential_message">使用生物识别数据提取数据库凭据</string>
<string name="biometric">生物识别</string>
<string name="biometric_auto_open_prompt_title">自动打开生物识别提示</string>
<string name="biometric_auto_open_prompt_summary">生物识别密钥已配置时自动打开提示</string>
<string name="biometric_auto_open_prompt_title">自动打开提示</string>
<string name="biometric_auto_open_prompt_summary">自动请求高级解锁,如果数据库设置为使用它</string>
<string name="enable">启用</string>
<string name="disable">禁用</string>
<string name="master_key">主密钥</string>
@@ -390,7 +376,7 @@
<string name="entry_otp">一次性密码</string>
<string name="error_invalid_OTP">错误的一次性密码密钥。</string>
<string name="error_disallow_no_credentials">至少需要设置一个凭据。</string>
<string name="error_copy_group_here">不能将群组复制到这里。</string>
<string name="error_copy_group_here">这里不能复制组</string>
<string name="error_otp_secret_key">密钥必须是BASE32格式。</string>
<string name="error_otp_counter">计数器必须在%1$d和%2$d之间。</string>
<string name="error_otp_period">时长必须在%1$d秒到%2$d秒之间。</string>
@@ -427,7 +413,6 @@
<string name="menu_empty_recycle_bin">清空回收站</string>
<string name="command_execution">正在执行命令……</string>
<string name="warning_permanently_delete_nodes">是否永久删除选中的条目?</string>
<string name="credential_before_click_biometric_button">请先输入密码,再点击“生物识别”按钮。</string>
<string name="recycle_bin_group_title">回收站(组)</string>
<string name="enable_auto_save_database_title">自动保存数据库</string>
<string name="enable_auto_save_database_summary">在每次执行重要操作后保存数据库(仅在编辑模式下有效)</string>
@@ -484,7 +469,7 @@
<string name="error_string_type">文本和请求的条目不匹配.</string>
<string name="content_description_add_item">添加条目</string>
<string name="keyboard_previous_database_credentials_title">数据库凭据屏幕</string>
<string name="keyboard_previous_fill_in_summary">执行自动键动作后,自动切换回前一个键盘</string>
<string name="keyboard_previous_fill_in_summary">执行自动键动作后,自动切换回前一个键盘</string>
<string name="keyboard_previous_fill_in_title">自动键动作</string>
<string name="keyboard_previous_database_credentials_summary">如果显示数据库凭据屏幕,则自动返回到上一个键盘</string>
<string name="keyboard_change">切换键盘</string>
@@ -518,8 +503,6 @@
<string name="keyboard_save_search_info_summary">手动选择条目时,尝试保存共享信息</string>
<string name="keyboard_save_search_info_title">保存分享的信息</string>
<string name="notification">通知</string>
<string name="crypto_object_not_initialized">无法检索加密对象。</string>
<string name="biometric_prompt_not_initialized">无法初始化生物识别提示。</string>
<string name="biometric_security_update_required">需要生物识别安全更新。</string>
<string name="configure_biometric">未登记生物识别或设备凭证。</string>
<string name="warning_empty_recycle_bin">从回收站永久删除所有节点?</string>
@@ -527,4 +510,37 @@
<string name="save_mode">保存模式</string>
<string name="search_mode">搜索模式</string>
<string name="error_registration_read_only">只读数据库不允许保存新条目</string>
<string name="error_field_name_already_exists">字段名已经存在。</string>
<string name="advanced_unlock_delete_all_key_warning">删除所有与高级解锁识别相关的加密密钥吗?</string>
<string name="device_credential_unlock_enable_summary">允许您使用设备凭据来打开数据库</string>
<string name="device_credential_unlock_enable_title">设备凭据解锁</string>
<string name="device_credential">设备凭据</string>
<string name="credential_before_click_advanced_unlock_button">输入密码,然后点击“高级解锁”按钮。</string>
<string name="advanced_unlock_prompt_not_initialized">无法初始化高级解锁提示。</string>
<string name="advanced_unlock_scanning_error">高级解锁出错:%1$s</string>
<string name="advanced_unlock_not_recognized">无法识别高级解锁印记</string>
<string name="advanced_unlock_invalid_key">无法读取高级解锁密钥。请删除它,并重复解锁识别步骤。</string>
<string name="advanced_unlock_prompt_extract_credential_message">用高级解锁数据提取数据库凭据</string>
<string name="advanced_unlock_prompt_extract_credential_title">用高级解锁识别打开数据库</string>
<string name="advanced_unlock_prompt_store_credential_message">警告:即使您使用高级解锁识别,您仍然需要记住您的主密码。</string>
<string name="advanced_unlock_prompt_store_credential_title">高级解锁识别</string>
<string name="open_advanced_unlock_prompt_store_credential">打开高级解锁提示来存储凭证</string>
<string name="open_advanced_unlock_prompt_unlock_database">打开高级解锁提示来解锁数据库</string>
<string name="menu_keystore_remove_key">删除高级解锁密钥</string>
<string name="enter">输入</string>
<string name="backspace">退格键</string>
<string name="select_entry">选择条目</string>
<string name="back_to_previous_keyboard">回到先前的键盘</string>
<string name="custom_fields">自定义字段</string>
<string name="education_advanced_unlock_summary">将您的密码连接到您扫描的生物特征或设备凭据,以快速解锁您的数据库。</string>
<string name="education_advanced_unlock_title">高级数据库解锁</string>
<string name="advanced_unlock_timeout">高级解锁超时</string>
<string name="temp_advanced_unlock_timeout_summary">删除内容之前高级解锁使用的持续时间</string>
<string name="temp_advanced_unlock_timeout_title">高级解锁过期</string>
<string name="temp_advanced_unlock_enable_summary">不要存储任何加密内容来使用高级解锁</string>
<string name="temp_advanced_unlock_enable_title">临时性高级解锁</string>
<string name="advanced_unlock_tap_delete">点击删除高级解锁密钥</string>
<string name="content">内容</string>
<string name="kdf_Argon2id">Argon2id</string>
<string name="kdf_Argon2d">Argon2d</string>
</resources>

View File

@@ -150,7 +150,6 @@
<string name="menu_paste">貼上</string>
<string name="menu_cancel">取消</string>
<string name="menu_showpass">顯示密碼</string>
<string name="menu_biometric_remove_key">移除現存生物識別金鑰</string>
<string name="menu_file_selection_read_only">唯讀</string>
<string name="menu_open_file_read_and_write">讀寫</string>
<string name="omit_backup_search_title">不要搜尋備份的項目</string>
@@ -282,9 +281,6 @@
<string name="validate">驗證</string>
<string name="content_description_add_item">添加項目</string>
<string name="encrypted_value_stored">已儲存加密密碼</string>
<string name="biometric_prompt_extract_credential_title">使用生物識別開啟資料庫</string>
<string name="biometric_prompt_store_credential_message">警告:即使已啟用生物識別,你仍須牢記你的主密碼。</string>
<string name="biometric_prompt_store_credential_title">儲存生物識別資訊</string>
<string name="build_label">版本號 %1$s</string>
<string name="version_label">版本 %1$s</string>
<string name="warning_permanently_delete_nodes">確定永久刪除已選項目?</string>
@@ -295,10 +291,8 @@
<string name="device_keyboard_setting_title">裝置鍵盤設定</string>
<string name="magic_keyboard_explanation_summary">啟用用作輸入密碼和其他欄位的自訂鍵盤</string>
<string name="keyboard">鍵盤</string>
<string name="biometric_delete_all_key_warning">確定刪除生物識別加密金鑰嗎?</string>
<string name="biometric_delete_all_key_summary">刪除全部生物識別加密金鑰</string>
<string name="biometric_delete_all_key_title">刪除加密金鑰</string>
<string name="biometric_invalid_key">無法讀取生物識別金鑰。請刪除原有金鑰,再重新啟用生物識別。</string>
<string name="keystore_not_accessible">金鑰庫未能初始化。</string>
<string name="education_select_database_title">開啟現有資料庫</string>
<string name="education_create_database_title">建立你的資料庫檔案</string>
@@ -346,8 +340,6 @@
<string name="general">一般</string>
<string name="menu_appearance_settings">外觀</string>
<string name="database_history">歷史</string>
<string name="biometric_scanning_error">生物特徵驗證: %1$s</string>
<string name="biometric_not_recognized">無法通過生物特徵認證</string>
<string name="warning_sure_remove_data">仍要移除此資料?</string>
<string name="warning_sure_add_file">仍要新增檔案?</string>
<string name="warning_replace_file">上傳此檔案會取代現有的檔案。</string>

View File

@@ -94,8 +94,14 @@
<string name="advanced_unlock_explanation_key" translatable="false">advanced_unlock_explanation_key</string>
<string name="biometric_unlock_enable_key" translatable="false">biometric_unlock_enable_key</string>
<bool name="biometric_unlock_enable_default" translatable="false">false</bool>
<string name="device_credential_unlock_enable_key" translatable="false">device_credential_unlock_enable_key</string>
<bool name="device_credential_unlock_enable_default" translatable="false">false</bool>
<string name="biometric_auto_open_prompt_key" translatable="false">biometric_auto_open_prompt_key</string>
<bool name="biometric_auto_open_prompt_default" translatable="false">false</bool>
<string name="temp_advanced_unlock_enable_key" translatable="false">temp_advanced_unlock_enable_key</string>
<bool name="temp_advanced_unlock_enable_default" translatable="false">false</bool>
<string name="temp_advanced_unlock_timeout_key" translatable="false">temp_advanced_unlock_timeout_key</string>
<string name="temp_advanced_unlock_timeout_default" translatable="false">36000000</string>
<string name="biometric_delete_all_key_key" translatable="false">biometric_delete_all_key_key</string>
<!-- Form Filling Settings -->
@@ -285,6 +291,20 @@
<item translatable="false">1800000</item>
<item translatable="false">-1</item>
</string-array>
<string-array name="large_timeout_values">
<item translatable="false">300000</item>
<item translatable="false">900000</item>
<item translatable="false">1800000</item>
<item translatable="false">3600000</item>
<item translatable="false">7200000</item>
<item translatable="false">18000000</item>
<item translatable="false">36000000</item>
<item translatable="false">86400000</item>
<item translatable="false">172800000</item>
<item translatable="false">604800000</item>
<item translatable="false">2592000000</item>
<item translatable="false">-1</item>
</string-array>
<!-- Text Size -->
<dimen name="list_icon_size_default" translatable="false">32dp</dimen>

View File

@@ -16,8 +16,7 @@
You should have received a copy of the GNU General Public License
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
-->
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
--><resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="contact">Contact</string>
<string name="contribution">Contribution</string>
<string name="feedback">Feedback</string>
@@ -37,7 +36,7 @@
<string name="application">App</string>
<string name="brackets">Brackets</string>
<string name="extended_ASCII">Extended ASCII</string>
<string name="file_manager_install_description">A file manager that accepts the Intent action ACTION_CREATE_DOCUMENT and ACTION_OPEN_DOCUMENT is needed to create, open and save database files.</string>
<string name="file_manager_install_description">A file manager that accepts the ACTION_CREATE_DOCUMENT and ACTION_OPEN_DOCUMENT intent action is required to create, open, and save database files.</string>
<string name="allow">Allow</string>
<string name="clipboard_cleared">Clipboard cleared</string>
<string name="clipboard_error_title">Clipboard error</string>
@@ -119,12 +118,12 @@
<string name="error_rounds_too_large">\"Transformation rounds\" too high. Setting to 2147483648.</string>
<string name="error_string_key">Each string must have a field name.</string>
<string name="error_label_exists">This label already exists.</string>
<string name="error_wrong_length">Enter a positive whole number in the \"Length\" field.</string>
<string name="error_wrong_length">Enter a positive integer number in the \"Length\" field.</string>
<string name="error_autofill_enable_service">Could not enable autofill service.</string>
<string name="error_move_folder_in_itself">You can not move a group into itself.</string>
<string name="error_move_entry_here">You can not move an entry here.</string>
<string name="error_copy_entry_here">You can not copy an entry here.</string>
<string name="error_copy_group_here">You can not copy a group here.</string>
<string name="error_copy_group_here">You cannot copy a group here.</string>
<string name="error_create_database">Unable to create database file.</string>
<string name="error_create_database_file">Unable to create database with this password and keyfile.</string>
<string name="error_save_database">Could not save database.</string>
@@ -135,6 +134,8 @@
<string name="error_string_type">This text does not match the requested item.</string>
<string name="error_registration_read_only">Saving a new item is not allowed in a read-only database</string>
<string name="error_field_name_already_exists">The field name already exists.</string>
<string name="error_database_uri_null">Database URI cannot be retrieved.</string>
<string name="error_rebuild_list">Unable to properly rebuild the list.</string>
<string name="field_name">Field name</string>
<string name="field_value">Field value</string>
<string name="file_not_found_content">Could not find file. Try reopening it from your file browser.</string>
@@ -187,7 +188,7 @@
<string name="menu_open">Open</string>
<string name="menu_search">Search</string>
<string name="menu_showpass">Show password</string>
<string name="menu_biometric_remove_key">Delete saved biometric key</string>
<string name="menu_keystore_remove_key">Delete advanced unlock key</string>
<string name="menu_url">Go to URL</string>
<string name="menu_file_selection_read_only">Write-protected</string>
<string name="menu_open_file_read_and_write">Modifiable</string>
@@ -276,23 +277,23 @@
<string name="configure_biometric">No biometric or device credential is enrolled.</string>
<string name="biometric_security_update_required">Biometric security update required.</string>
<string name="keystore_not_accessible">The keystore is not properly initialized.</string>
<string name="open_biometric_prompt_unlock_database">Open the biometric prompt to unlock the database</string>
<string name="open_biometric_prompt_store_credential">Open the biometric prompt to store credentials</string>
<string name="biometric_prompt_store_credential_title">Save biometric recognition</string>
<string name="biometric_prompt_store_credential_message">Warning: You still need to remember your master password if you use biometric recognition.</string>
<string name="biometric_prompt_extract_credential_title">Open database with biometric recognition</string>
<string name="biometric_prompt_extract_credential_message">Extract database credential with biometric data</string>
<string name="open_advanced_unlock_prompt_unlock_database">Open the advanced unlock prompt to unlock the database</string>
<string name="open_advanced_unlock_prompt_store_credential">Open the advanced unlock prompt to store credentials</string>
<string name="advanced_unlock_prompt_store_credential_title">Advanced unlock recognition</string>
<string name="advanced_unlock_prompt_store_credential_message">Warning: You still need to remember your master password if you use advanced unlock recognition.</string>
<string name="advanced_unlock_prompt_extract_credential_title">Open database with advanced unlock recognition</string>
<string name="advanced_unlock_prompt_extract_credential_message">Extract database credential with advanced unlock data</string>
<string name="encrypted_value_stored">Encrypted password stored</string>
<string name="biometric_invalid_key">Can not read the biometric key. Please delete it and repeat the biometric recognition procedure.</string>
<string name="biometric_not_recognized">Could not recognize biometric</string>
<string name="biometric_scanning_error">Biometric error: %1$s</string>
<string name="advanced_unlock_invalid_key">Can not read the advanced unlock key. Please delete it and repeat the unlock recognition procedure.</string>
<string name="advanced_unlock_not_recognized">Could not recognize advanced unlock print</string>
<string name="advanced_unlock_scanning_error">Advanced unlock error: %1$s</string>
<string name="no_credentials_stored">This database does not have stored credential yet.</string>
<string name="biometric_prompt_not_initialized">Unable to initialize biometric prompt.</string>
<string name="crypto_object_not_initialized">Unable to retrieve crypto object.</string>
<string name="credential_before_click_biometric_button">Type in the password, and then click the \"Biometric\" button.</string>
<string name="advanced_unlock_prompt_not_initialized">Unable to initialize advanced unlock prompt.</string>
<string name="credential_before_click_advanced_unlock_button">Type in the password, and then click the \"Advanced unlock\" button.</string>
<string name="database_history">History</string>
<string name="menu_appearance_settings">Appearance</string>
<string name="biometric">Biometric</string>
<string name="device_credential">Device credential</string>
<string name="general">General</string>
<string name="autofill">Autofill</string>
<string name="autofill_service_name">KeePassDX form autofilling</string>
@@ -317,15 +318,24 @@
<string name="lock_database_back_root_summary">Lock the database when the user clicks the back button on the root screen</string>
<string name="lock_database_show_button_title">Show lock button</string>
<string name="lock_database_show_button_summary">Displays the lock button in the user interface</string>
<string name="content">Content</string>
<string name="advanced_unlock">Advanced unlock</string>
<string name="advanced_unlock_tap_delete">Tap to delete advanced unlocking keys</string>
<string name="advanced_unlock_explanation_summary">Use advanced unlocking to open a database more easily</string>
<string name="biometric_unlock_enable_title">Biometric unlocking</string>
<string name="biometric_unlock_enable_summary">Lets you scan your biometric to open the database</string>
<string name="biometric_auto_open_prompt_title">Auto-open biometric prompt</string>
<string name="biometric_auto_open_prompt_summary">Automatically ask for biometric if the database is set up to use it</string>
<string name="device_credential_unlock_enable_title">Device credential unlocking</string>
<string name="device_credential_unlock_enable_summary">Lets you use your device credential to open the database</string>
<string name="biometric_auto_open_prompt_title">Auto-open prompt</string>
<string name="biometric_auto_open_prompt_summary">Automatically request advanced unlock if the database is set up to use it</string>
<string name="temp_advanced_unlock_enable_title">Temp advanced unlocking</string>
<string name="temp_advanced_unlock_enable_summary">Do not store any encrypted content to use advanced unlocking</string>
<string name="temp_advanced_unlock_timeout_title">Advanced unlocking expiration</string>
<string name="temp_advanced_unlock_timeout_summary">Duration of advanced unlocking usage before deleting its content</string>
<string name="advanced_unlock_timeout">Advanced unlocking timeout</string>
<string name="biometric_delete_all_key_title">Delete encryption keys</string>
<string name="biometric_delete_all_key_summary">Delete all encryption keys related to biometric recognition</string>
<string name="biometric_delete_all_key_warning">Delete all encryption keys related to biometric recognition?</string>
<string name="biometric_delete_all_key_summary">Delete all encryption keys related to advanced unlock recognition</string>
<string name="advanced_unlock_delete_all_key_warning">Delete all encryption keys related to advanced unlock recognition?</string>
<string name="unavailable_feature_text">Could not start this feature.</string>
<string name="unavailable_feature_version">The device is running Android %1$s, but needs %2$s or later.</string>
<string name="unavailable_feature_hardware">Could not find the corresponding hardware.</string>
@@ -350,7 +360,7 @@
<string name="settings_database_force_changing_master_key_summary">Require changing the master key (days)</string>
<string name="settings_database_force_changing_master_key_next_time_title">Force renewal next time</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Require changing the master key the next time (once)</string>
<string name="monospace_font_fields_enable_title">Field font</string>
<string name="monospace_font_fields_enable_title">Field typeface</string>
<string name="monospace_font_fields_enable_summary">Change font used in fields for better character visibility</string>
<string name="allow_copy_password_title">Clipboard trust</string>
<string name="allow_copy_password_summary">Allow copying the entry password and protected fields to the clipboard</string>
@@ -366,7 +376,7 @@
<string name="database_custom_color_title">Custom database color</string>
<string name="database_version_title">Database version</string>
<string name="text_appearance">Text</string>
<string name="application_appearance">App</string>
<string name="application_appearance">Interface</string>
<string name="other">Other</string>
<string name="compression">Compression</string>
<string name="compression_none">None</string>
@@ -409,6 +419,11 @@
<string name="keyboard_previous_fill_in_summary">Automatically switch back to the previous keyboard after executing \"Auto key action\"</string>
<string name="keyboard_previous_lock_title">Lock database</string>
<string name="keyboard_previous_lock_summary">Automatically switch back to the previous keyboard after locking the database</string>
<string name="custom_fields">Custom fields</string>
<string name="back_to_previous_keyboard">Back to previous keyboard</string>
<string name="select_entry">Select entry</string>
<string name="backspace">Backspace</string>
<string name="enter">Enter</string>
<string name="autofill_close_database_title">Close database</string>
<string name="autofill_close_database_summary">Close the database after an autofill selection</string>
<string name="autofill_auto_search_title">Auto search</string>
@@ -445,8 +460,8 @@
<string name="education_new_node_summary">Entries help manage your digital identities.\n\nGroups (~folders) organize entries in your database.</string>
<string name="education_search_title">Search through entries</string>
<string name="education_search_summary">Enter title, username or content of other fields to retrieve your passwords.</string>
<string name="education_biometric_title">Biometric database unlocking</string>
<string name="education_biometric_summary">Link your password to your scanned biometric to quickly unlock your database.</string>
<string name="education_advanced_unlock_title">Advanced database unlocking</string>
<string name="education_advanced_unlock_summary">Link your password to your scanned biometric or device credential to quickly unlock your database.</string>
<string name="education_entry_edit_title">Edit the entry</string>
<string name="education_entry_edit_summary">Edit your entry with custom fields. Pool data can be referenced between different entry fields.</string>
<string name="education_generate_password_title">Create a strong password</string>
@@ -460,7 +475,10 @@
<string name="education_unlock_title">Unlock your database</string>
<string name="education_unlock_summary">Enter the password and/or keyfile to unlock your database.\n\nBackup your database file in a safe place after each change.</string>
<string name="education_read_only_title">Write protect your database</string>
<string name="education_read_only_summary">Change opening mode for the session.\n\n\"Write-protected\" prevents unintended changes to the database.\n\"Modifiable\" lets you add, delete, or modify all elements.</string>
<string name="education_read_only_summary">Change opening mode for the session.
\n
\n\"Write-protected\" prevents unintended changes to the database.
\n\"Modifiable\" lets you add, delete, or modify all the elements as you wish.</string>
<string name="education_field_copy_title">Copy a field</string>
<string name="education_field_copy_summary">Copied fields can be pasted anywhere.\n\nUse the form filling method you prefer.</string>
<string name="education_lock_title">Lock the database</string>
@@ -479,7 +497,7 @@
<string name="html_text_dev_feature_encourage">you are encouraging developers to create &lt;strong&gt;new features&lt;/strong&gt; and to &lt;strong&gt;fix bugs&lt;/strong&gt; according to your remarks.</string>
<string name="html_text_dev_feature_thanks">Thanks a lot for your contribution.</string>
<string name="html_text_dev_feature_work_hard">We are working hard to release this feature quickly.</string>
<string name="html_text_dev_feature_upgrade">Do not forget to keep your app up to date by installing new versions.</string>
<string name="html_text_dev_feature_upgrade">Remember to keep your app up to date by installing new versions.</string>
<string name="download">Download</string>
<string name="contribute">Contribute</string>
<string name="download_attachment">Download %1$s</string>
@@ -492,7 +510,8 @@
<string name="encryption_twofish">Twofish</string>
<string name="encryption_chacha20">ChaCha20</string>
<string name="kdf_AES">AES</string>
<string name="kdf_Argon2">Argon2</string>
<string name="kdf_Argon2d">Argon2d</string>
<string name="kdf_Argon2id">Argon2id</string>
<string-array name="timeout_options">
<item>5 seconds</item>
<item>10 seconds</item>
@@ -504,6 +523,20 @@
<item>30 minutes</item>
<item>Never</item>
</string-array>
<string-array name="large_timeout_options">
<item>5 minutes</item>
<item>15 minutes</item>
<item>30 minutes</item>
<item>1 hour</item>
<item>2 hours</item>
<item>5 hours</item>
<item>10 hours</item>
<item>24 hours</item>
<item>48 hours</item>
<item>1 week</item>
<item>1 month</item>
<item>Never</item>
</string-array>
<string-array name="list_size_options">
<item>Small</item>
<item>Medium</item>
@@ -526,4 +559,4 @@
<string name="hide_expired_entries_summary">Expired entries are not shown</string>
<string name="show_uuid_title">Show UUID</string>
<string name="show_uuid_summary">Displays the UUID linked to an entry</string>
</resources>
</resources>

View File

@@ -18,6 +18,8 @@
-->
<Keyboard
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="o"
android:verticalGap="8dp"
android:horizontalGap="1%p"
android:keyHeight="38dp">
@@ -26,26 +28,30 @@
<Key
android:codes="600"
android:keyIcon="@drawable/ic_keyboard_white_24dp"
android:keyWidth="15%p"
android:tooltipText="@string/back_to_previous_keyboard"
android:keyWidth="17%p"
android:horizontalGap="1%p"
android:keyEdgeFlags="left"
android:isRepeatable="false"/>
android:isRepeatable="false" />
<Key
android:codes="620"
android:keyWidth="46%p"
android:keyIcon="@drawable/ic_key_white_24dp"
android:tooltipText="@string/select_entry"
android:keyWidth="45%p"
android:horizontalGap="2%p"
android:isRepeatable="false"/>
<Key
android:codes="-5"
android:keyIcon="@drawable/ic_backspace_white_24dp"
android:keyWidth="16%p"
android:tooltipText="@string/backspace"
android:keyWidth="14%p"
android:horizontalGap="2%p"
android:isRepeatable="true"/>
<Key
android:codes="-4"
android:keyIcon="@drawable/ic_keyboard_return_white_24dp"
android:keyWidth="16%p"
android:tooltipText="@string/enter"
android:keyWidth="17%p"
android:horizontalGap="1%p"
android:isRepeatable="false"
android:keyEdgeFlags="right"/>

View File

@@ -18,6 +18,8 @@
-->
<Keyboard
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="o"
android:verticalGap="8dp"
android:horizontalGap="1%p"
android:keyHeight="38dp">
@@ -26,25 +28,36 @@
android:codes="520"
android:keyEdgeFlags="left"
android:keyIcon="@drawable/ic_link_black_24dp"
android:keyWidth="24%p"
android:tooltipText="@string/entry_url"
android:keyWidth="15%p"
android:horizontalGap="1%p"
android:isRepeatable="false"/>
<Key
android:codes="500"
android:keyIcon="@drawable/ic_person_white_24dp"
android:keyWidth="24%p"
android:horizontalGap="1%p"
android:tooltipText="@string/entry_user_name"
android:keyWidth="17%p"
android:horizontalGap="2%p"
android:isRepeatable="false" />
<Key
android:codes="510"
android:keyIcon="@drawable/ic_password_white_24dp"
android:keyWidth="24%p"
android:tooltipText="@string/entry_password"
android:keyWidth="28%p"
android:horizontalGap="1%p"
android:isRepeatable="false"/>
<Key
android:codes="515"
android:keyIcon="@drawable/ic_otp_white_24dp"
android:tooltipText="@string/entry_otp"
android:keyWidth="17%p"
android:horizontalGap="2%p"
android:isRepeatable="false"/>
<Key
android:codes="530"
android:keyIcon="@drawable/ic_list_white_24dp"
android:keyWidth="23%p"
android:tooltipText="@string/custom_fields"
android:keyWidth="15%p"
android:horizontalGap="1%p"
android:isRepeatable="false"
android:keyEdgeFlags="right"/>
@@ -54,6 +67,7 @@
<Key
android:codes="600"
android:keyIcon="@drawable/ic_keyboard_white_24dp"
android:tooltipText="@string/back_to_previous_keyboard"
android:keyWidth="17%p"
android:horizontalGap="1%p"
android:keyEdgeFlags="left"
@@ -61,25 +75,29 @@
<Key
android:codes="611"
android:keyIcon="@drawable/ic_lock_white_24dp"
android:keyWidth="17%p"
android:tooltipText="@string/lock"
android:keyWidth="26%p"
android:horizontalGap="2%p"
android:isRepeatable="false" />
<Key
android:codes="620"
android:keyIcon="@drawable/ic_key_white_24dp"
android:keyWidth="27%p"
android:tooltipText="@string/select_entry"
android:keyWidth="18%p"
android:horizontalGap="1%p"
android:isRepeatable="false"/>
<Key
android:codes="-5"
android:keyIcon="@drawable/ic_backspace_white_24dp"
android:keyWidth="15%p"
android:tooltipText="@string/backspace"
android:keyWidth="14%p"
android:horizontalGap="2%p"
android:isRepeatable="true"/>
<Key
android:codes="-4"
android:keyIcon="@drawable/ic_keyboard_return_white_24dp"
android:keyWidth="15%p"
android:tooltipText="@string/enter"
android:keyWidth="17%p"
android:horizontalGap="1%p"
android:isRepeatable="false"
android:keyEdgeFlags="right"/>

View File

@@ -34,7 +34,7 @@
<Preference
android:key="@string/settings_advanced_unlock_key"
android:title="@string/menu_advanced_unlock_settings"
android:icon="@drawable/prefs_fingerprint_24dp"
android:icon="@drawable/prefs_bolt_24dp"
android:persistent="false" />
<Preference
android:key="@string/settings_appearance_key"

View File

@@ -19,7 +19,7 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="@string/biometric">
android:title="@string/general">
<Preference
android:key="@string/advanced_unlock_explanation_key"
android:icon="@drawable/prefs_info_24dp"
@@ -29,16 +29,36 @@
android:title="@string/biometric_unlock_enable_title"
android:summary="@string/biometric_unlock_enable_summary"
android:defaultValue="@bool/biometric_unlock_enable_default"/>
<SwitchPreference
android:key="@string/device_credential_unlock_enable_key"
android:title="@string/device_credential_unlock_enable_title"
android:summary="@string/device_credential_unlock_enable_summary"
android:defaultValue="@bool/device_credential_unlock_enable_default"/>
<SwitchPreference
android:key="@string/biometric_auto_open_prompt_key"
android:title="@string/biometric_auto_open_prompt_title"
android:summary="@string/biometric_auto_open_prompt_summary"
android:dependency="@string/biometric_unlock_enable_key"
android:defaultValue="@bool/biometric_auto_open_prompt_default"/>
</PreferenceCategory>
<PreferenceCategory
android:title="@string/content">
<SwitchPreference
android:key="@string/temp_advanced_unlock_enable_key"
android:title="@string/temp_advanced_unlock_enable_title"
android:summary="@string/temp_advanced_unlock_enable_summary"
android:defaultValue="@bool/temp_advanced_unlock_enable_default"/>
<ListPreference
android:key="@string/temp_advanced_unlock_timeout_key"
android:title="@string/temp_advanced_unlock_timeout_title"
android:summary="@string/temp_advanced_unlock_timeout_summary"
android:dependency="@string/temp_advanced_unlock_enable_key"
android:entries="@array/large_timeout_options"
android:entryValues="@array/large_timeout_values"
android:dialogTitle="@string/advanced_unlock_timeout"
android:defaultValue="@string/temp_advanced_unlock_timeout_default"/>
<Preference
android:key="@string/biometric_delete_all_key_key"
android:title="@string/biometric_delete_all_key_title"
android:summary="@string/biometric_delete_all_key_summary" />
</PreferenceCategory>
</PreferenceScreen>

96
art/ic_device_unlock.svg Normal file
View File

@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
id="svg4830"
version="1.1"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
inkscape:export-filename="/home/joker/Project/Scratcheck/TestExport.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:docname="ic_device_unlock.svg">
<defs
id="defs4832" />
<sodipodi:namedview
id="base"
pagecolor="#acacac"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="5.6568543"
inkscape:cx="3.4994966"
inkscape:cy="-17.865506"
inkscape:current-layer="g4770"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="1920"
inkscape:window-y="74"
inkscape:window-maximized="1">
<sodipodi:guide
position="0.99999471,22.999999"
orientation="22,0"
id="guide2987"
inkscape:locked="false" />
<sodipodi:guide
position="0.99999471,0.99999888"
orientation="0,22"
id="guide2989"
inkscape:locked="false" />
<sodipodi:guide
position="22.999995,0.99999888"
orientation="-22,0"
id="guide2991"
inkscape:locked="false" />
<sodipodi:guide
position="22.999995,22.999999"
orientation="0,-22"
id="guide2993"
inkscape:locked="false" />
<inkscape:grid
type="xygrid"
id="grid2989" />
</sodipodi:namedview>
<metadata
id="metadata4835">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,-8)">
<g
id="g4770"
transform="matrix(1.7777778,0,0,1.7777778,-205.48441,-31.997877)">
<g
id="Layer_1"
transform="matrix(-0.00397893,0,0,0.00397893,125.58386,23.674135)" />
<path
style="fill:#fffbfb;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 13 4 L 8 13 L 11.777344 13 L 11 20 L 16 11 L 12.222656 11 L 13 4 z "
transform="matrix(0.56249999,0,0,0.56249999,115.58498,22.498806)"
id="path841" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
id="svg4830"
version="1.1"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
inkscape:export-filename="/home/joker/Project/Scratcheck/TestExport.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:docname="ic_device_unlock_notification.svg">
<defs
id="defs4832" />
<sodipodi:namedview
id="base"
pagecolor="#acacac"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="22.627417"
inkscape:cx="3.1581538"
inkscape:cy="10.6837"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="1920"
inkscape:window-y="74"
inkscape:window-maximized="1">
<sodipodi:guide
position="0.99999471,22.999999"
orientation="22,0"
id="guide2987"
inkscape:locked="false" />
<sodipodi:guide
position="0.99999471,0.99999888"
orientation="0,22"
id="guide2989"
inkscape:locked="false" />
<sodipodi:guide
position="22.999995,0.99999888"
orientation="-22,0"
id="guide2991"
inkscape:locked="false" />
<sodipodi:guide
position="22.999995,22.999999"
orientation="0,-22"
id="guide2993"
inkscape:locked="false" />
<inkscape:grid
type="xygrid"
id="grid2989" />
</sodipodi:namedview>
<metadata
id="metadata4835">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,-8)">
<g
transform="matrix(-0.00707365,0,0,0.00707365,17.775788,10.089475)"
id="Layer_1" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 13 2 L 8 11 L 11.777344 11 L 11.427734 14.140625 C 11.493169 14.182534 11.563348 14.214452 11.626953 14.259766 C 11.988993 14.517689 12.304 14.824694 12.576172 15.164062 L 16 9 L 12.222656 9 L 13 2 z M 8.8125 14.375 C 7.7596432 14.375 6.861473 14.747902 6.1171875 15.492188 C 5.372902 16.236473 5 17.134643 5 18.1875 C 5 19.240357 5.372902 20.138527 6.1171875 20.882812 C 6.861473 21.627098 7.7596432 22 8.8125 22 C 9.6467855 22 10.391161 21.767924 11.046875 21.300781 C 11.702589 20.835067 12.159397 20.223035 12.417969 19.46875 L 15.1875 19.46875 L 15.1875 21.998047 L 17.71875 21.998047 L 17.71875 19.466797 L 19 19.466797 L 19 16.90625 L 12.417969 16.90625 C 12.159397 16.151965 11.702589 15.541361 11.046875 15.074219 C 10.391161 14.607076 9.6467855 14.375 8.8125 14.375 z M 8.8125 16.904297 C 9.1510713 16.904297 9.4484599 17.032444 9.7070312 17.291016 C 9.9656026 17.549587 10.09375 17.848404 10.09375 18.185547 C 10.09375 18.524118 9.9656026 18.821507 9.7070312 19.080078 C 9.4484599 19.338649 9.1496428 19.466797 8.8125 19.466797 C 8.4753572 19.466797 8.1821651 19.338649 7.9335938 19.080078 C 7.6850224 18.821507 7.5605469 18.52269 7.5605469 18.185547 C 7.5605469 17.846976 7.6850224 17.549587 7.9335938 17.291016 C 8.1821651 17.032444 8.4753572 16.904297 8.8125 16.904297 z "
transform="translate(0,8)"
id="path841" />
<g
style="display:inline;stroke:none;stroke-width:280.00009155;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.01428571,0,0,0.01428571,-15.142861,19.044291)"
id="g4824" />
<g
id="g867"
transform="matrix(0.01428571,0,0,0.01428571,-15.142861,19.044291)"
style="display:inline;stroke:#e30000;stroke-width:140.000042;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="24"
height="24"
id="svg4830"
version="1.1"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
inkscape:export-filename="/home/joker/Project/Scratcheck/TestExport.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:docname="ic_fingerprint_notification.svg">
<defs
id="defs4832" />
<sodipodi:namedview
id="base"
pagecolor="#acacac"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="16"
inkscape:cx="25.295509"
inkscape:cy="6.4998744"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1920"
inkscape:window-height="1016"
inkscape:window-x="1920"
inkscape:window-y="74"
inkscape:window-maximized="1">
<sodipodi:guide
position="0.99999471,22.999999"
orientation="22,0"
id="guide2987"
inkscape:locked="false" />
<sodipodi:guide
position="0.99999471,0.99999888"
orientation="0,22"
id="guide2989"
inkscape:locked="false" />
<sodipodi:guide
position="22.999995,0.99999888"
orientation="-22,0"
id="guide2991"
inkscape:locked="false" />
<sodipodi:guide
position="22.999995,22.999999"
orientation="0,-22"
id="guide2993"
inkscape:locked="false" />
<inkscape:grid
type="xygrid"
id="grid2989" />
</sodipodi:namedview>
<metadata
id="metadata4835">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,-8)">
<g
transform="matrix(-0.00707365,0,0,0.00707365,17.775788,10.089475)"
id="Layer_1" />
<g
style="display:inline;stroke:none;stroke-width:280.00009155;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.01428571,0,0,0.01428571,-15.142861,19.044291)"
id="g4824">
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 12.013672 2 C 9.8636722 2 7.8228902 2.5192969 5.9628906 3.5292969 C 5.7228906 3.6592969 5.6336719 3.9709375 5.7636719 4.2109375 C 5.9036719 4.4509375 6.2033598 4.5401564 6.4433594 4.4101562 C 8.1533594 3.4701563 10.033672 3 12.013672 3 C 14.003672 3 15.663984 3.4201562 17.583984 4.4101562 C 17.653984 4.4501563 17.7325 4.4707031 17.8125 4.4707031 C 17.9925 4.4707031 18.163906 4.3694531 18.253906 4.1894531 C 18.383906 3.9494531 18.292966 3.6495314 18.042969 3.5195312 C 16.002969 2.4695312 14.143672 2 12.013672 2 z M 11.994141 4.4394531 C 10.202891 4.4419531 8.41375 4.8501563 6.84375 5.6601562 C 5.3437504 6.4301562 4.08375 7.5296875 3.09375 8.9296875 C 2.93375 9.1596875 2.9828906 9.4708594 3.2128906 9.6308594 C 3.3028906 9.6908594 3.4039062 9.7207031 3.5039062 9.7207031 C 3.6639063 9.7207031 3.8125781 9.6497661 3.8925781 9.5097656 C 4.7925781 8.2497656 5.9329691 7.2507813 7.2929688 6.5507812 C 10.152968 5.0707812 13.823359 5.0690628 16.693359 6.5390625 C 18.043359 7.2290625 19.183984 8.2204686 20.083984 9.4804688 C 20.243984 9.7104688 20.553203 9.7596094 20.783203 9.5996094 C 21.013203 9.4396094 21.062344 9.1203906 20.902344 8.9003906 C 19.912344 7.5103906 18.652344 6.4203906 17.152344 5.6503906 C 15.577344 4.8403906 13.785391 4.4369531 11.994141 4.4394531 z M 11.962891 6.8203125 C 8.7328906 6.8203125 5.783125 8.6299218 4.453125 11.419922 C 4.003125 12.369922 3.7734375 13.460156 3.7734375 14.660156 C 3.7734375 15.178762 3.8211765 15.688064 3.8925781 16.195312 C 4.1040664 15.673217 4.3977156 15.185736 4.765625 14.751953 C 4.7654412 14.724103 4.7636719 14.686946 4.7636719 14.660156 C 4.7636719 13.620156 4.9635156 12.669375 5.3535156 11.859375 C 6.5235152 9.409375 9.1228906 7.8300781 11.962891 7.8300781 C 15.962891 7.8300781 19.212891 10.890156 19.212891 14.660156 C 19.212891 14.924852 19.155811 15.176176 19.052734 15.40625 L 20.097656 15.40625 C 20.165726 15.163649 20.212891 14.913124 20.212891 14.650391 C 20.212891 10.330391 16.512891 6.8203125 11.962891 6.8203125 z M 12.003906 9.2695312 C 9.3367169 9.2695312 7.098881 11.041343 6.5039062 13.410156 C 6.8827574 13.227092 7.280825 13.087302 7.6933594 12.998047 C 8.3905548 11.400109 10.058802 10.269531 12.003906 10.269531 C 14.573906 10.269531 16.664062 12.240156 16.664062 14.660156 C 16.664062 14.940156 16.884062 15.160156 17.164062 15.160156 C 17.444063 15.160156 17.664062 14.940156 17.664062 14.660156 C 17.664062 11.690156 15.123906 9.2695312 12.003906 9.2695312 z M 11.972656 11.720703 C 10.954724 11.720703 10.058942 12.198213 9.4980469 12.925781 C 9.880498 12.973891 10.253824 13.064358 10.615234 13.191406 C 10.980214 12.895424 11.45052 12.710937 11.972656 12.710938 C 13.122656 12.710938 14.052734 13.580391 14.052734 14.650391 C 14.052734 14.913124 14.099894 15.163649 14.167969 15.40625 L 15.214844 15.40625 C 15.111767 15.176176 15.052734 14.924852 15.052734 14.660156 C 15.052734 13.040156 13.672656 11.720703 11.972656 11.720703 z M 8.8125 14.375 C 7.7596432 14.375 6.861473 14.747902 6.1171875 15.492188 C 5.372902 16.236473 5 17.134643 5 18.1875 C 5 19.240357 5.372902 20.138527 6.1171875 20.882812 C 6.861473 21.627098 7.7596432 22 8.8125 22 C 9.6467855 22 10.391161 21.767924 11.046875 21.300781 C 11.702589 20.835067 12.159397 20.223035 12.417969 19.46875 L 15.1875 19.46875 L 15.1875 21.998047 L 17.71875 21.998047 L 17.71875 19.466797 L 19 19.466797 L 19 16.90625 L 12.417969 16.90625 C 12.159397 16.151965 11.702589 15.541361 11.046875 15.074219 C 10.391161 14.607076 9.6467855 14.375 8.8125 14.375 z M 8.8125 16.904297 C 9.1510713 16.904297 9.4484599 17.032444 9.7070312 17.291016 C 9.9656026 17.549587 10.09375 17.848404 10.09375 18.185547 C 10.09375 18.524118 9.9656026 18.821507 9.7070312 19.080078 C 9.4484599 19.338649 9.1496428 19.466797 8.8125 19.466797 C 8.4753572 19.466797 8.1821651 19.338649 7.9335938 19.080078 C 7.6850224 18.821507 7.5605469 18.52269 7.5605469 18.185547 C 7.5605469 17.846976 7.6850224 17.549587 7.9335938 17.291016 C 8.1821651 17.032444 8.4753572 16.904297 8.8125 16.904297 z "
transform="matrix(70.000021,0,0,70.000021,1060.0006,-773.1006)"
id="path4836" />
</g>
<g
id="g867"
transform="matrix(0.01428571,0,0,0.01428571,-15.142861,19.044291)"
style="display:inline;stroke:#e30000;stroke-width:140.000042;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g904"
transform="matrix(0.01428571,0,0,0.01428571,-15.142861,19.044291)"
style="display:inline;stroke:#e30000;stroke-width:140.000042;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g922"
transform="matrix(0.01428571,0,0,0.01428571,-15.142861,19.044291)"
style="display:inline;stroke:#e30000;stroke-width:210.000063;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.5 KiB

Some files were not shown because too many files have changed in this diff Show More