Compare commits

...

488 Commits
4.0.4 ... 4.1.2

Author SHA1 Message Date
J-Jamet
e809109bb2 Merge branch 'release/4.1.2' 2025-07-05 17:30:06 +02:00
J-Jamet
0e31890624 fix: Compilation with fastlane 2025-07-05 17:11:17 +02:00
J-Jamet
0124021ce5 fix: Upgrade README.md 2025-07-05 14:18:27 +02:00
J-Jamet
74db6bf77f fix: Update CHANGE 2025-07-05 14:09:07 +02:00
J-Jamet
efde33182e fix: Digit count UI #1987 2025-07-05 13:55:06 +02:00
J-Jamet
ec68b22330 fix: Update CHANGELOG 2025-07-05 11:55:24 +02:00
J-Jamet
80a38c0c54 fix: Update CHANGELOG 2025-07-04 23:05:17 +02:00
J-Jamet
2aa6461094 Merge branch 'Dev-ClayP-master' into develop 2025-07-04 22:56:37 +02:00
Dev-ClayP
258433b3b8 Update SetOTPDialogFragment.kt
Tiny Whitespace fix
2025-07-04 10:53:19 -04:00
Clay Perry
79e723545c Expanded minimum secret length functionality so that the user is alerted if the length is not long enough. This fixed an issue where the user wasnt alerted about invalid secret length but was still able to click ok and submit the string, bypassing the base32 check altogether. 2025-07-04 10:50:25 -04:00
Dev-ClayP
9659b55bf3 Update SetOTPDialogFragment.kt
Fixed UX bug for button in the way,
Added string length check.
2025-07-04 01:21:47 -04:00
J-Jamet
322b21d645 fix: Update Gradle to 8.11.0 2025-07-01 20:40:42 +02:00
J-Jamet
ed2ba65ecf fix: Update CHANGELOG 2025-07-01 20:26:48 +02:00
J-Jamet
defc8b1c57 fix: Update CHANGELOG 2025-07-01 20:25:34 +02:00
J-Jamet
a90ecc56d8 Merge branch 'develop' into codokie-rtl 2025-07-01 20:16:24 +02:00
J-Jamet
2faa0ac320 fix: Note group modification #2053 2025-07-01 20:07:19 +02:00
J-Jamet
e391fd59fe fix: Autofill registration popup #2054 An CHANGELOG 2025-07-01 19:45:26 +02:00
J-Jamet
0aa89ea9ff fix: Same domain unit tests 2025-07-01 17:26:56 +02:00
J-Jamet
f31a30bf47 fix: Search #1946 #2003 2025-07-01 17:22:42 +02:00
J-Jamet
c79144400f Merge branch 'translations' into develop 2025-06-30 17:17:13 +02:00
J-Jamet
b56556f5a2 Merge branch 'develop' of https://hosted.weblate.org/projects/keepass-dx/strings into translations 2025-06-30 17:11:30 +02:00
J-Jamet
35d5f01b8e Merge branch 'fuzzpart-Error-strings-mismatch-#1938' into develop 2025-06-30 15:02:44 +02:00
J-Jamet
501c647236 fix: Warnings 2025-06-05 19:47:35 +02:00
J-Jamet
e77c7b84a3 fix: Upgrade gradle 2025-06-05 19:38:32 +02:00
J-Jamet
d9f4e9b6ab fix: Upgrade JDK and Gradle 2025-06-05 19:27:41 +02:00
Kunzisoft
1d7f7d2a5b Translated using Weblate (French)
Currently translated at 100.0% (3 of 3 strings)

Translation: KeePassDX/Metadata
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/metadata/fr/
2025-05-29 10:27:20 +02:00
Yurt Page
df408e862b Translated using Weblate (Russian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2025-05-29 10:24:23 +02:00
Yurt Page
66845926d5 Translated using Weblate (Russian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2025-05-28 21:30:16 +02:00
J-Jamet
0a06acbf1d Merge branch 'ymcx-master' into develop 2025-05-28 21:13:50 +02:00
J-Jamet
5d3c6798c0 Merge branch 'codokie-dialog' into develop 2025-05-28 21:04:16 +02:00
solokot
b9d2b9ddc9 Translated using Weblate (Russian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2025-05-22 07:01:52 +00:00
abdelbasset jabrane
8a6525f45e Translated using Weblate (Arabic)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ar/
2025-05-19 01:32:49 +02:00
Priit Jõerüüt
41d89b590d Translated using Weblate (Estonian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2025-05-14 17:03:07 +02:00
Ash Ed
8354d08ff5 Translated using Weblate (Russian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2025-05-10 18:03:02 +02:00
fuzzpart
16725b21f3 All error messages were ended with a full stop. The respective punctuation marks have been used in translations. 2025-05-08 10:31:39 +02:00
ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)
93ba17792f Translated using Weblate (Latvian)
Currently translated at 22.3% (149 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/lv/
2025-05-08 07:03:01 +02:00
Priit Jõerüüt
940b96cf21 Translated using Weblate (Estonian)
Currently translated at 94.4% (629 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2025-04-29 09:03:25 +02:00
Ihor Hordiichuk
157253ce24 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2025-04-21 23:01:42 +02:00
ssantos
46b3810f34 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_PT/
2025-04-20 00:01:42 +02:00
VfBFan
05c030dbbb Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2025-04-18 08:26:32 +02:00
aasami
5b0fd99351 Translated using Weblate (Slovak)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sk/
2025-04-15 00:44:02 +02:00
Xo
2946a6e231 Translated using Weblate (Hebrew)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-04-07 09:03:37 +00:00
codokie
47896fcdc9 [RTL] Fix text direction of OTP token 2025-04-06 14:32:03 +03:00
codokie
bc51345f0d [RTL] Workaround for license text direction 2025-04-06 10:54:57 +03:00
codokie
750e1b6c43 [RTL] Force LTR text direction for protected fields 2025-04-06 10:44:36 +03:00
codokie
4a2106837c [RTL] Align text to the start of the view 2025-04-06 10:44:10 +03:00
codokie
39b9fc350a [RTL] Fix direction of arrow icons 2025-04-05 23:23:07 +03:00
codokie
53560dbe29 [RTL] Fix order of duration pickers 2025-04-05 23:22:52 +03:00
codokie
5172dbe114 [RTL] Fix padding of toolbar buttons 2025-04-05 23:22:25 +03:00
codokie
4f0ff67fdf [RTL] Fix DX logo 2025-04-05 23:20:19 +03:00
codokie
bac971ced8 [RTL] Enable support 2025-04-05 23:20:00 +03:00
Priit Jõerüüt
64bf5ba165 Translated using Weblate (Estonian)
Currently translated at 90.2% (601 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2025-03-27 20:25:08 +01:00
Tino
90c4a5e1b8 Fix OTP code alignment in the main screen 2025-03-19 14:26:00 +02:00
Xo
b08a5d9cda Translated using Weblate (Hebrew)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-03-15 18:52:30 +01:00
Alonso González Chaves
d5be79948d Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2025-03-14 14:06:23 +01:00
Alonso González Chaves
6b64be4925 Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2025-03-14 13:07:43 +01:00
Alonso González Chaves
e8e6eb6ca5 Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2025-03-14 09:49:22 +01:00
codokie
ee9383dd0b [Dialog] Fix EditText context menu background 2025-03-12 14:50:33 +00:00
Xo
aee0b82cff Translated using Weblate (Hebrew)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-03-12 13:25:53 +01:00
Xo
ba5913da57 Translated using Weblate (Hebrew)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-03-11 14:27:29 +01:00
Xo
3238b9b2ce Translated using Weblate (Hebrew)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-03-10 12:07:14 +01:00
Xo
5215181c0f Translated using Weblate (Hebrew)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-03-10 09:56:08 +01:00
Xo
d3676a1454 Translated using Weblate (Hebrew)
Currently translated at 99.8% (665 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-03-10 00:21:10 +01:00
Xo
792ce6f86e Translated using Weblate (Hebrew)
Currently translated at 99.0% (660 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-03-09 19:02:23 +01:00
Xo
ddbd0376fc Translated using Weblate (Hebrew)
Currently translated at 99.2% (661 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-03-09 15:35:57 +01:00
Xo
496655093c Translated using Weblate (Hebrew)
Currently translated at 99.2% (661 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-03-09 13:24:53 +01:00
109247019824
755293eff7 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2025-03-06 21:14:00 +01:00
Priit Jõerüüt
b6e51a1f32 Translated using Weblate (Estonian)
Currently translated at 89.0% (593 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2025-03-05 13:20:43 +01:00
Priit Jõerüüt
08f17f3f19 Translated using Weblate (Estonian)
Currently translated at 83.9% (559 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2025-03-05 11:20:13 +01:00
pitroig
14440725fc Translated using Weblate (Catalan)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ca/
2025-03-02 22:01:57 +01:00
pitroig
b4f84c5cd6 Translated using Weblate (Catalan)
Currently translated at 97.4% (649 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ca/
2025-03-02 11:57:49 +01:00
Xo
ad6b1cead1 Translated using Weblate (Hebrew)
Currently translated at 93.3% (622 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-02-25 18:07:20 +01:00
Priit Jõerüüt
e06398ff19 Translated using Weblate (Estonian)
Currently translated at 78.6% (524 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2025-02-25 11:01:38 +01:00
신태진
919ad5cfd4 Translated using Weblate (Korean)
Currently translated at 50.1% (334 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ko/
2025-02-24 16:49:09 +01:00
신태진
b3fb721588 Translated using Weblate (Korean)
Currently translated at 47.5% (317 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ko/
2025-02-24 15:34:19 +01:00
Xo
590497852d Translated using Weblate (Hebrew)
Currently translated at 92.7% (618 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2025-02-17 23:57:45 +01:00
Bora Atıcı
ebd7a9c7cf Translated using Weblate (Turkish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2025-02-15 13:56:30 +01:00
SHINJI.K
939fb2fa54 Translated using Weblate (Japanese)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2025-02-13 13:02:12 +00:00
cc5efd7b0
2245daffe9 Translated using Weblate (Japanese)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2025-02-13 13:02:11 +00:00
Priit Jõerüüt
784b25ada8 Translated using Weblate (Estonian)
Currently translated at 70.5% (470 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2025-02-11 11:02:10 +01:00
Milo Ivir
146d631794 Translated using Weblate (Croatian)
Currently translated at 99.5% (663 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2025-02-08 10:54:21 +01:00
Priit Jõerüüt
cc062d7f0e Translated using Weblate (Estonian)
Currently translated at 64.4% (429 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2025-02-06 23:02:18 +00:00
Francisco Serrador
298dd4af61 Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2025-02-02 23:32:33 +01:00
NicolaeFericitu
739ba3b14d Translated using Weblate (Romanian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2025-01-22 21:44:57 +01:00
Priit Jõerüüt
2864ea9868 Translated using Weblate (Estonian)
Currently translated at 62.7% (418 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2025-01-21 18:12:06 +01:00
efelantti
ed8d3247ca Translated using Weblate (Finnish)
Currently translated at 59.0% (393 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fi/
2025-01-20 16:15:45 +01:00
efelantti
ff5de7b327 Translated using Weblate (Finnish)
Currently translated at 53.1% (354 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fi/
2025-01-19 13:00:30 +01:00
Francisco Serrador
aa77552ff4 Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2025-01-19 13:00:29 +01:00
efelantti
12456c0ea2 Translated using Weblate (Finnish)
Currently translated at 43.3% (289 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fi/
2025-01-18 10:47:03 +01:00
Matthaiks
ff7cd29b77 Translated using Weblate (Polish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2025-01-14 11:05:42 +01:00
Ihor Hordiichuk
f7065acc40 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2025-01-13 04:30:56 +01:00
Bora Atıcı
e4e2e5c43c Translated using Weblate (Turkish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2025-01-11 22:42:13 +01:00
Stephan Paternotte
48d240b010 Translated using Weblate (Dutch)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2025-01-09 22:43:59 +01:00
Stephan Paternotte
9f2deb56b9 Translated using Weblate (Dutch)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2025-01-09 09:01:50 +01:00
Masowick
951257bed8 Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2025-01-09 09:01:50 +01:00
தமிழ்நேரம்
f27ce804fb Translated using Weblate (Tamil)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ta/
2025-01-05 18:01:22 +00:00
FX8350
1d896e83b3 Translated using Weblate (Japanese)
Currently translated at 96.8% (645 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2025-01-05 18:01:19 +00:00
Laurent FAVOLE
a2c2925610 Translated using Weblate (French)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2025-01-01 18:00:34 +01:00
hugoalh
97e5f90603 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hant/
2024-12-27 09:00:25 +01:00
qx100
593b7188dc Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2024-12-27 09:00:24 +01:00
bowornsin
4c4e61a711 Translated using Weblate (Thai)
Currently translated at 89.9% (599 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/th/
2024-12-24 02:07:49 +01:00
Besnik Bleta
140f09c77e Translated using Weblate (Albanian)
Currently translated at 97.1% (647 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sq/
2024-12-17 12:00:23 +01:00
Masowick
c0fe4faf8a Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-12-17 12:00:22 +01:00
Pixelcode
066fff7aca Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-12-15 15:02:18 +01:00
Masowick
6dcbdffed4 Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-12-15 15:02:16 +01:00
Priit Jõerüüt
3a07dea6d7 Translated using Weblate (Estonian)
Currently translated at 57.9% (386 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-12-14 07:02:47 +01:00
Sandyran
72ed07ef17 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 42.6% (284 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nn/
2024-12-14 07:02:46 +01:00
Sandyran
51512b4588 Translated using Weblate (Norwegian Nynorsk)
Currently translated at 20.5% (137 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nn/
2024-12-10 22:00:22 +00:00
J-Jamet
aed49e19e8 fix: view null exception 2024-12-08 17:07:46 +01:00
J-Jamet
113601d09a fix: Remove unused tests 2024-12-08 17:07:05 +01:00
J-Jamet
b7d0b65715 fix: Add linebreak in description 2024-12-08 15:55:37 +01:00
Priit Jõerüüt
3075591885 Translated using Weblate (Estonian)
Currently translated at 57.9% (386 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-12-06 08:00:33 +01:00
Masowick
e9596f56db Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-12-06 08:00:31 +01:00
Priit Jõerüüt
3559830738 Translated using Weblate (Estonian)
Currently translated at 55.7% (371 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-12-04 16:06:01 +01:00
jonnysemon
e42beccb22 Translated using Weblate (Arabic)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ar/
2024-11-29 15:00:34 +01:00
Priit Jõerüüt
d05b7394e8 Translated using Weblate (Estonian)
Currently translated at 41.8% (279 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-11-27 21:00:44 +01:00
Besnik Bleta
00b11ea659 Translated using Weblate (Albanian)
Currently translated at 96.2% (641 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sq/
2024-11-27 21:00:44 +01:00
Cleverson Cândido
99f0f096d1 Translated using Weblate (Portuguese)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt/
2024-11-27 21:00:43 +01:00
Priit Jõerüüt
416329d50d Translated using Weblate (Estonian)
Currently translated at 35.4% (236 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-11-26 19:05:32 +00:00
Besnik Bleta
cb0d1b05d7 Translated using Weblate (Albanian)
Currently translated at 94.4% (629 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sq/
2024-11-26 19:05:31 +00:00
Oliver Cervera
a2845c33f8 Translated using Weblate (Italian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2024-11-26 19:05:30 +00:00
Besnik Bleta
6d06265d94 Translated using Weblate (Albanian)
Currently translated at 88.5% (590 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sq/
2024-11-25 17:18:05 +01:00
109247019824
49d03efe56 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-11-25 17:18:04 +01:00
Wellington Terumi Uemura
7f13a3ca76 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_BR/
2024-11-25 17:18:04 +01:00
Retrial
cec9d168e3 Translated using Weblate (Greek)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2024-11-25 17:18:04 +01:00
VfBFan
ecf253451d Translated using Weblate (German)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-11-25 17:18:04 +01:00
J-Jamet
89a6219659 fix: Remove unused tests 2024-11-25 14:23:35 +01:00
J-Jamet
9dec308caa fix: URL matching fails in presence of a path #1940 2024-11-25 14:21:39 +01:00
J-Jamet
fb1459de9b fix: Upgrade to 4.1.2 2024-11-25 14:18:18 +01:00
109247019824
f3bef64461 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-11-25 10:53:54 +01:00
Linerly
2509caff6b Translated using Weblate (Indonesian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/id/
2024-11-25 10:53:54 +01:00
hugoalh
232aafe2c0 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.3% (662 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hant/
2024-11-25 10:53:54 +01:00
大王叫我来巡山
ed26cb4891 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2024-11-25 10:53:54 +01:00
solokot
0b966a6cd1 Translated using Weblate (Russian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-11-25 10:53:54 +01:00
Stephan Paternotte
c84afd2281 Translated using Weblate (Dutch)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2024-11-25 10:53:54 +01:00
summoner001
1711f09547 Translated using Weblate (Hungarian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hu/
2024-11-25 10:53:54 +01:00
Masowick
4460a44e99 Translated using Weblate (German)
Currently translated at 99.6% (664 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-11-25 10:53:54 +01:00
Fjuro
c8f7bcfb52 Translated using Weblate (Czech)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/
2024-11-25 10:53:53 +01:00
J-Jamet
bd2bd842af Merge tag '4.1.1' into develop
4.1.1
2024-11-24 15:46:07 +01:00
J-Jamet
2b0f4fe46b Merge branch 'release/4.1.1' 2024-11-24 15:46:00 +01:00
J-Jamet
55c2f41c71 fix: tags 2024-11-24 14:59:06 +01:00
109247019824
94985422ca Translated using Weblate (Bulgarian)
Currently translated at 99.0% (660 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-11-24 14:27:14 +01:00
Matthaiks
eaff1aa58f Translated using Weblate (Polish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2024-11-24 14:27:14 +01:00
Ghost of Sparta
c7cb9d0990 Translated using Weblate (Hungarian)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hu/
2024-11-24 14:27:14 +01:00
gallegonovato
a9fdf30421 Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-11-24 14:27:13 +01:00
Matthaiks
d0f45f6dfb Translated using Weblate (Polish)
Currently translated at 99.3% (662 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2024-11-24 12:07:11 +01:00
Hosted Weblate
8cdb6a3c9f Merge branch 'origin/develop' into Weblate. 2024-11-24 12:06:37 +01:00
Kunzisoft
b369a46431 Translated using Weblate (French)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2024-11-24 12:06:37 +01:00
gallegonovato
f40ca2d5e0 Translated using Weblate (Spanish)
Currently translated at 100.0% (666 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-11-24 12:06:37 +01:00
Anonymous
400393c677 Translated using Weblate (Azerbaijani)
Currently translated at 97.1% (647 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-11-24 12:05:41 +01:00
Anonymous
5710e3be55 Translated using Weblate (Serbian)
Currently translated at 50.4% (336 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sr/
2024-11-24 12:05:41 +01:00
Anonymous
af1312a92b Translated using Weblate (Estonian)
Currently translated at 32.4% (216 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-11-24 12:05:40 +01:00
Anonymous
d2a63c48b1 Translated using Weblate (Filipino)
Currently translated at 46.2% (308 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fil/
2024-11-24 12:05:40 +01:00
Anonymous
8f10ea7ed6 Translated using Weblate (Cantonese (Traditional Han script))
Currently translated at 20.1% (134 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/yue_Hant/
2024-11-24 12:05:40 +01:00
Anonymous
7bd701368a Translated using Weblate (Thai)
Currently translated at 89.3% (595 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/th/
2024-11-24 12:05:40 +01:00
Anonymous
894e846a62 Translated using Weblate (English (United Kingdom))
Currently translated at 33.9% (226 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en_GB/
2024-11-24 12:05:40 +01:00
Anonymous
504ef5a7ab Translated using Weblate (Vietnamese)
Currently translated at 98.6% (657 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/vi/
2024-11-24 12:05:40 +01:00
Anonymous
af6436da77 Translated using Weblate (Bulgarian)
Currently translated at 98.6% (657 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-11-24 12:05:40 +01:00
Anonymous
d031420ed3 Translated using Weblate (Portuguese)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt/
2024-11-24 12:05:40 +01:00
Anonymous
4b6b7478de Translated using Weblate (Indonesian)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/id/
2024-11-24 12:05:40 +01:00
Anonymous
bb1b5eab96 Translated using Weblate (Romanian)
Currently translated at 98.6% (657 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2024-11-24 12:05:40 +01:00
Anonymous
9486b50342 Translated using Weblate (Croatian)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2024-11-24 12:05:39 +01:00
Anonymous
fc9a5b3545 Translated using Weblate (Turkish)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2024-11-24 12:05:39 +01:00
Anonymous
8b4d0e2541 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.6% (657 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nb_NO/
2024-11-24 12:05:39 +01:00
Anonymous
0ef07f615c Translated using Weblate (Galician)
Currently translated at 86.7% (578 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/gl/
2024-11-24 12:05:39 +01:00
Anonymous
836413cff2 Translated using Weblate (Arabic)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ar/
2024-11-24 12:05:39 +01:00
Anonymous
c71e34fee9 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hant/
2024-11-24 12:05:39 +01:00
Anonymous
b389a4db92 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2024-11-24 12:05:39 +01:00
Anonymous
0a1a54cb33 Translated using Weblate (Ukrainian)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2024-11-24 12:05:39 +01:00
Anonymous
630228675c Translated using Weblate (Swedish)
Currently translated at 62.4% (416 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sv/
2024-11-24 12:05:39 +01:00
Anonymous
f7955d00fc Translated using Weblate (Slovak)
Currently translated at 92.0% (613 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sk/
2024-11-24 12:05:39 +01:00
Anonymous
68b08f9b9a Translated using Weblate (Russian)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-11-24 12:05:39 +01:00
Anonymous
612f136ced Translated using Weblate (Portuguese (Portugal))
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_PT/
2024-11-24 12:05:39 +01:00
Anonymous
8c313c3d48 Translated using Weblate (Portuguese (Brazil))
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_BR/
2024-11-24 12:05:38 +01:00
Anonymous
517a6c0062 Translated using Weblate (Polish)
Currently translated at 99.2% (661 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2024-11-24 12:05:38 +01:00
Matthaiks
46c61b10de Translated using Weblate (Polish)
Currently translated at 99.2% (661 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2024-11-24 12:05:38 +01:00
Anonymous
edc8d27577 Translated using Weblate (Dutch)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2024-11-24 12:05:38 +01:00
Anonymous
05354777fe Translated using Weblate (Japanese)
Currently translated at 96.8% (645 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2024-11-24 12:05:38 +01:00
Anonymous
98d3d2a39b Translated using Weblate (Italian)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2024-11-24 12:05:38 +01:00
Anonymous
f91f75912e Translated using Weblate (Hungarian)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hu/
2024-11-24 12:05:38 +01:00
Anonymous
9f21f67035 Translated using Weblate (French)
Currently translated at 99.5% (663 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2024-11-24 12:05:38 +01:00
Kunzisoft
699e4da112 Translated using Weblate (French)
Currently translated at 99.5% (663 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2024-11-24 12:05:38 +01:00
Anonymous
6458285e75 Translated using Weblate (Basque)
Currently translated at 95.7% (638 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/eu/
2024-11-24 12:05:38 +01:00
Anonymous
e0ddf3711f Translated using Weblate (Spanish)
Currently translated at 99.8% (665 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-11-24 12:05:38 +01:00
gallegonovato
68d415375d Translated using Weblate (Spanish)
Currently translated at 99.8% (665 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-11-24 12:05:38 +01:00
Anonymous
0e11afdd8b Translated using Weblate (Greek)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2024-11-24 12:05:37 +01:00
Anonymous
ff2c01584f Translated using Weblate (German)
Currently translated at 98.6% (657 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-11-24 12:05:37 +01:00
Anonymous
a59e20b864 Translated using Weblate (Danish)
Currently translated at 98.6% (657 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/da/
2024-11-24 12:05:37 +01:00
Anonymous
d7d898896d Translated using Weblate (Czech)
Currently translated at 98.7% (658 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/
2024-11-24 12:05:37 +01:00
Anonymous
2dde78d5e7 Translated using Weblate (Catalan)
Currently translated at 94.8% (632 of 666 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ca/
2024-11-24 12:05:37 +01:00
J-Jamet
2ca39ff399 fix: update string 2024-11-24 12:04:36 +01:00
Hosted Weblate
1f6fdaf9b3 Merge branch 'origin/develop' into Weblate. 2024-11-24 11:58:45 +01:00
J-Jamet
edaf58135f fix: Upgrade to 4.1.1 2024-11-24 11:56:41 +01:00
J-Jamet
724698fc51 fix: Date parser #1933 2024-11-24 11:52:13 +01:00
summoner001
6aabe9e12c Translated using Weblate (Hungarian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hu/
2024-11-23 19:39:32 +01:00
bowornsin
2b5a1bb893 Translated using Weblate (Thai)
Currently translated at 90.2% (595 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/th/
2024-11-23 04:00:27 +00:00
summoner001
7403305f3c Translated using Weblate (Hungarian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hu/
2024-11-23 04:00:26 +00:00
J-Jamet
e780f8a3f0 fix: Matching against domain goes too far #1820 2024-11-19 21:48:16 +01:00
J-Jamet
7f2fda0327 Merge tag '4.1.0' into develop
4.1.0
2024-11-18 11:54:37 +01:00
J-Jamet
ada8f74e2c Merge branch 'release/4.1.0' 2024-11-18 11:54:27 +01:00
J-Jamet
1ddfeaf950 fix: update Gemfile 2024-11-18 11:07:14 +01:00
J-Jamet
2ed2cc1499 fix: Replace strong tag 2024-11-18 11:00:46 +01:00
J-Jamet
be0f90f12a Merge branch 'develop' of https://hosted.weblate.org/projects/keepass-dx/strings into translations 2024-11-18 10:58:28 +01:00
J-Jamet
4b362df23b Merge branch 'master' into develop 2024-11-17 20:32:20 +01:00
J-Jamet
b953a1c2f6 fix: Package authenticity 2024-11-17 20:29:45 +01:00
J-Jamet
4c30fa43d3 fix: Screenshot protection #1870 2024-11-17 19:32:23 +01:00
J-Jamet
6866b1a3bb fix: change expires icon 2024-11-17 14:59:07 +01:00
J-Jamet
328030f152 fix: timer precision #1467 2024-11-17 14:46:16 +01:00
J-Jamet
fd195bd926 fix: reset timer only if in DAO 2024-11-17 13:52:58 +01:00
J-Jamet
87e07366cd Resets the advanced unlock expiration #1600 2024-11-17 13:31:47 +01:00
J-Jamet
8133977e09 feat: Add shield icon as password strength indicator #1355 2024-11-16 12:56:46 +01:00
J-Jamet
11199b996c fix: Password color and entropy view 2024-11-15 19:25:00 +01:00
J-Jamet
eee61db189 Add entropy 2024-11-15 17:45:09 +01:00
J-Jamet
c7c5130030 fix: passkeyview to passwordview 2024-11-14 19:57:35 +01:00
J-Jamet
6de14a3840 fix: TimeZone 2024-11-13 21:13:50 +01:00
J-Jamet
55206b3dde fix: All past dates and times are crossed out #1710 2024-11-13 20:54:31 +01:00
Priit Jõerüüt
e1a44477af Translated using Weblate (Estonian)
Currently translated at 32.9% (217 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-11-12 18:00:27 +01:00
Aitor Elorza
23afee453e Translated using Weblate (Basque)
Currently translated at 96.8% (638 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/eu/
2024-11-12 18:00:26 +01:00
J-Jamet
8e05309021 feat: Support otpauth://steam/Steam link #1289 2024-11-11 16:06:48 +01:00
J-Jamet
26fdf87070 fix: distinct domain names #1820 2024-11-11 15:34:48 +01:00
J-Jamet
1c95a0edc4 fix: distinct domain names #1105 2024-11-08 21:11:26 +01:00
J-Jamet
4723fb39e9 fix: Sort 2024-11-08 13:27:26 +01:00
Jamil Farajov
13d667d81c Translated using Weblate (Azerbaijani)
Currently translated at 98.6% (650 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-11-07 12:00:40 +00:00
Jamil Farajov
dce255dc58 Translated using Weblate (Azerbaijani)
Currently translated at 91.9% (606 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-11-06 12:00:23 +01:00
Random
f72c9704d9 Translated using Weblate (Italian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2024-11-06 12:00:21 +01:00
Sylvain Pichon
e623010e91 Translated using Weblate (French)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2024-11-05 07:00:22 +00:00
J-Jamet
587bfdc162 fix: Month save 2024-11-04 20:02:19 +01:00
J-Jamet
7c1c299282 fix: Off-by-one when selecting date fields #1695 2024-11-04 19:43:30 +01:00
Priit Jõerüüt
f2a5c0b04b Translated using Weblate (Estonian)
Currently translated at 32.6% (215 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-11-03 23:00:16 +01:00
J-Jamet
4ba77b76ec feat: Instant in copy #1889 2024-11-02 13:37:33 +01:00
J-Jamet
0bfce44317 fix: unlocking procedure #1760 2024-11-02 11:04:15 +01:00
solokot
13b6d6384c Translated using Weblate (Russian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-10-29 00:12:52 +01:00
ginger-co
80838bbef0 Translated using Weblate (Hebrew)
Currently translated at 92.5% (610 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2024-10-27 15:00:19 +01:00
Avi Parshan
8a557ff2fb Translated using Weblate (Hebrew)
Currently translated at 81.0% (534 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2024-10-26 15:45:55 +02:00
ginger-co
16e394087d Translated using Weblate (Hebrew)
Currently translated at 81.0% (534 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2024-10-26 15:45:55 +02:00
Avi Parshan
ee1b67b36e Translated using Weblate (Hebrew)
Currently translated at 70.4% (464 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2024-10-26 15:04:50 +02:00
ginger-co
36b9fa2387 Translated using Weblate (Hebrew)
Currently translated at 70.4% (464 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2024-10-26 15:04:50 +02:00
Jérémy JAMET
378169e939 Update README.md, remove the keytool section 2024-10-24 11:50:33 +02:00
Jamil Farajov
70a01e559d Translated using Weblate (Azerbaijani)
Currently translated at 36.8% (243 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-10-22 17:16:33 +02:00
shinebrillant
c09e8196f3 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hant/
2024-10-22 17:16:32 +02:00
J-Jamet
0382c05152 fix: Filters 2024-10-21 19:54:47 +02:00
Celeste Liu
75cf6e2a56 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hant/
2024-10-21 00:20:33 +02:00
J-Jamet
9fb4754430 feat: Number of children #421 2024-10-20 21:15:21 +02:00
J-Jamet
0312b504a9 fix: upgrade CHANGELOG 2024-10-20 18:51:28 +02:00
J-Jamet
1d6a9651bf fix: upgrade to API34 #1894 2024-10-20 18:44:06 +02:00
Jamil Farajov
e36b18e85e Translated using Weblate (Azerbaijani)
Currently translated at 26.5% (175 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-10-18 00:23:21 +02:00
Roko Magdalenić
4ae4951e0d Translated using Weblate (Serbian)
Currently translated at 51.1% (337 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sr/
2024-10-16 23:15:48 +02:00
Roko Magdalenić
a65f52ffba Translated using Weblate (Serbian (Latin script))
Currently translated at 59.7% (394 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sr_Latn/
2024-10-16 23:15:47 +02:00
Linerly
6de25ffa65 Translated using Weblate (Indonesian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/id/
2024-10-15 04:15:44 +02:00
Francisco Serrador
d8429bdd99 Translated using Weblate (Spanish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-10-13 22:16:18 +00:00
Jamil Farajov
26976ae6cf Translated using Weblate (Azerbaijani)
Currently translated at 22.7% (150 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-10-09 20:12:00 +02:00
Jamil Farajov
53beaca563 Translated using Weblate (Azerbaijani)
Currently translated at 18.6% (123 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-10-06 23:53:53 +02:00
Jamil Farajov
77628e2fb9 Translated using Weblate (Azerbaijani)
Currently translated at 18.2% (120 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-10-06 16:35:40 +02:00
Jamil Farajov
40d2f2de96 Translated using Weblate (Azerbaijani)
Currently translated at 18.0% (119 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-10-06 05:40:45 +02:00
Jamil Farajov
84cdb2483f Translated using Weblate (Azerbaijani)
Currently translated at 15.9% (105 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-10-06 05:04:26 +02:00
Jamil Farajov
c7866bfbbf Translated using Weblate (Azerbaijani)
Currently translated at 12.8% (85 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-10-05 23:50:54 +02:00
Jamil Farajov
5de1d6b343 Translated using Weblate (Azerbaijani)
Currently translated at 10.7% (71 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/az/
2024-10-05 20:04:36 +02:00
Jamil Farajov
7bde363704 Added translation using Weblate (Azerbaijani) 2024-10-05 17:03:03 +02:00
Priit Jõerüüt
1f9b2ce7b9 Translated using Weblate (Estonian)
Currently translated at 25.3% (167 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-10-04 00:41:37 +02:00
Francisco Serrador
ac2e47776a Translated using Weblate (Spanish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-09-25 01:15:42 +02:00
Ghost of Sparta
e7de5ca263 Translated using Weblate (Hungarian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hu/
2024-09-24 00:12:32 +02:00
Francisco Serrador
f7f079e653 Translated using Weblate (Spanish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-09-24 00:12:32 +02:00
Ghost of Sparta
f7cccb33de Translated using Weblate (Hungarian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hu/
2024-09-22 19:40:47 +02:00
J-Jamet
8177c9c34b fix: textColorHighlight #1711 2024-09-06 18:13:12 +02:00
J-Jamet
850c46f881 feat: Generate keyfile #1290 2024-09-06 17:13:24 +02:00
J-Jamet
ffcfe966d2 fix: Add warning for KeyFile length #1780 2024-09-06 15:55:36 +02:00
J-Jamet
800badd2a4 Merge branch 'shuvashish76-patch-1' into develop 2024-09-06 11:08:16 +02:00
J-Jamet
0a7ffbcc8f fix: Make the apk verification even clearer #1831 2024-09-06 10:31:41 +02:00
J-Jamet
019ec4de9a fix: Avoid DEPENDENCY_INFO_BLOCK 2024-09-06 09:54:35 +02:00
Priit Jõerüüt
78d1e4a12a Translated using Weblate (Estonian)
Currently translated at 24.8% (164 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-09-02 17:09:18 +02:00
SC
6c99fefad0 Translated using Weblate (Portuguese)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt/
2024-08-23 19:09:13 +00:00
SC
24bc1424b9 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_PT/
2024-08-23 19:09:12 +00:00
Random
94a0e17cfc Translated using Weblate (Italian)
Currently translated at 99.8% (658 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2024-08-23 19:09:12 +00:00
獅童乱(しどらん)
2f012d8cf2 Translated using Weblate (Japanese)
Currently translated at 98.0% (646 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ja/
2024-08-22 11:09:12 +00:00
gallegonovato
75b800054f Translated using Weblate (Spanish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-08-16 15:09:18 +02:00
Renko
d7c7733315 Translated using Weblate (Romanian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2024-08-15 13:09:11 +02:00
Ihor Hordiichuk
99600ad8d8 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2024-08-15 13:09:11 +02:00
Milo Ivir
4a4c7b8b6b Translated using Weblate (Croatian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2024-08-14 12:09:21 +02:00
jonnysemon
8c3267b345 Translated using Weblate (Arabic)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ar/
2024-08-14 12:09:21 +02:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
c0240b047b Translated using Weblate (Greek)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2024-08-14 12:09:20 +02:00
Fjuro
c52957ccfe Translated using Weblate (Czech)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/
2024-08-14 12:09:18 +02:00
Besnik Bleta
fb3f057adf Translated using Weblate (Albanian)
Currently translated at 54.9% (362 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sq/
2024-08-12 17:09:28 +02:00
109247019824
e333bd08a4 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-08-12 17:09:28 +02:00
Oğuz Ersen
1844a269cb Translated using Weblate (Turkish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2024-08-12 17:09:27 +02:00
大王叫我来巡山
859882d24f Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2024-08-12 17:09:26 +02:00
solokot
c95543b8b0 Translated using Weblate (Russian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-08-12 17:09:26 +02:00
Wellington Terumi Uemura
d874125dc1 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_BR/
2024-08-12 17:09:25 +02:00
Matthaiks
795cd099f4 Translated using Weblate (Polish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2024-08-12 17:09:24 +02:00
Alex Bruinsma
66ef6fd9d8 Translated using Weblate (Dutch)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2024-08-12 17:09:23 +02:00
gallegonovato
3b0655354d Translated using Weblate (Spanish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-08-12 17:09:23 +02:00
Keterion
76acec93fd Translated using Weblate (German)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-08-12 17:09:22 +02:00
VfBFan
3b60068369 Translated using Weblate (German)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-08-12 17:09:21 +02:00
Keterion
a0fd0a71a2 Translated using Weblate (Catalan)
Currently translated at 96.0% (633 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ca/
2024-08-11 16:57:29 +02:00
Keterion
907accbcc9 Translated using Weblate (English)
Currently translated at 99.8% (658 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/
2024-08-11 16:57:29 +02:00
Alex Bruinsma
ee284abf8d Translated using Weblate (Dutch)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2024-08-07 16:09:12 +00:00
Hierax Swiftwing
8239275770 Translated using Weblate (Serbian)
Currently translated at 9.1% (60 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sr/
2024-08-01 03:09:13 +02:00
Hierax Swiftwing
029485bace Translated using Weblate (Serbian)
Currently translated at 8.6% (57 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sr/
2024-07-31 02:09:18 +02:00
Thom
cef9f6ae3b Translated using Weblate (Danish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/da/
2024-07-31 02:09:17 +02:00
Hierax Swiftwing
8d88c94956 Added translation using Weblate (Serbian) 2024-07-30 02:03:40 +02:00
Patricio Carrau
692e155117 Translated using Weblate (French)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2024-07-30 02:03:40 +02:00
The One
9a9410de2b Translated using Weblate (Swedish)
Currently translated at 63.2% (417 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sv/
2024-07-29 23:09:12 +02:00
ssantos
a27f1181ea Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_PT/
2024-07-15 14:09:14 +02:00
searinminecraft
ac65cadb1b Translated using Weblate (Filipino)
Currently translated at 47.0% (310 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fil/
2024-07-13 06:09:13 +00:00
Renko
4345e75b20 Translated using Weblate (Romanian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2024-07-10 16:09:29 +02:00
j
f64d085e7b Translated using Weblate (Lithuanian)
Currently translated at 61.0% (402 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/lt/
2024-07-10 16:09:28 +02:00
Kemal Karagöz
325b878f0a Translated using Weblate (Turkish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2024-07-09 10:09:19 +02:00
Salih ARSLAN
330f375a30 Translated using Weblate (Turkish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2024-07-06 11:49:51 +02:00
Fqwe1
7d6c211de1 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2024-07-04 16:09:10 +02:00
Ben Towali
af5b36752c Translated using Weblate (Estonian)
Currently translated at 19.8% (131 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-07-01 22:09:24 +02:00
WebTrans
e0f563befb Translated using Weblate (Hebrew)
Currently translated at 44.3% (292 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2024-07-01 22:09:23 +02:00
Ben Towali
bf1b84dfea Translated using Weblate (Estonian)
Currently translated at 9.2% (61 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-06-30 21:20:00 +02:00
searinminecraft
b3f8ce9c16 Translated using Weblate (Filipino)
Currently translated at 46.4% (306 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fil/
2024-06-27 07:14:57 +02:00
Mr-Update
499152d066 Translated using Weblate (German)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-06-25 11:09:13 +02:00
VfBFan
c47e7edc9e Translated using Weblate (German)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-06-25 11:09:12 +02:00
shuvashish76
afc034b495 Improved IzzyOnDroid shield 2024-06-24 19:00:43 +05:30
J-Jamet
e1d19741af Merge branch 'feature/API34' into develop 2024-06-24 13:26:36 +02:00
J-Jamet
8d2de40df6 fix: Upgrade all modules to API 34 #1730 2024-06-24 13:14:52 +02:00
J-Jamet
f4b7db667f fix: Broadcast Receiver #1730 2024-06-24 12:59:33 +02:00
J-Jamet
4032e52317 fix: Upgrade Foreground service and version to 4.1.0 2024-06-24 12:32:05 +02:00
J-Jamet
f9db4325d8 Merge branch 'master' into develop 2024-06-24 10:37:39 +02:00
Jérémy JAMET
815824f76d Merge pull request #1862 from shuvashish76/patch-1
Add download sources table
2024-06-24 10:23:01 +02:00
Masowick
8534672c33 Translated using Weblate (German)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-06-24 10:20:54 +02:00
shuvashish76
b9bb9a166a Update README.md 2024-06-24 13:39:11 +05:30
shuvashish76
185c886472 Add download sources table 2024-06-24 04:52:01 +05:30
Mr-Update
acc565d021 Translated using Weblate (German)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-06-23 15:57:04 +02:00
solokot
64db137c6c Translated using Weblate (Russian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-06-21 20:09:59 +02:00
Kirill Isakov
4f2bdeb2c9 Translated using Weblate (Russian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-06-20 19:09:58 +02:00
ngocanhtve
527994084b Translated using Weblate (Vietnamese)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/vi/
2024-06-19 02:09:25 +00:00
J-Jamet
ffaf5c9475 Merge tag '4.0.8' into develop
4.0.8
2024-06-18 20:19:52 +02:00
J-Jamet
d1e24bfcd8 Merge branch 'release/4.0.8' 2024-06-18 20:19:46 +02:00
J-Jamet
aab8612c63 fix: update fastlane 2024-06-18 20:19:40 +02:00
J-Jamet
79c1e2d21c fix: #1848 #1850 2024-06-18 20:08:54 +02:00
J-Jamet
7ff44f4839 Merge tag '4.0.7' into develop
4.0.7
2024-06-17 23:20:57 +02:00
J-Jamet
2de0272e3e Merge branch 'release/4.0.7' 2024-06-17 23:20:48 +02:00
J-Jamet
1d22fe72d0 fix: ru fastlane 2024-06-17 23:20:30 +02:00
J-Jamet
7e9821551c fix: tags 2024-06-17 22:53:21 +02:00
J-Jamet
8fb3cd71b9 Merge branch 'develop' of https://hosted.weblate.org/projects/keepass-dx/strings into translations 2024-06-17 22:50:28 +02:00
J-Jamet
b0f6f1f2ba fix: Update CHANGELOG 2024-06-17 19:07:43 +02:00
Jérémy JAMET
df56dc4a4a Merge pull request #1840 from lgjint/fix-inline-suggestion
fix: inline suggestions in keyboard only show ''Select entry''
2024-06-17 19:05:29 +02:00
J-Jamet
b572ec4901 fix: Update CHANGELOG 2024-06-17 12:46:43 +02:00
J-Jamet
75759171c1 fix: Upgrade to 4.0.7 2024-06-17 12:39:47 +02:00
J-Jamet
322fe185dd fix: Description 2024-06-17 12:38:39 +02:00
J-Jamet
effe514ecb fix: Show broken link by default 2024-06-17 11:45:42 +02:00
jonnysemon
4ff9f69548 Translated using Weblate (Arabic)
Currently translated at 99.5% (656 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ar/
2024-06-11 21:02:14 +02:00
Priit Jõerüüt
e1c7cb17da Translated using Weblate (Estonian)
Currently translated at 2.7% (18 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/et/
2024-06-10 20:09:43 +02:00
jonnysemon
e6defd7770 Translated using Weblate (Arabic)
Currently translated at 99.2% (654 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ar/
2024-06-10 20:09:42 +02:00
J-Jamet
bba9f45075 fix: Group height resizable #1770 2024-06-10 18:45:22 +02:00
Priit Jõerüüt
de1a2d1557 Added translation using Weblate (Estonian) 2024-06-10 12:10:53 +02:00
ngocanhtve
e995d06a26 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/vi/
2024-06-08 06:09:18 +02:00
NicolaeFericitu
63f54a1318 Translated using Weblate (Romanian)
Currently translated at 98.4% (649 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2024-06-05 19:09:11 +00:00
Milo Ivir
0828c9f901 Translated using Weblate (Croatian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2024-06-05 19:09:10 +00:00
lgjint
51cd38450a fix: inline suggestions in keyboard only show ''Select entry'' Kunzisoft/KeePassDX#1708 2024-06-03 22:42:53 +08:00
Knut-Helge Eikrem
0a4a720fea Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nb_NO/
2024-06-02 19:30:56 +02:00
Knut-Helge Eikrem
7f7ce171e0 Translated using Weblate (English)
Currently translated at 99.6% (657 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en/
2024-06-02 19:30:56 +02:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
87622cc6ec Translated using Weblate (Greek)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2024-06-02 00:09:19 +02:00
solokot
aaf2e64fdb Translated using Weblate (Russian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-05-29 20:09:24 +02:00
Patricio Carrau
c6f22e7ce5 Translated using Weblate (French)
Currently translated at 99.8% (658 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fr/
2024-05-28 00:09:11 +02:00
Random
749a2d19aa Translated using Weblate (Italian)
Currently translated at 99.8% (658 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2024-05-25 10:09:13 +02:00
gallegonovato
ed3491fbba Translated using Weblate (Spanish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-05-21 18:13:40 +02:00
109247019824
f5e4b7cd6a Translated using Weblate (Bulgarian)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-05-21 08:01:49 +00:00
大王叫我来巡山
0b614e81ee Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2024-05-21 08:01:48 +00:00
Wellington Terumi Uemura
0a93b660cf Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_BR/
2024-05-21 08:01:47 +00:00
Oğuz Ersen
71e104e4bd Translated using Weblate (Turkish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2024-05-20 09:01:58 +02:00
Matthaiks
189c5de7ea Translated using Weblate (Polish)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2024-05-20 09:01:58 +02:00
Stephan Paternotte
a5e141c361 Translated using Weblate (Dutch)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2024-05-20 09:01:57 +02:00
Masowick
e76d8d4df7 Translated using Weblate (German)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-05-20 09:01:56 +02:00
Fjuro
d54c093985 Translated using Weblate (Czech)
Currently translated at 100.0% (659 of 659 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/
2024-05-20 09:01:55 +02:00
Hosted Weblate
086709e40f Merge branch 'origin/develop' into Weblate. 2024-05-19 07:55:21 +02:00
SC
9477e32ec8 Translated using Weblate (Portuguese)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt/
2024-05-18 10:01:56 +02:00
SC
a66a0628ad Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_PT/
2024-05-18 10:01:55 +02:00
Random
ea018bd4c1 Translated using Weblate (Italian)
Currently translated at 99.8% (657 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/it/
2024-05-18 10:01:54 +02:00
searinminecraft
8e81ee3b75 Translated using Weblate (Filipino)
Currently translated at 42.2% (278 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fil/
2024-05-16 08:02:04 +00:00
NicolaeFericitu
9c326f9be9 Translated using Weblate (Romanian)
Currently translated at 98.6% (649 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2024-05-16 08:02:02 +00:00
J-Jamet
7d2a0aa793 fix: Bad link for device unlocking #1826 2024-05-15 22:25:04 +02:00
J-Jamet
22d1442033 fix: Screenshot banner #1770 2024-05-15 22:05:31 +02:00
J-Jamet
ffa32a5501 fix: Entry validation button not accessible with the keyboard open #1770 2024-05-15 21:24:01 +02:00
J-Jamet
f50a6a8416 fix: Remove the "merge, reload" wording in read only mode #1709 2024-05-15 19:19:18 +02:00
bowornsin
7a82b75ee2 Translated using Weblate (Thai)
Currently translated at 90.1% (593 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/th/
2024-05-15 07:01:51 +00:00
NicolaeFericitu
350c0585b8 Translated using Weblate (Romanian)
Currently translated at 98.1% (646 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2024-05-15 07:01:51 +00:00
J-Jamet
5c4454d3ed fix: Nav header margin 2024-05-14 16:32:13 +02:00
J-Jamet
dfd1ae7a50 fix:
Removing a file from recents list doesn't remove star #1755
2024-05-14 15:16:53 +02:00
J-Jamet
d16fdd062f fix: F-Droid logotype #1814 2024-05-14 14:22:50 +02:00
J-Jamet
d6432698fc Merge branch 'yurtpage-i18n' into develop 2024-05-13 13:17:38 +02:00
J-Jamet
1a9c1e8bc1 Merge branch 'i18n' of github.com:yurtpage/KeePassDX into yurtpage-i18n 2024-05-13 13:17:20 +02:00
J-Jamet
2d05c6cb13 fix:
Coordinator layout to show the Snackbar error
2024-05-13 12:40:02 +02:00
J-Jamet
05f689913f fix:
Database is 0 Byte if Yubikey save is canceled #1680
2024-05-13 12:16:42 +02:00
J-Jamet
9e714c4192 fix:
Database is 0 Byte if Yubikey save is canceled #1680
2024-05-13 11:38:16 +02:00
J-Jamet
e1ad1e31f8 Gemfile 2024-05-13 09:50:02 +02:00
109247019824
b473bf1da8 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-05-09 13:33:28 +02:00
Milo Ivir
dfdc6eecb6 Translated using Weblate (Croatian)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hr/
2024-05-09 13:33:28 +02:00
ngocanhtve
e9145df77a Translated using Weblate (Vietnamese)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/vi/
2024-05-07 14:07:14 +02:00
Pavel
4e824990d1 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uk/
2024-05-07 14:07:13 +02:00
Wellington Terumi Uemura
5a053378e1 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_BR/
2024-05-07 14:07:12 +02:00
J-Jamet
e09306b6f3 Merge remote-tracking branch 'origin/develop' into develop 2024-05-06 16:15:44 +02:00
J-Jamet
21e577c1d3 fix: Change version to 4.0.6 2024-05-06 16:15:30 +02:00
searinminecraft
9d85d0979c Translated using Weblate (Filipino)
Currently translated at 14.4% (95 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/fil/
2024-05-05 16:07:16 +02:00
Linerly
e4fec7ea1f Translated using Weblate (Indonesian)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/id/
2024-05-05 16:07:12 +02:00
Fjuro
c998e513fc Translated using Weblate (Czech)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/cs/
2024-05-05 16:07:11 +02:00
searinminecraft
855b06c4b2 Added translation using Weblate (Filipino) 2024-05-05 05:34:40 +02:00
Oğuz Ersen
776012f02f Translated using Weblate (Turkish)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/tr/
2024-05-04 15:07:23 +02:00
何意挽秋風
9bff531618 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hant/
2024-05-04 15:07:22 +02:00
DVXG
4d64818da1 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2024-05-04 15:07:21 +02:00
qx100
837c8773a8 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2024-05-04 15:07:20 +02:00
solokot
97a199b504 Translated using Weblate (Russian)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-05-04 15:07:19 +02:00
Matthaiks
9cd37be5b1 Translated using Weblate (Polish)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pl/
2024-05-04 15:07:18 +02:00
Stephan Paternotte
90895fed52 Translated using Weblate (Dutch)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/nl/
2024-05-04 15:07:17 +02:00
gallegonovato
df4b73abbb Translated using Weblate (Spanish)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/es/
2024-05-04 15:07:15 +02:00
ΣΤΑΥΡΟΣ ΔΑΛΙΑΚΟΠΟΥΛΟΣ
d2bed08ae0 Translated using Weblate (Greek)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/el/
2024-05-04 15:07:14 +02:00
Masowick
fd5e1472e1 Translated using Weblate (German)
Currently translated at 100.0% (658 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-05-04 15:07:13 +02:00
Anonymous
6a22126006 Translated using Weblate (Romanian)
Currently translated at 97.8% (644 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2024-05-03 14:38:37 +02:00
Anonymous
ff5e9049a0 Translated using Weblate (German)
Currently translated at 99.5% (655 of 658 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-05-03 14:38:36 +02:00
J-Jamet
7570aa9f49 Merge branch 'develop' of https://hosted.weblate.org/projects/keepass-dx/strings into translations 2024-05-03 14:32:56 +02:00
J-Jamet
4fcdd3da23 Merge branch 'develop' of github.com:Kunzisoft/KeePassDX into develop 2024-05-03 14:07:35 +02:00
qx100
f8a65b4d13 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hans/
2024-05-02 09:45:46 +02:00
Yurt Page
5bb70a5043 fastlane i18n ru
Signed-off-by: Yurt Page <yurtpage@gmail.com>
2024-04-23 19:18:09 +03:00
J-Jamet
c4788159e4 Merge branch 'thekyber-patch-1' into develop 2024-04-22 17:13:16 +02:00
J-Jamet
403b0aedca Merge branch 'ngocanhtve-master' into develop 2024-04-22 17:06:56 +02:00
TheKyber
cae12b84df better way to verify github apk files
Verifying the signing certificate hash is way better than verifying the hash of the apk files, because it does not change at all, and it will be very noticeable if it was changed from the README.md file than just GitHub release notes.

And you will not have to calculate the hash and publish it in the future, so less work for you.
2024-04-19 13:52:26 +01:00
J-Jamet
40dbbbf0a0 fix: Recognize Brave forms 2024-04-19 13:41:58 +02:00
Champ0999
9e0da27484 Translated using Weblate (English (United Kingdom))
Currently translated at 35.2% (228 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en_GB/
2024-04-18 18:03:25 +02:00
Gia Huy Lữ
7e6c2463d6 Translated using Weblate (Vietnamese)
Currently translated at 43.2% (280 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/vi/
2024-04-18 18:03:24 +02:00
Thomas
69a76db166 Translated using Weblate (Chinese (Traditional))
Currently translated at 93.1% (603 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hant/
2024-04-18 18:03:24 +02:00
devchung
efd282e326 Translated using Weblate (Yue (Traditional))
Currently translated at 20.7% (134 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/yue_Hant/
2024-04-17 14:33:37 +02:00
devchung
6471fef28c Translated using Weblate (Chinese (Traditional))
Currently translated at 92.5% (599 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/zh_Hant/
2024-04-17 14:33:36 +02:00
devchung
5a0691b70c Added translation using Weblate (Yue (Traditional)) 2024-04-17 08:21:39 +02:00
J-Jamet
27ea357348 fix: Fix username recognition with firefox #1665 2024-04-14 20:44:51 +02:00
bowornsin
e12de29cce Translated using Weblate (Thai)
Currently translated at 91.8% (594 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/th/
2024-04-12 06:01:55 +02:00
Rasmus
a236be4e38 Translated using Weblate (Danish)
Currently translated at 99.0% (641 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/da/
2024-04-05 14:01:53 +02:00
SpaceFrrog
5300643f62 Translated using Weblate (English (United Kingdom))
Currently translated at 25.9% (168 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en_GB/
2024-04-04 09:43:58 +02:00
SpaceFrrog
469b837daf Translated using Weblate (German)
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-04-04 09:43:57 +02:00
Ghost of Sparta
84ca3e8982 Translated using Weblate (Hungarian)
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hu/
2024-03-28 12:02:02 +01:00
Tim Trek
bfb8be159a Translated using Weblate (German)
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/de/
2024-03-19 07:09:23 +01:00
bowornsin
13d7af9c76 Translated using Weblate (Thai)
Currently translated at 91.6% (593 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/th/
2024-03-17 08:43:10 +01:00
David C
66d78497b9 Translated using Weblate (Slovenian)
Currently translated at 10.2% (66 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sl/
2024-03-08 14:01:54 +01:00
109247019824
32743f7e19 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-03-06 22:01:44 +01:00
109247019824
c2cc4451ff Translated using Weblate (Bulgarian)
Currently translated at 95.0% (615 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-03-05 15:02:38 +01:00
109247019824
67370bbc3d Translated using Weblate (Bulgarian)
Currently translated at 84.8% (549 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-03-04 08:01:48 +01:00
Lenni
1201ae1956 Translated using Weblate (English (United Kingdom))
Currently translated at 25.1% (163 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en_GB/
2024-03-03 07:01:51 +01:00
109247019824
0eb2786ce5 Translated using Weblate (Bulgarian)
Currently translated at 82.3% (533 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-03-03 07:01:50 +01:00
109247019824
bbdeb66f8e Translated using Weblate (Bulgarian)
Currently translated at 78.3% (507 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-03-02 06:02:00 +01:00
J-Jamet
641698a652 Merge branch 'MDP43140-master' into develop 2024-03-01 17:24:16 +01:00
J-Jamet
15880e995a Merge branch 'master' of github.com:MDP43140/KeePassDX into MDP43140-master 2024-03-01 17:23:54 +01:00
J-Jamet
1e849b106b Merge branch 'Rilele-master' into develop 2024-03-01 16:36:42 +01:00
109247019824
31bc405e86 Translated using Weblate (Bulgarian)
Currently translated at 73.1% (473 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-02-29 23:02:09 +01:00
109247019824
6e69eee2a3 Translated using Weblate (Bulgarian)
Currently translated at 69.2% (448 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-02-27 20:49:46 +01:00
109247019824
279b095f30 Translated using Weblate (Bulgarian)
Currently translated at 62.1% (402 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-02-27 12:02:02 +01:00
109247019824
9821499cdb Translated using Weblate (Bulgarian)
Currently translated at 36.9% (239 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-02-26 08:02:03 +01:00
--//--
b76c39862a Translated using Weblate (Burmese)
Currently translated at 6.8% (44 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/my/
2024-02-23 16:01:59 +01:00
adfc
7948d234f5 Translated using Weblate (English (United Kingdom))
Currently translated at 13.9% (90 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/en_GB/
2024-02-23 16:01:58 +01:00
109247019824
50fc3aa9fc Translated using Weblate (Bulgarian)
Currently translated at 20.2% (131 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-02-23 16:01:57 +01:00
adfc
79a7adb05b Translated using Weblate (Hindi)
Currently translated at 22.7% (147 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/hi/
2024-02-23 16:01:56 +01:00
Besnik Bleta
c02770ec2a Translated using Weblate (Albanian)
Currently translated at 55.9% (362 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sq/
2024-02-22 13:02:04 +01:00
Elvis
bf24033513 Translated using Weblate (Uzbek)
Currently translated at 7.5% (49 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uz/
2024-02-18 20:02:04 +01:00
solokot
d97c87e90c Translated using Weblate (Russian)
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-02-18 20:02:02 +01:00
Elvis
6d29fdc448 Translated using Weblate (Uzbek)
Currently translated at 4.3% (28 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/uz/
2024-02-17 19:39:44 +01:00
Elvis
d16f0dd3f6 Translated using Weblate (Russian)
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-02-17 19:39:43 +01:00
Elvis
d023c97049 Added translation using Weblate (Uzbek) 2024-02-17 19:08:49 +01:00
jonnysemon
73c8d63f0e Translated using Weblate (Arabic)
Currently translated at 99.3% (643 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ar/
2024-02-07 11:52:29 +01:00
Salif Mehmed
30709de7e2 Translated using Weblate (Bulgarian)
Currently translated at 20.0% (130 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-02-06 23:01:53 +01:00
Salif Mehmed
c3e560766e Translated using Weblate (Bulgarian)
Currently translated at 17.9% (116 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/bg/
2024-02-05 13:01:51 +01:00
Aleksandar Sazdanović
7c7889e87e Translated using Weblate (Serbian (latin))
Currently translated at 37.0% (240 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sr_Latn/
2024-02-04 12:01:59 +01:00
Pere O
6547ccecdd Translated using Weblate (Catalan)
Currently translated at 97.9% (634 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ca/
2024-02-03 09:35:48 +01:00
Pere O
d467a591b0 Translated using Weblate (Catalan)
Currently translated at 65.3% (423 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ca/
2024-02-01 23:01:52 +01:00
solokot
42613ff480 Translated using Weblate (Russian)
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2024-01-21 10:01:50 +01:00
NicolaeFericitu
3a3d4b9e54 Translated using Weblate (Romanian)
Currently translated at 99.6% (645 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2024-01-15 17:06:12 +01:00
NicolaeFericitu
0b5c0bcf74 Translated using Weblate (Romanian)
Currently translated at 88.4% (572 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2024-01-09 23:06:34 +00:00
Deleted User
5937f009e1 Translated using Weblate (Danish)
Currently translated at 98.4% (637 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/da/
2024-01-09 23:06:13 +00:00
SC
c7f3d2a64e Translated using Weblate (Portuguese)
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt/
2024-01-06 17:06:11 +01:00
NicolaeFericitu
41263307d7 Translated using Weblate (Romanian)
Currently translated at 78.0% (505 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2024-01-06 17:06:11 +01:00
SC
f2ff52477e Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/pt_PT/
2024-01-06 17:06:11 +01:00
Mike
6baa5a0730 Translated using Weblate (Slovak)
Currently translated at 95.0% (615 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/sk/
2023-12-31 18:36:23 +01:00
ERYpTION
5a5cb8c866 Translated using Weblate (Danish)
Currently translated at 96.9% (627 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/da/
2023-12-08 20:03:49 +00:00
Kenny
a3a78366f7 Translated using Weblate (Romanian)
Currently translated at 76.3% (494 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ro/
2023-12-06 15:11:11 +01:00
ngocanhtve
d936292ed9 Updated vi\strings.xml
Complete the Vietnamese translation.
2023-12-01 21:35:47 +07:00
ngocanhtve
a3ded18f59 Translated using Weblate (Vietnamese)
Currently translated at 38.3% (248 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/vi/
2023-12-01 14:14:44 +01:00
Avi Parshan
0969135f7f Translated using Weblate (Hebrew)
Currently translated at 44.9% (291 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/he/
2023-11-27 18:02:20 +00:00
Rilele
7e1c1a6324 Fix German translation 2023-11-25 13:02:36 +01:00
J-Jamet
aa43dd2a49 fix: Upgrade to 4.1.0 2023-11-10 23:00:34 +01:00
J-Jamet
81fe9b6fc2 fix: phone field recognition 2023-11-10 22:56:23 +01:00
J-Jamet
6807fdc1cc Merge tag '4.0.5' into develop
4.0.5
2023-11-09 08:16:36 +01:00
J-Jamet
ac1590810f Merge branch 'release/4.0.5' 2023-11-09 08:16:29 +01:00
J-Jamet
9dd4d77535 fix: upgrade version 2023-11-09 08:06:30 +01:00
J-Jamet
c7aa6a9d96 fix: revert #1490 2023-11-09 08:02:16 +01:00
J-Jamet
fc56db2f83 fix: Autofill recognition 2023-11-08 20:43:50 +01:00
MDP43140
c58e56257d Fix Indonesia language
language code for Indonesia is apparently `in` instead of `id` in Java, thus makes the app displays default English language for users with Indonesian language. a simple folder rename should hopefully fix this
2023-11-07 23:27:49 +07:00
solokot
b27eb280a8 Translated using Weblate (Russian)
Currently translated at 100.0% (647 of 647 strings)

Translation: KeePassDX/Strings
Translate-URL: https://hosted.weblate.org/projects/keepass-dx/strings/ru/
2023-11-07 10:11:49 +01:00
J-Jamet
78c7f4078c Merge tag '4.0.4' into develop
4.0.4
2023-11-07 00:33:28 +01:00
J-Jamet
0474e5b1fe Merge branch 'Sandelinos-themed-icons' into develop 2022-09-29 16:44:43 +02:00
309 changed files with 10849 additions and 3013 deletions

View File

@@ -1,3 +1,47 @@
KeePassDX(4.1.2)
* Fix URL search #1940 #1946 #2003 #2040 #2044
* Fix Autofill popup #2054
* Fix Group notes #2053
* Fix Dialog background #2005 #2004 (Thx @codokie)
* Fix OTP configuration #2042 #2065 (Thx @Dev-ClayP)
* Fix small UI elements #1987 #2007 (Thx @ymcx)
* RTL layout support #2021 (Thx @codokie)
* App Metadata to translation #1823
KeePassDX(4.1.1)
* Fix date parser #1933
* Fix domain search #1820 #1936
KeePassDX(4.1.0)
* Generate keyfile #1290
* Hide template group #1894
* Group count sum recursively #421
* Fix date fields #1695 #1710
* Fix distinct domain names #1105 #1820
* Resets the advanced unlock expiration #1600
* Password entropy #1490 #1355
* Upgrade to API 34 (Android 14) #1730
* Small fixes #1711 #1831 #1780 #1821 #1863 #1889 #1289 #1600 #1467 #1870
KeePassDX(4.0.8)
* Fix graphical bug that prevented databases from being opened on some versions of Android #1848 #1850
KeePassDX(4.0.7)
* Prevent 0 Byte file with cache during a save exception #1620 #1594 #1680
* Fix inline suggestions in keyboard #1840
* Fix broken links by default #1755
* Fix UX by allowing validation in entry edition #1770
* Fix small bugs #1709
KeePassDX(4.0.6)
* Fix form filled recognition #1508 #1735 #1508 #1790 #1783 #1797 #1801 #1802 #1804 #1665
* Fix translations #1707 #1683 #1712
* Update APK verifier #1810
KeePassDX(4.0.5)
* Fix form filled recognition #1572 #1508
* Rollback password color #1686 #1490
KeePassDX(4.0.4)
* Fix form filled recognition #1572 #1677
* Fix device unlock #1682

View File

@@ -1,29 +1,32 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.6)
CFPropertyList (3.0.7)
base64
nkf
rexml
addressable (2.8.4)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.794.0)
aws-sdk-core (3.180.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
aws-eventstream (1.3.0)
aws-partitions (1.1009.0)
aws-sdk-core (3.213.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.132.0)
aws-sdk-core (~> 3, >= 3.179.0)
aws-sdk-kms (1.95.0)
aws-sdk-core (~> 3, >= 3.210.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.171.0)
aws-sdk-core (~> 3, >= 3.210.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.10.1)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
@@ -32,12 +35,11 @@ GEM
declarative (0.0.20)
digest-crc (0.6.5)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.100.0)
faraday (1.10.3)
excon (0.112.0)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
@@ -58,22 +60,22 @@ GEM
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.2.7)
fastlane (2.214.0)
fastimage (2.3.1)
fastlane (2.225.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
colored (~> 1.2)
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
@@ -82,34 +84,39 @@ GEM
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
fastlane-sirp (>= 1.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, < 2.0.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
optparse (>= 0.1.1, < 1.0.0)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
security (= 0.1.5)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
terminal-table (~> 3)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-plugin-versioning_android (0.1.1)
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.46.0)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.1)
google-apis-core (0.11.3)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
@@ -117,64 +124,63 @@ GEM
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.7.1)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.1)
google-cloud-storage (1.44.0)
google-cloud-errors (1.4.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.19.0)
google-apis-storage_v1 (~> 0.31.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.7.0)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.5)
http-cookie (1.0.7)
domain_name (~> 0.5)
httpclient (2.8.3)
jmespath (1.6.2)
json (2.6.3)
jwt (2.7.1)
memoist (0.16.2)
mini_magick (4.12.0)
mini_mime (1.1.2)
json (2.8.2)
jwt (2.9.3)
base64
mini_magick (4.13.2)
mini_mime (1.1.5)
multi_json (1.15.0)
multipart-post (2.3.0)
nanaimo (0.3.0)
multipart-post (2.4.1)
nanaimo (0.4.0)
naturally (2.2.1)
optparse (0.1.1)
nkf (0.2.0)
optparse (0.6.0)
os (1.1.4)
plist (3.7.0)
public_suffix (5.0.3)
rake (13.0.6)
plist (3.7.1)
public_suffix (6.0.1)
rake (13.2.1)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.6)
rexml (3.3.9)
rouge (2.0.7)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
signet (0.17.0)
security (0.1.5)
signet (0.19.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
@@ -182,28 +188,25 @@ GEM
simctl (1.6.10)
CFPropertyList
naturally
sysrandom (1.0.5)
terminal-notifier (2.0.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.1)
tty-screen (0.8.2)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.8.0)
webrick (1.8.1)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.22.0)
xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
nanaimo (~> 0.4.0)
rexml (>= 3.3.6, < 4.0)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1)
@@ -217,4 +220,4 @@ DEPENDENCIES
fastlane-plugin-versioning_android
BUNDLED WITH
2.1.4
2.5.10

View File

@@ -1,8 +1,8 @@
# Android KeePassDX
<img src="https://raw.githubusercontent.com/Kunzisoft/KeePassDX/master/art/icon.png"> **Lightweight password manager for Android**, KeePassDX allows editing encrypted data in a single file in KeePass format and fill in the forms in a secure way.
<img alt="KeePassDX Icon" src="https://raw.githubusercontent.com/Kunzisoft/KeePassDX/master/art/icon.png"> **Lightweight password safe and manager for Android**, KeePassDX allows editing encrypted data in a single file in KeePass format and fill in the forms in a secure way.
<img src="https://raw.githubusercontent.com/Kunzisoft/KeePassDX/master/art/screen.jpg" width="220">
<img alt="KeePassDX Screenshot" src="https://raw.githubusercontent.com/Kunzisoft/KeePassDX/master/art/screen.jpg" width="220">
### Features
@@ -48,17 +48,39 @@ Optional visual styles are accessible after a contribution (and a congratulatory
## Download
*[F-Droid](https://f-droid.org/packages/com.kunzisoft.keepass.libre/) is the recommended way of installing, a libre software project that verifies that all the libraries and app code is libre software.*
*[F-Droid](https://f-droid.org/packages/com.kunzisoft.keepass.libre/) is the recommended way of installing, a libre software project that verifies all the libraries and app code is libre software.*
[<img src="https://f-droid.org/badge/get-it-on.png"
alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/com.kunzisoft.keepass.libre/)
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png"
alt="Get it on Google Play"
height="80">](https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.free)
[<img src="https://raw.githubusercontent.com/Kunzisoft/Github-badge/main/get-it-on-github.png"
alt="Get it on Github"
height="80">](https://github.com/Kunzisoft/KeePassDX/releases)
| Source | Status | [Version](https://github.com/Kunzisoft/KeePassDX/wiki/FAQ#why-a-libre-and-free-version) |
|--------|--------|---------|
| [Google Play](https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.free) | ![Google Play Release](https://img.shields.io/endpoint?color=blue&logo=google-play&logoColor=green&url=https%3A%2F%2Fplay.cuzi.workers.dev%2Fplay%3Fi%3Dcom.kunzisoft.keepass.free%26gl%3DUS%26hl%3Den%26l%3DGoogle%2520Play%26m%3D%24version) | Free + [Pro](https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro) |
| [F-Droid](https://f-droid.org/en/packages/com.kunzisoft.keepass.libre/) | ![F-Droid Version](https://img.shields.io/f-droid/v/com.kunzisoft.keepass.libre?logo=F-Droid&label=F-Droid) | Libre |
| [IzzyOnDroid](https://apt.izzysoft.de/fdroid/index/apk/com.kunzisoft.keepass.free) | ![IzzyOnDroid Version](https://img.shields.io/endpoint?&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAADAFBMVEUA0////wAA0v8A0v8A0////wD//wAFz/QA0/8A0/8A0/8A0/8A0v///wAA0/8A0/8A0/8A0/8A0//8/gEA0/8A0/8B0/4A0/8A0/8A0/+j5QGAwwIA0//C9yEA0/8A0/8A0/8A0/8A0/8A0/+n4SAA0/8A0/8A0/+o6gCw3lKt7QCv5SC+422b3wC19AC36zAA0/+d1yMA0/8A0/+W2gEA0/+w8ACz8gCKzgG7+QC+9CFLfwkA0/8A0////wAA0/8A0/8A0/8A0/+f2xym3iuHxCGq5BoA1P+m2joI0vONyiCz3mLO7oYA0/8M1Piq3Ei78CbB8EPe8LLj9Ly751G77zWQ1AC96UYC0fi37CL//wAA0/8A0////wD//wCp3jcA0/+j3SGj2i/I72Sx4zHE8FLB8zak1kYeycDI6nRl3qEA0/7V7psA0v6WzTa95mGi2RvB5XkPy9zH5YJ3uwGV1yxVihRLiwdxtQ1ZkAf//wD//wD//wD//wD//wCn5gf//wD//wD//wD//wD//wAA0/+h4A3R6p8A0/+X1w565OD6/ARg237n9csz2vPz+gNt37V/vifO8HW68B/L6ZOCwxXY8KRQsWRzhExAtG/E612a1Rd/pTBpmR9qjysduKVhmxF9mTY51aUozK+CsDSA52T//wD//wAA0////wD//wBJ1JRRxFWjzlxDyXRc0pGT1wCG0CWB3VGUzSTh8h6c0TSr5CCJ5FFxvl6s4H3m8xML0/DA5CvK51EX1N+Y2gSt4Dag3ChE3fax2ki68yO57NF10FRZnUPl88eJxhuCxgCz5EOLwEGf1DFutmahzGW98x0W1PGk3R154MHE6bOn69qv3gy92oG90o+Hn07B7rhCmiyMwECv1nO+0pQfwrCo57xF2daXsVhKrEdenQAduaee1Bsjr42z5D9RoCXy+QNovXpy2Z5MtWDO/TiSukaF3UtE1K6j3B4YwLc5wXlzpyIK0u5zy3uJqg4pu5RTpkZmpVKyAP8A0wBHcExHcEyBUSeEAAABAHRSTlP///9F9wjAAxD7FCEGzBjd08QyEL39abMd6///8P/ZWAnipIv/cC6B//7////////L/1Dz/0D///////86/vYnquY3/v///5T//v///17///////////////84S3QNB/8L/////////////7r/////NP////9l/////wPD4yis/x7Ym2lWSP+em////0n////////v///////////////////7//7pdGN3Urr6/+v/6aT////+//H/o2P/1v+7r7jp4PM/3p4g////g///K///481LxO///v////9w////8v/////9/p3J///a+P9v/5KR/+n///+p/xf//8P//wAAe7FyaAAABCZJREFUSMdj+E8iYKBUgwIHnwQ3N7cEHxcH+///VayoAE0Dh41qR7aBnCIQ8MsJKHH9/99czYYMWlA0cIkJGjMgAKfq//9RNYzIgLcBWYOTiCgDMhDn+B9bh6LebiWyH6L5UZQzONoAHWSHoqEpDkkDsyKqelv1//9rG1HUN9YihZK9AKp6BkG+/6xNqA5ajhSsCkrIipmYGGRa//9vQXVQXSySBnkWJOUMfn5Myuz/G3hR1NdEIUUchwiy+bkTsg4dbW/fu6W/e1c3XMMy5JiOZkFxUFZo74mgKTqaKXu0+2HqVwkja3BH9kFu361JwcHTfPJD4mdfe8ULAdVRyGlJAcVFfg+CQOozZ4XrJ85+JgwBsVXIGriQw5Tp4ZScezd8JiWnBupru30qwJZa+ZAjmWlC8fUZM4qB6kPnLNSPLMWqQQ5ZQ5aOzs1HmamBaQHzFs6y+qAmJCTE8f9/QgKSBg4DJPWc6zVDQkIC09JkZSPD38kukpExFpT4z67uYI/QwCOOCCK/izvu5CWl6AcEWMnKWml7LWbKZfH9/99UkknQHhGsynDz+65eWXv3/JmJrq5eXienVlRUfH/z8VvCf45soKQIH1yDEQsszrp6gwq9C73T87xcXadKl5TkFev4A/2tygmSBqYXqAYJmK+ZuoJydDR1vP09DA0NOy2kpdML81+U/heCpH1JU3jig7lJ5nKOT4i/t6ZHkqGzs4lJmIVHfrj+JR4HqLQSD0yDkCNEpGNn5ix9D03/eJdElTZdKV2TpNOhkwt8YUlNUgimgV0dLMBvf1gz1MolPd5FRcVNSkpDQ8owJeBCDyIhrIDnOD5QcuIU+3/2QKSs9laQ+noNLS0zLWdtqyP7mBAFAw88TwsJgMuJYweBGjYngtWbmeuZOW+bvNQToUFOAlFqOBk4Ov3/L7Z60/aN0p1tUhpa5nqWlub7C3p2I9QzyAghlUvczOz/1fhzPT3XSIfpSmmYAdVbmm1gV0dSz8DSilpUQsqCddIWIA3meuZaJqdMJZEzl6gRqgZIWZAxUdoizERXN8yi5MltcZTChzMaRQM3JNUWHS8rL/+yaPGvMmvr5ywoGoxtkDWwQ+Pb89ycBeWfGSJeL/la+RS1eOPnRtbQKgMRjZg+t8x6PkP273nWQAoFOPAgaeAThKXAmXMrK39Kmr5fsuBlBqoXfJGLe3VbmHjG9Mczi9T//3h7vygXtcDlQtJg44iQiIjIBRbGPO7gghPJy0ZIxT2HOLIUgwxQzsgYrUR350HSIMaJLidhgKY+mw+pflBDrX8E7OGBjPCAPc76gQFSTqAIiYrb/8dRP4CyosJ/rmwU5XIxHMilt4QBJwsSkBMClxOQULBlkRRwEONmR2kJcDGjADX2/+xO8r5iqjExqmLyrWpcPFRta1BfAwCtyN3XpuJ4RgAAAABJRU5ErkJggg==&url=https://apt.izzysoft.de/fdroid/api/v1/shield/com.kunzisoft.keepass.free&label=IzzyOnDroid) | Free |
| [GitHub](https://github.com/Kunzisoft/KeePassDX/releases) / [Obtainium](https://github.com/ImranR98/Obtainium) | ![GitHub Release](https://img.shields.io/github/v/release/Kunzisoft/KeePassDX?include_prereleases&logo=GitHub&label=GitHub) | Free & Libre |
## Package authenticity from GitHub
- Download the app from [GitHub releases](https://github.com/Kunzisoft/KeePassDX/releases/latest)
- Install [`apksigner`](https://developer.android.com/tools/apksigner) from [Android Studio](https://developer.android.com/studio)
- Open the directory where you saved the downloaded file in the Terminal
- Make sure that you have `apksigner` installed by running:
```shell
apksigner --version
```
- Depending on the APK file you downloaded, run:
```shell
apksigner verify --verbose --print-certs -min-sdk-version 24 KeePassDX-*.apk
```
You should get this output :
```shell
Verified using v2 scheme (APK Signature Scheme v2): true
...
Number of signers: 1
Signer #1 certificate SHA-256 digest: 7d55b8af210381aabf960f07e17cf7857b6d2a642ca2da6bf0bdf1b200362f04
...
Signer #1 public key SHA-256 digest: 5d261d3176db1e077b80112824d9390167f3be0561827e42112ed6b71192db81
```
If it's the case, this means that the APK was well built by the author of KeePassDX.
## Frequently Asked Questions
@@ -74,7 +96,7 @@ Other questions? You can read the [FAQ](https://github.com/Kunzisoft/KeePassDX/w
## License
Copyright © 2023 Jeremy Jamet / [Kunzisoft](https://www.kunzisoft.com).
Copyright © 2025 Jeremy Jamet / [Kunzisoft](https://www.kunzisoft.com).
This file is part of KeePassDX.

View File

@@ -5,15 +5,14 @@ apply plugin: 'kotlin-kapt'
android {
namespace 'com.kunzisoft.keepass'
compileSdkVersion 33
buildToolsVersion "33.0.2"
compileSdkVersion 34
defaultConfig {
applicationId "com.kunzisoft.keepass"
minSdkVersion 15
targetSdkVersion 33
versionCode = 127
versionName = "4.0.4"
targetSdkVersion 34
versionCode = 134
versionName = "4.1.2"
multiDexEnabled true
testApplicationId = "com.kunzisoft.keepass.tests"
@@ -36,6 +35,13 @@ android {
}
}
dependenciesInfo {
// Disables dependency metadata when building APKs.
includeInApk = false
// Disables dependency metadata when building Android App Bundles.
includeInBundle = false
}
flavorDimensions "version"
productFlavors {
libre {
@@ -85,12 +91,15 @@ android {
}
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_17
sourceCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "1.8"
jvmTarget = "17"
}
buildFeatures {
buildConfig true
}
}
@@ -120,7 +129,7 @@ dependencies {
// Autofill
implementation "androidx.autofill:autofill:1.1.0"
// Time
implementation 'joda-time:joda-time:2.10.13'
implementation 'joda-time:joda-time:2.13.0'
// Color
implementation 'com.github.Kunzisoft:AndroidClearChroma:2.6'
// Education
@@ -137,5 +146,4 @@ dependencies {
// Tests
androidTestImplementation "androidx.test:runner:$android_test_version"
androidTestImplementation "androidx.test:rules:$android_test_version"
}

View File

@@ -9,6 +9,10 @@
android:anyDensity="true" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
<uses-permission
android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission
@@ -39,6 +43,7 @@
android:backupAgent="com.kunzisoft.keepass.backup.SettingsBackupAgent"
android:largeHeap="true"
android:resizeableActivity="true"
android:supportsRtl="true"
android:theme="@style/KeepassDXStyle.Night"
tools:targetApi="s">
<meta-data
@@ -118,7 +123,7 @@
android:name="com.kunzisoft.keepass.activities.GroupActivity"
android:exported="false"
android:configChanges="keyboardHidden"
android:windowSoftInputMode="adjustPan">
android:windowSoftInputMode="adjustResize">
<meta-data
android:name="android.app.default_searchable"
android:value="com.kunzisoft.keepass.search.SearchResults"
@@ -145,7 +150,7 @@
android:configChanges="keyboardHidden" />
<activity
android:name="com.kunzisoft.keepass.activities.EntryEditActivity"
android:windowSoftInputMode="adjustPan" />
android:windowSoftInputMode="adjustResize" />
<!-- About and Settings -->
<activity
android:name="com.kunzisoft.keepass.activities.AboutActivity"
@@ -197,18 +202,27 @@
<service
android:name="com.kunzisoft.keepass.services.DatabaseTaskNotificationService"
android:foregroundServiceType="dataSync"
android:enabled="true"
android:exported="false" />
<service
android:name="com.kunzisoft.keepass.services.AttachmentFileNotificationService"
android:foregroundServiceType="dataSync"
android:enabled="true"
android:exported="false" />
<service
android:name="com.kunzisoft.keepass.services.ClipboardEntryNotificationService"
android:foregroundServiceType="specialUse"
android:enabled="true"
android:exported="false" />
<service
android:name="com.kunzisoft.keepass.services.KeyboardEntryNotificationService"
android:foregroundServiceType="specialUse"
android:enabled="true"
android:exported="false" />
<service
android:name="com.kunzisoft.keepass.services.AdvancedUnlockNotificationService"
android:foregroundServiceType="specialUse"
android:enabled="true"
android:exported="false" />
<!-- Receiver for Autofill -->
@@ -235,10 +249,6 @@
<action android:name="android.view.InputMethod" />
</intent-filter>
</service>
<service
android:name="com.kunzisoft.keepass.services.KeyboardEntryNotificationService"
android:enabled="true"
android:exported="false" />
<receiver
android:name="com.kunzisoft.keepass.receivers.DexModeReceiver"
android:exported="true">

View File

@@ -38,7 +38,11 @@ import android.graphics.RectF
import android.graphics.drawable.BitmapDrawable
import android.os.Build
import android.util.TypedValue
import android.view.*
import android.view.GestureDetector
import android.view.MotionEvent
import android.view.ScaleGestureDetector
import android.view.View
import android.view.ViewGroup
import android.view.animation.AccelerateDecelerateInterpolator
import android.view.animation.DecelerateInterpolator
import android.view.animation.Interpolator
@@ -202,7 +206,7 @@ class Loupe(imageView: ImageView, container: ViewGroup) : View.OnTouchListener,
override fun onDown(e: MotionEvent): Boolean = true
override fun onScroll(
e1: MotionEvent,
e1: MotionEvent?,
e2: MotionEvent,
distanceX: Float,
distanceY: Float
@@ -220,7 +224,7 @@ class Loupe(imageView: ImageView, container: ViewGroup) : View.OnTouchListener,
}
override fun onFling(
e1: MotionEvent,
e1: MotionEvent?,
e2: MotionEvent,
velocityX: Float,
velocityY: Float

View File

@@ -20,10 +20,12 @@
package com.kunzisoft.keepass.activities
import android.content.pm.PackageManager.NameNotFoundException
import android.os.Build
import android.os.Bundle
import android.text.method.LinkMovementMethod
import android.util.Log
import android.view.MenuItem
import android.view.View
import android.widget.TextView
import androidx.appcompat.widget.Toolbar
import androidx.core.text.HtmlCompat
@@ -76,6 +78,9 @@ class AboutActivity : StylishActivity() {
movementMethod = LinkMovementMethod.getInstance()
text = HtmlCompat.fromHtml(getString(R.string.html_about_licence, DateTime().year),
HtmlCompat.FROM_HTML_MODE_LEGACY)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
textDirection = View.TEXT_DIRECTION_ANY_RTL
}
}
findViewById<TextView>(R.id.activity_about_privacy_text).apply {

View File

@@ -41,11 +41,9 @@ import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.database.helper.SearchHelper
import com.kunzisoft.keepass.model.RegisterInfo
import com.kunzisoft.keepass.model.SearchInfo
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.utils.WebDomain
import com.kunzisoft.keepass.utils.getParcelableCompat
import com.kunzisoft.keepass.utils.getParcelableExtraCompat
import com.kunzisoft.keepass.utils.WebDomain
import java.lang.RuntimeException
@RequiresApi(api = Build.VERSION_CODES.O)
class AutofillLauncherActivity : DatabaseModeActivity() {
@@ -126,10 +124,11 @@ class AutofillLauncherActivity : DatabaseModeActivity() {
if (autofillComponent == null) {
setResult(Activity.RESULT_CANCELED)
finish()
} else if (!KeeAutofillService.autofillAllowedFor(searchInfo.applicationId,
PreferencesUtil.applicationIdBlocklist(this))
|| !KeeAutofillService.autofillAllowedFor(searchInfo.webDomain,
PreferencesUtil.webDomainBlocklist(this))) {
} else if (!KeeAutofillService.autofillAllowedFor(
applicationId = searchInfo.applicationId,
webDomain = searchInfo.webDomain,
context = this
)) {
showBlockRestartMessage()
setResult(Activity.RESULT_CANCELED)
finish()
@@ -166,10 +165,11 @@ class AutofillLauncherActivity : DatabaseModeActivity() {
private fun launchRegistration(database: ContextualDatabase?,
searchInfo: SearchInfo,
registerInfo: RegisterInfo?) {
if (!KeeAutofillService.autofillAllowedFor(searchInfo.applicationId,
PreferencesUtil.applicationIdBlocklist(this))
|| !KeeAutofillService.autofillAllowedFor(searchInfo.webDomain,
PreferencesUtil.webDomainBlocklist(this))) {
if (KeeAutofillService.autofillAllowedFor(
applicationId = searchInfo.applicationId,
webDomain = searchInfo.webDomain,
context = this
)) {
showBlockRestartMessage()
setResult(Activity.RESULT_CANCELED)
} else {

View File

@@ -30,7 +30,6 @@ import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ProgressBar
import android.widget.Spinner
@@ -73,6 +72,7 @@ import com.kunzisoft.keepass.database.element.template.Template
import com.kunzisoft.keepass.education.EntryEditActivityEducation
import com.kunzisoft.keepass.magikeyboard.MagikeyboardService
import com.kunzisoft.keepass.model.AttachmentState
import com.kunzisoft.keepass.model.DataTime
import com.kunzisoft.keepass.model.EntryAttachmentState
import com.kunzisoft.keepass.model.RegisterInfo
import com.kunzisoft.keepass.model.SearchInfo
@@ -87,6 +87,7 @@ import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.tasks.ActionRunnable
import com.kunzisoft.keepass.tasks.AttachmentFileBinderManager
import com.kunzisoft.keepass.timeout.TimeoutHelper
import com.kunzisoft.keepass.utils.TimeUtil.datePickerToDataDate
import com.kunzisoft.keepass.utils.UriUtil.getDocumentFile
import com.kunzisoft.keepass.utils.getParcelableExtraCompat
import com.kunzisoft.keepass.view.ToolbarAction
@@ -96,7 +97,7 @@ import com.kunzisoft.keepass.view.asError
import com.kunzisoft.keepass.view.hideByFading
import com.kunzisoft.keepass.view.setTransparentNavigationBar
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
import com.kunzisoft.keepass.view.updateLockPaddingLeft
import com.kunzisoft.keepass.view.updateLockPaddingStart
import com.kunzisoft.keepass.viewmodels.ColorPickerViewModel
import com.kunzisoft.keepass.viewmodels.EntryEditViewModel
import java.util.UUID
@@ -108,8 +109,8 @@ class EntryEditActivity : DatabaseLockActivity(),
ReplaceFileDialogFragment.ActionChooseListener {
// Views
private var footer: ViewGroup? = null
private var container: ViewGroup? = null
private var footer: View? = null
private var container: View? = null
private var coordinatorLayout: CoordinatorLayout? = null
private var scrollView: NestedScrollView? = null
private var templateSelectorSpinner: Spinner? = null
@@ -179,8 +180,8 @@ class EntryEditActivity : DatabaseLockActivity(),
// To apply fit window with transparency
setTransparentNavigationBar(applyToStatusBar = true) {
container?.applyWindowInsets(WindowInsetPosition.TOP)
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM)
container?.applyWindowInsets(WindowInsetPosition.TOP_BOTTOM_IME)
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM_IME)
}
stopService(Intent(this, ClipboardEntryNotificationService::class.java))
@@ -301,7 +302,7 @@ class EntryEditActivity : DatabaseLockActivity(),
// Launch the time picker
MaterialTimePicker.Builder().build().apply {
addOnPositiveButtonClickListener {
mEntryEditViewModel.selectTime(this.hour, this.minute)
mEntryEditViewModel.selectTime(DataTime(this.hour, this.minute))
}
show(supportFragmentManager, "TimePickerFragment")
}
@@ -309,7 +310,7 @@ class EntryEditActivity : DatabaseLockActivity(),
// Launch the date picker
MaterialDatePicker.Builder.datePicker().build().apply {
addOnPositiveButtonClickListener {
mEntryEditViewModel.selectDate(it)
mEntryEditViewModel.selectDate(datePickerToDataDate(it))
}
show(supportFragmentManager, "DatePickerFragment")
}
@@ -502,7 +503,7 @@ class EntryEditActivity : DatabaseLockActivity(),
}
// Padding if lock button visible
entryEditAddToolBar?.updateLockPaddingLeft()
entryEditAddToolBar?.updateLockPaddingStart()
mAttachmentFileBinderManager?.apply {
registerProgressTask()

View File

@@ -68,11 +68,10 @@ import com.kunzisoft.keepass.tasks.ActionRunnable
import com.kunzisoft.keepass.utils.DexUtil
import com.kunzisoft.keepass.utils.MagikeyboardUtil
import com.kunzisoft.keepass.utils.MenuUtil
import com.kunzisoft.keepass.utils.getParcelableCompat
import com.kunzisoft.keepass.utils.parseUri
import com.kunzisoft.keepass.utils.UriUtil.isContributingUser
import com.kunzisoft.keepass.utils.UriUtil.openUrl
import com.kunzisoft.keepass.utils.allowCreateDocumentByStorageAccessFramework
import com.kunzisoft.keepass.utils.getParcelableCompat
import com.kunzisoft.keepass.view.asError
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
import com.kunzisoft.keepass.viewmodels.DatabaseFilesViewModel
@@ -180,17 +179,9 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
}
fileDatabaseHistoryRecyclerView.adapter = mAdapterDatabaseHistory
// Load default database if not an orientation change
if (!(savedInstanceState != null
&& savedInstanceState.containsKey(EXTRA_STAY)
&& savedInstanceState.getBoolean(EXTRA_STAY, false))) {
val databasePath = PreferencesUtil.getDefaultDatabasePath(this)
databasePath?.parseUri()?.let { databaseFileUri ->
launchPasswordActivityWithPath(databaseFileUri)
} ?: run {
Log.i(TAG, "No default database to prepare")
}
// Load default database the first time
databaseFilesViewModel.doForDefaultDatabase { databaseFileUri ->
launchPasswordActivityWithPath(databaseFileUri)
}
// Retrieve the database URI provided by file manager after an orientation change
@@ -366,8 +357,6 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
// only to keep the current activity
outState.putBoolean(EXTRA_STAY, true)
// to retrieve the URI of a created database after an orientation change
outState.putParcelable(EXTRA_DATABASE_URI, mDatabaseFileUri)
}
@@ -442,7 +431,6 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
companion object {
private const val TAG = "FileDbSelectActivity"
private const val EXTRA_STAY = "EXTRA_STAY"
private const val EXTRA_DATABASE_URI = "EXTRA_DATABASE_URI"
/*

View File

@@ -84,6 +84,7 @@ import com.kunzisoft.keepass.database.helper.SearchHelper
import com.kunzisoft.keepass.database.search.SearchParameters
import com.kunzisoft.keepass.education.GroupActivityEducation
import com.kunzisoft.keepass.magikeyboard.MagikeyboardService
import com.kunzisoft.keepass.model.DataTime
import com.kunzisoft.keepass.model.GroupInfo
import com.kunzisoft.keepass.model.RegisterInfo
import com.kunzisoft.keepass.model.SearchInfo
@@ -96,6 +97,7 @@ import com.kunzisoft.keepass.tasks.ActionRunnable
import com.kunzisoft.keepass.timeout.TimeoutHelper
import com.kunzisoft.keepass.utils.BACK_PREVIOUS_KEYBOARD_ACTION
import com.kunzisoft.keepass.utils.KeyboardUtil.showKeyboard
import com.kunzisoft.keepass.utils.TimeUtil.datePickerToDataDate
import com.kunzisoft.keepass.utils.UriUtil.openUrl
import com.kunzisoft.keepass.utils.getParcelableCompat
import com.kunzisoft.keepass.utils.getParcelableExtraCompat
@@ -111,9 +113,10 @@ import com.kunzisoft.keepass.view.applyWindowInsets
import com.kunzisoft.keepass.view.hideByFading
import com.kunzisoft.keepass.view.setTransparentNavigationBar
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
import com.kunzisoft.keepass.view.updateLockPaddingLeft
import com.kunzisoft.keepass.view.updateLockPaddingStart
import com.kunzisoft.keepass.viewmodels.GroupEditViewModel
import com.kunzisoft.keepass.viewmodels.GroupViewModel
import org.joda.time.Instant
class GroupActivity : DatabaseLockActivity(),
@@ -292,10 +295,9 @@ class GroupActivity : DatabaseLockActivity(),
loadingView = findViewById(R.id.loading)
// To apply fit window with transparency
setTransparentNavigationBar {
header?.applyWindowInsets(WindowInsetPosition.TOP)
coordinatorLayout?.applyWindowInsets(WindowInsetPosition.LEGIT_TOP)
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM)
setTransparentNavigationBar(applyToStatusBar = true) {
drawerLayout?.applyWindowInsets(WindowInsetPosition.TOP_BOTTOM_IME)
footer?.applyWindowInsets(WindowInsetPosition.BOTTOM_IME)
}
lockView?.setOnClickListener {
@@ -340,8 +342,9 @@ class GroupActivity : DatabaseLockActivity(),
R.id.menu_save_copy_to -> {
mExternalFileHelper?.createDocument(
getString(R.string.database_file_name_default) +
getString(R.string.database_file_name_copy) +
mDatabase?.defaultFileExtension)
"_" +
Instant.now().toString() +
mDatabase?.defaultFileExtension)
}
R.id.menu_lock_all -> {
lockAndExit()
@@ -359,43 +362,6 @@ class GroupActivity : DatabaseLockActivity(),
searchFiltersView?.closeAdvancedFilters()
mBreadcrumbAdapter = BreadcrumbAdapter(this).apply {
// Open group on breadcrumb click
onItemClickListener = { node, _ ->
// If last item & not a virtual root group
val currentGroup = mMainGroup
if (currentGroup != null && node == currentGroup
&& (currentGroup != mDatabase?.rootGroup
|| mDatabase?.rootGroupIsVirtual == false)
) {
finishNodeAction()
launchDialogToShowGroupInfo(currentGroup)
} else {
if (mGroupFragment?.nodeActionSelectionMode == true) {
finishNodeAction()
}
mDatabase?.let { database ->
onNodeClick(database, node)
}
}
}
onLongItemClickListener = { node, position ->
val currentGroup = mMainGroup
if (currentGroup != null && node == currentGroup
&& (currentGroup != mDatabase?.rootGroup
|| mDatabase?.rootGroupIsVirtual == false)
) {
finishNodeAction()
launchDialogForGroupUpdate(currentGroup)
} else {
onItemClickListener?.invoke(node, position)
}
}
}
breadcrumbListView?.apply {
adapter = mBreadcrumbAdapter
}
// Retrieve group if defined at launch
manageIntent(intent)
@@ -476,7 +442,7 @@ class GroupActivity : DatabaseLockActivity(),
// Launch the time picker
MaterialTimePicker.Builder().build().apply {
addOnPositiveButtonClickListener {
mGroupEditViewModel.selectTime(this.hour, this.minute)
mGroupEditViewModel.selectTime(DataTime(this.hour, this.minute))
}
show(supportFragmentManager, "TimePickerFragment")
}
@@ -484,7 +450,7 @@ class GroupActivity : DatabaseLockActivity(),
// Launch the date picker
MaterialDatePicker.Builder.datePicker().build().apply {
addOnPositiveButtonClickListener {
mGroupEditViewModel.selectDate(it)
mGroupEditViewModel.selectDate(datePickerToDataDate(it))
}
show(supportFragmentManager, "DatePickerFragment")
}
@@ -617,6 +583,43 @@ class GroupActivity : DatabaseLockActivity(),
override fun onDatabaseRetrieved(database: ContextualDatabase?) {
super.onDatabaseRetrieved(database)
mBreadcrumbAdapter = BreadcrumbAdapter(this, database).apply {
// Open group on breadcrumb click
onItemClickListener = { node, _ ->
// If last item & not a virtual root group
val currentGroup = mMainGroup
if (currentGroup != null && node == currentGroup
&& (currentGroup != mDatabase?.rootGroup
|| mDatabase?.rootGroupIsVirtual == false)
) {
finishNodeAction()
launchDialogToShowGroupInfo(currentGroup)
} else {
if (mGroupFragment?.nodeActionSelectionMode == true) {
finishNodeAction()
}
mDatabase?.let { database ->
onNodeClick(database, node)
}
}
}
onLongItemClickListener = { node, position ->
val currentGroup = mMainGroup
if (currentGroup != null && node == currentGroup
&& (currentGroup != mDatabase?.rootGroup
|| mDatabase?.rootGroupIsVirtual == false)
) {
finishNodeAction()
launchDialogForGroupUpdate(currentGroup)
} else {
onItemClickListener?.invoke(node, position)
}
}
}
breadcrumbListView?.apply {
adapter = mBreadcrumbAdapter
}
mGroupEditViewModel.setGroupNamesNotAllowed(database?.groupNamesNotAllowed)
mRecyclingBinEnabled = !mDatabaseReadOnly
@@ -1127,7 +1130,7 @@ class GroupActivity : DatabaseLockActivity(),
View.GONE
}
// Padding if lock button visible
toolbarAction?.updateLockPaddingLeft()
toolbarAction?.updateLockPaddingStart()
loadGroup()
}

View File

@@ -51,7 +51,7 @@ import com.kunzisoft.keepass.utils.getParcelableExtraCompat
import com.kunzisoft.keepass.utils.UriUtil.getDocumentFile
import com.kunzisoft.keepass.utils.UriUtil.openUrl
import com.kunzisoft.keepass.view.asError
import com.kunzisoft.keepass.view.updateLockPaddingLeft
import com.kunzisoft.keepass.view.updateLockPaddingStart
import com.kunzisoft.keepass.viewmodels.IconPickerViewModel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Deferred
@@ -212,7 +212,7 @@ class IconPickerActivity : DatabaseLockActivity() {
}
// Padding if lock button visible
toolbar.updateLockPaddingLeft()
toolbar.updateLockPaddingStart()
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {

View File

@@ -18,7 +18,7 @@ import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.fragments.KeyGeneratorFragment
import com.kunzisoft.keepass.activities.legacy.DatabaseLockActivity
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.view.updateLockPaddingLeft
import com.kunzisoft.keepass.view.updateLockPaddingStart
import com.kunzisoft.keepass.viewmodels.KeyGeneratorViewModel
class KeyGeneratorActivity : DatabaseLockActivity() {
@@ -84,7 +84,7 @@ class KeyGeneratorActivity : DatabaseLockActivity() {
}
// Padding if lock button visible
toolbar.updateLockPaddingLeft()
toolbar.updateLockPaddingStart()
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {

View File

@@ -43,6 +43,7 @@ class DatabaseChangedDialogFragment : DatabaseDialogFragment() {
val oldSnapFileDatabaseInfo: SnapFileDatabaseInfo? = arguments?.getParcelableCompat(OLD_FILE_DATABASE_INFO)
val newSnapFileDatabaseInfo: SnapFileDatabaseInfo? = arguments?.getParcelableCompat(NEW_FILE_DATABASE_INFO)
val readOnlyDatabase: Boolean = arguments?.getBoolean(READ_ONLY_DATABASE) ?: true
if (oldSnapFileDatabaseInfo != null && newSnapFileDatabaseInfo != null) {
// Use the Builder class for convenient dialog construction
@@ -54,7 +55,13 @@ class DatabaseChangedDialogFragment : DatabaseDialogFragment() {
stringBuilder.append("\n\n" +oldSnapFileDatabaseInfo.toString(activity)
+ "\n\n" +
newSnapFileDatabaseInfo.toString(activity) + "\n\n")
stringBuilder.append(getString(R.string.warning_database_info_changed_options))
stringBuilder.append(getString(
if (readOnlyDatabase) {
R.string.warning_database_info_changed_options_read_only
} else {
R.string.warning_database_info_changed_options
}
))
} else {
stringBuilder.append(getString(R.string.warning_database_revoked))
}
@@ -77,15 +84,18 @@ class DatabaseChangedDialogFragment : DatabaseDialogFragment() {
const val DATABASE_CHANGED_DIALOG_TAG = "databaseChangedDialogFragment"
private const val OLD_FILE_DATABASE_INFO = "OLD_FILE_DATABASE_INFO"
private const val NEW_FILE_DATABASE_INFO = "NEW_FILE_DATABASE_INFO"
private const val READ_ONLY_DATABASE = "READ_ONLY_DATABASE"
fun getInstance(oldSnapFileDatabaseInfo: SnapFileDatabaseInfo,
newSnapFileDatabaseInfo: SnapFileDatabaseInfo
newSnapFileDatabaseInfo: SnapFileDatabaseInfo,
readOnly: Boolean
)
: DatabaseChangedDialogFragment {
val fragment = DatabaseChangedDialogFragment()
fragment.arguments = Bundle().apply {
putParcelable(OLD_FILE_DATABASE_INFO, oldSnapFileDatabaseInfo)
putParcelable(NEW_FILE_DATABASE_INFO, newSnapFileDatabaseInfo)
putBoolean(READ_ONLY_DATABASE, readOnly)
}
return fragment
}

View File

@@ -1,11 +1,14 @@
package com.kunzisoft.keepass.activities.dialogs
import android.os.Bundle
import android.view.View
import android.view.WindowManager.LayoutParams.FLAG_SECURE
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.activityViewModels
import com.kunzisoft.keepass.activities.legacy.DatabaseRetrieval
import com.kunzisoft.keepass.activities.legacy.resetAppTimeoutWhenViewTouchedOrFocused
import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.tasks.ActionRunnable
import com.kunzisoft.keepass.timeout.TimeoutHelper
import com.kunzisoft.keepass.viewmodels.DatabaseViewModel
@@ -29,6 +32,18 @@ abstract class DatabaseDialogFragment : DialogFragment(), DatabaseRetrieval {
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Screenshot mode or hide views
context?.let {
if (PreferencesUtil.isScreenshotModeEnabled(it)) {
dialog?.window?.clearFlags(FLAG_SECURE)
} else {
dialog?.window?.setFlags(FLAG_SECURE, FLAG_SECURE)
}
}
}
@Suppress("DEPRECATION")
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)

View File

@@ -45,7 +45,6 @@ import com.kunzisoft.keepass.view.InheritedCompletionView
import com.kunzisoft.keepass.view.TagsCompletionView
import com.kunzisoft.keepass.viewmodels.GroupEditViewModel
import com.tokenautocomplete.FilteredArrayAdapter
import org.joda.time.DateTime
class GroupEditDialogFragment : DatabaseDialogFragment() {
@@ -90,27 +89,21 @@ class GroupEditDialogFragment : DatabaseDialogFragment() {
mPopulateIconMethod?.invoke(iconButtonView, mGroupInfo.icon)
}
mGroupEditViewModel.onDateSelected.observe(this) { dateMilliseconds ->
mGroupEditViewModel.onDateSelected.observe(this) { date ->
// Save the date
mGroupInfo.expiryTime = DateInstant(
DateTime(mGroupInfo.expiryTime.date)
.withMillis(dateMilliseconds)
.toDate())
mGroupInfo.expiryTime.setDate(date.year, date.month, date.day)
expirationView.dateTime = mGroupInfo.expiryTime
if (expirationView.dateTime.type == DateInstant.Type.DATE_TIME) {
val instantTime = DateInstant(mGroupInfo.expiryTime.date, DateInstant.Type.TIME)
// Trick to recall selection with time
mGroupEditViewModel.requestDateTimeSelection(instantTime)
mGroupEditViewModel.requestDateTimeSelection(
DateInstant(mGroupInfo.expiryTime.instant, DateInstant.Type.TIME)
)
}
}
mGroupEditViewModel.onTimeSelected.observe(this) { viewModelTime ->
// Save the time
mGroupInfo.expiryTime = DateInstant(
DateTime(mGroupInfo.expiryTime.date)
.withHourOfDay(viewModelTime.hours)
.withMinuteOfHour(viewModelTime.minutes)
.toDate(), mGroupInfo.expiryTime.type)
mGroupInfo.expiryTime.setTime(viewModelTime.hour, viewModelTime.minute)
expirationView.dateTime = mGroupInfo.expiryTime
}
@@ -255,11 +248,7 @@ class GroupEditDialogFragment : DatabaseDialogFragment() {
private fun retrieveGroupInfoFromViews() {
mGroupInfo.title = nameTextView.text.toString()
// Only if there
val newNotes = notesTextView.text.toString()
if (newNotes.isNotEmpty()) {
mGroupInfo.notes = newNotes
}
mGroupInfo.notes = notesTextView.text?.toString()
mGroupInfo.expires = expirationView.activation
mGroupInfo.expiryTime = expirationView.dateTime
mGroupInfo.searchable = searchableView.getValue()

View File

@@ -43,8 +43,13 @@ import com.kunzisoft.keepass.utils.UriUtil.getDocumentFile
import com.kunzisoft.keepass.utils.UriUtil.openUrl
import com.kunzisoft.keepass.view.HardwareKeySelectionView
import com.kunzisoft.keepass.view.KeyFileSelectionView
import com.kunzisoft.keepass.view.PassKeyView
import com.kunzisoft.keepass.view.PasswordEditView
import com.kunzisoft.keepass.view.applyFontVisibility
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.security.SecureRandom
class SetMainCredentialDialogFragment : DatabaseDialogFragment() {
@@ -55,11 +60,12 @@ class SetMainCredentialDialogFragment : DatabaseDialogFragment() {
private lateinit var rootView: View
private lateinit var passwordCheckBox: CompoundButton
private lateinit var passwordView: PassKeyView
private lateinit var passwordEditView: PasswordEditView
private lateinit var passwordRepeatTextInputLayout: TextInputLayout
private lateinit var passwordRepeatView: TextView
private lateinit var keyFileCheckBox: CompoundButton
private lateinit var keyFileGenerateButton: View
private lateinit var keyFileSelectionView: KeyFileSelectionView
private lateinit var hardwareKeyCheckBox: CompoundButton
@@ -141,30 +147,40 @@ class SetMainCredentialDialogFragment : DatabaseDialogFragment() {
}
passwordCheckBox = rootView.findViewById(R.id.password_checkbox)
passwordView = rootView.findViewById(R.id.password_view)
passwordEditView = rootView.findViewById(R.id.password_view)
passwordRepeatTextInputLayout = rootView.findViewById(R.id.password_repeat_input_layout)
passwordRepeatView = rootView.findViewById(R.id.password_confirmation)
passwordRepeatView.applyFontVisibility()
keyFileCheckBox = rootView.findViewById(R.id.keyfile_checkbox)
keyFileGenerateButton = rootView.findViewById(R.id.keyfile_generate)
keyFileSelectionView = rootView.findViewById(R.id.keyfile_selection)
hardwareKeyCheckBox = rootView.findViewById(R.id.hardware_key_checkbox)
hardwareKeySelectionView = rootView.findViewById(R.id.hardware_key_selection)
mExternalFileHelper = ExternalFileHelper(this)
mExternalFileHelper?.buildCreateDocument { createdFileUri ->
createdFileUri?.let { uri ->
createKeyFile(uri)
keyFileSelectionView.error = null
keyFileCheckBox.isChecked = true
keyFileSelectionView.uri = uri
}
}
mExternalFileHelper?.buildOpenDocument { uri ->
uri?.let { pathUri ->
pathUri.getDocumentFile(requireContext())?.length()?.let { lengthFile ->
keyFileSelectionView.error = null
keyFileCheckBox.isChecked = true
keyFileSelectionView.uri = pathUri
if (lengthFile <= 0L) {
showEmptyKeyFileConfirmationDialog()
}
showLengthKeyFileConfirmationDialog(lengthFile)
}
}
}
keyFileGenerateButton.setOnClickListener {
mExternalFileHelper?.createDocument(DEFAULT_KEYFILE_NAME)
}
keyFileSelectionView.setOpenDocumentClickListener(mExternalFileHelper)
hardwareKeySelectionView.selectionListener = { hardwareKey ->
@@ -202,6 +218,16 @@ class SetMainCredentialDialogFragment : DatabaseDialogFragment() {
return super.onCreateDialog(savedInstanceState)
}
private fun createKeyFile(uri: Uri) {
CoroutineScope(Dispatchers.IO).launch {
activity?.contentResolver?.openOutputStream(uri)?.use { outputStream ->
val randomBytes = ByteArray(DEFAULT_KEYFILE_SIZE)
SecureRandom().nextBytes(randomBytes)
outputStream.write(randomBytes)
}
}
}
private fun approveMainCredential() {
val errorPassword = verifyPassword()
val errorKeyFile = verifyKeyFile()
@@ -250,7 +276,7 @@ class SetMainCredentialDialogFragment : DatabaseDialogFragment() {
var error = false
passwordRepeatTextInputLayout.error = null
if (passwordCheckBox.isChecked) {
mMasterPassword = passwordView.passwordString
mMasterPassword = passwordEditView.passwordString
val confPassword = passwordRepeatView.text.toString()
// Verify that passwords match
@@ -302,13 +328,13 @@ class SetMainCredentialDialogFragment : DatabaseDialogFragment() {
super.onResume()
// To check checkboxes if a text is present
passwordView.addTextChangedListener(passwordTextWatcher)
passwordEditView.addTextChangedListener(passwordTextWatcher)
}
override fun onPause() {
super.onPause()
passwordView.removeTextChangedListener(passwordTextWatcher)
passwordEditView.removeTextChangedListener(passwordTextWatcher)
}
private fun showEmptyPasswordConfirmationDialog() {
@@ -339,21 +365,31 @@ class SetMainCredentialDialogFragment : DatabaseDialogFragment() {
}
}
private fun showEmptyKeyFileConfirmationDialog() {
private fun showLengthKeyFileConfirmationDialog(length: Long) {
activity?.let {
val builder = AlertDialog.Builder(it)
builder.setMessage(SpannableStringBuilder().apply {
append(getString(R.string.warning_empty_keyfile))
append("\n\n")
append(getString(R.string.warning_empty_keyfile_explanation))
append("\n\n")
append(getString(R.string.warning_sure_add_file))
})
.setPositiveButton(android.R.string.ok) { _, _ -> }
.setNegativeButton(android.R.string.cancel) { _, _ ->
keyFileCheckBox.isChecked = false
keyFileSelectionView.uri = null
}
var warning = false
if (length <= 0L) {
warning = true
append("\n\n")
append(getString(R.string.warning_empty_keyfile))
} else if (length > 10485760L) {
warning = true
append("\n\n")
append(getString(R.string.warning_large_keyfile))
}
if (warning) {
append("\n\n")
append(getString(R.string.warning_sure_add_file))
}
})
.setPositiveButton(android.R.string.ok) { _, _ -> }
.setNegativeButton(android.R.string.cancel) { _, _ ->
keyFileCheckBox.isChecked = false
keyFileSelectionView.uri = null
}
mEmptyKeyFileConfirmationDialog = builder.create()
mEmptyKeyFileConfirmationDialog?.show()
}
@@ -362,6 +398,8 @@ class SetMainCredentialDialogFragment : DatabaseDialogFragment() {
companion object {
private const val ALLOW_NO_MASTER_KEY_ARG = "ALLOW_NO_MASTER_KEY_ARG"
private const val DEFAULT_KEYFILE_NAME = "keyfile.bin"
private const val DEFAULT_KEYFILE_SIZE = 128
fun getInstance(allowNoMasterKey: Boolean): SetMainCredentialDialogFragment {
val fragment = SetMainCredentialDialogFragment()

View File

@@ -41,6 +41,7 @@ import com.kunzisoft.keepass.otp.OtpElement.Companion.MAX_TOTP_PERIOD
import com.kunzisoft.keepass.otp.OtpElement.Companion.MIN_HOTP_COUNTER
import com.kunzisoft.keepass.otp.OtpElement.Companion.MIN_OTP_DIGITS
import com.kunzisoft.keepass.otp.OtpElement.Companion.MIN_TOTP_PERIOD
import com.kunzisoft.keepass.otp.OtpElement.Companion.MIN_OTP_SECRET
import com.kunzisoft.keepass.otp.OtpTokenType
import com.kunzisoft.keepass.otp.OtpType
import com.kunzisoft.keepass.otp.TokenCalculator
@@ -224,6 +225,9 @@ class SetOTPDialogFragment : DatabaseDialogFragment() {
}
otpAlgorithmSpinner?.adapter = otpAlgorithmAdapter
// Ensure that the UX does not prevent user from hiding/unhiding text
otpSecretContainer?.errorIconDrawable = null
// Set the default value of OTP element
upgradeType()
upgradeTokenType()
@@ -310,11 +314,16 @@ class SetOTPDialogFragment : DatabaseDialogFragment() {
otpSecretTextView?.addTextChangedListener(object: TextWatcher {
override fun afterTextChanged(s: Editable?) {
s?.toString()?.let { userString ->
try {
mOtpElement.setBase32Secret(userString.uppercase(Locale.ENGLISH))
otpSecretContainer?.error = null
} catch (exception: Exception) {
otpSecretContainer?.error = getString(R.string.error_otp_secret_key)
if (userString.length >= MIN_OTP_SECRET) {
try {
mOtpElement.setBase32Secret(userString.uppercase(Locale.ENGLISH))
otpSecretContainer?.error = null
} catch (exception: Exception) {
otpSecretContainer?.error = getString(R.string.error_otp_secret_key)
}
} else {
otpSecretContainer?.error = getString(R.string.error_otp_secret_length,
MIN_OTP_SECRET)
}
mSecretWellFormed = otpSecretContainer?.error == null
}

View File

@@ -34,12 +34,12 @@ import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.password.PassphraseGenerator
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.timeout.ClipboardHelper
import com.kunzisoft.keepass.view.PassKeyView
import com.kunzisoft.keepass.view.PasswordEditView
import com.kunzisoft.keepass.viewmodels.KeyGeneratorViewModel
class PassphraseGeneratorFragment : DatabaseFragment() {
private lateinit var passKeyView: PassKeyView
private lateinit var passwordEditView: PasswordEditView
private lateinit var sliderWordCount: Slider
private lateinit var wordCountText: EditText
@@ -62,7 +62,7 @@ class PassphraseGeneratorFragment : DatabaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
passKeyView = view.findViewById(R.id.passphrase_view)
passwordEditView = view.findViewById(R.id.passphrase_view)
val passphraseCopyView: ImageView? = view.findViewById(R.id.passphrase_copy_button)
sliderWordCount = view.findViewById(R.id.slider_word_count)
wordCountText = view.findViewById(R.id.word_count)
@@ -80,7 +80,7 @@ class PassphraseGeneratorFragment : DatabaseFragment() {
passphraseCopyView?.setOnClickListener {
clipboardHelper.timeoutCopyToClipboard(
getString(R.string.passphrase),
passKeyView.passwordString,
passwordEditView.passwordString,
true
)
}
@@ -146,7 +146,7 @@ class PassphraseGeneratorFragment : DatabaseFragment() {
generatePassphrase()
mKeyGeneratorViewModel.passphraseGeneratedValidated.observe(viewLifecycleOwner) {
mKeyGeneratorViewModel.setKeyGenerated(passKeyView.passwordString)
mKeyGeneratorViewModel.setKeyGenerated(passwordEditView.passwordString)
}
mKeyGeneratorViewModel.requirePassphraseGeneration.observe(viewLifecycleOwner) {
@@ -219,7 +219,7 @@ class PassphraseGeneratorFragment : DatabaseFragment() {
} catch (e: Exception) {
Log.e(TAG, "Unable to generate a passphrase", e)
}
passKeyView.passwordString = passphrase
passwordEditView.passwordString = passphrase
charactersCountText.text = getString(R.string.character_count, passphrase.length)
}

View File

@@ -36,12 +36,12 @@ import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.password.PasswordGenerator
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.timeout.ClipboardHelper
import com.kunzisoft.keepass.view.PassKeyView
import com.kunzisoft.keepass.view.PasswordEditView
import com.kunzisoft.keepass.viewmodels.KeyGeneratorViewModel
class PasswordGeneratorFragment : DatabaseFragment() {
private lateinit var passKeyView: PassKeyView
private lateinit var passwordEditView: PasswordEditView
private lateinit var sliderLength: Slider
private lateinit var lengthEditView: EditText
@@ -74,7 +74,7 @@ class PasswordGeneratorFragment : DatabaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
passKeyView = view.findViewById(R.id.password_view)
passwordEditView = view.findViewById(R.id.password_view)
val passwordCopyView: ImageView? = view.findViewById(R.id.password_copy_button)
sliderLength = view.findViewById(R.id.slider_length)
@@ -101,7 +101,7 @@ class PasswordGeneratorFragment : DatabaseFragment() {
passwordCopyView?.setOnClickListener {
clipboardHelper.timeoutCopyToClipboard(
getString(R.string.password),
passKeyView.passwordString,
passwordEditView.passwordString,
true
)
}
@@ -195,7 +195,7 @@ class PasswordGeneratorFragment : DatabaseFragment() {
generatePassword()
mKeyGeneratorViewModel.passwordGeneratedValidated.observe(viewLifecycleOwner) {
mKeyGeneratorViewModel.setKeyGenerated(passKeyView.passwordString)
mKeyGeneratorViewModel.setKeyGenerated(passwordEditView.passwordString)
}
mKeyGeneratorViewModel.requirePasswordGeneration.observe(viewLifecycleOwner) {
@@ -310,7 +310,7 @@ class PasswordGeneratorFragment : DatabaseFragment() {
} catch (e: Exception) {
Log.e(TAG, "Unable to generate a password", e)
}
passKeyView.passwordString = password
passwordEditView.passwordString = password
}
override fun onDestroy() {

View File

@@ -10,6 +10,7 @@ import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.element.Group
import com.kunzisoft.keepass.database.element.node.Node
import com.kunzisoft.keepass.database.element.node.Type
@@ -17,7 +18,7 @@ import com.kunzisoft.keepass.icons.IconDrawableFactory
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.view.strikeOut
class BreadcrumbAdapter(val context: Context)
class BreadcrumbAdapter(val context: Context, val database: Database?)
: RecyclerView.Adapter<BreadcrumbAdapter.BreadcrumbGroupViewHolder>() {
private val inflater: LayoutInflater = LayoutInflater.from(context)
@@ -31,6 +32,8 @@ class BreadcrumbAdapter(val context: Context)
var onItemClickListener: ((item: Node, position: Int)->Unit)? = null
var onLongItemClickListener: ((item: Node, position: Int)->Unit)? = null
private var mNodeFilter: NodeFilter = NodeFilter(context, database)
private var mShowNumberEntries = false
private var mShowUUID = false
private var mIconColor: Int = 0
@@ -112,12 +115,10 @@ class BreadcrumbAdapter(val context: Context)
holder.groupNumbersView?.apply {
if (mShowNumberEntries) {
group.refreshNumberOfChildEntries(
Group.ChildFilter.getDefaults(
PreferencesUtil.showExpiredEntries(context)
)
)
text = group.recursiveNumberOfChildEntries.toString()
text = group.getNumberOfChildEntries(
mNodeFilter.recursiveNumberOfEntries,
mNodeFilter.filter
).toString()
visibility = View.VISIBLE
} else {
visibility = View.GONE

View File

@@ -0,0 +1,30 @@
package com.kunzisoft.keepass.adapters
import android.content.Context
import com.kunzisoft.keepass.database.element.Database
import com.kunzisoft.keepass.database.element.Entry
import com.kunzisoft.keepass.database.element.Group
import com.kunzisoft.keepass.database.element.node.Node
import com.kunzisoft.keepass.settings.PreferencesUtil
class NodeFilter(
context: Context,
var database: Database? = null
) {
var recursiveNumberOfEntries = PreferencesUtil.recursiveNumberEntries(context)
private set
private var showExpired = PreferencesUtil.showExpiredEntries(context)
private var showTemplate = PreferencesUtil.showTemplates(context)
val filter: (Node) -> Boolean = { node ->
when (node) {
is Entry -> {
node.entryKDB?.isMetaStream() != true
}
is Group -> {
showTemplate || database?.templatesGroup != node
}
else -> true
} && (showExpired || !node.isCurrentlyExpires)
}
}

View File

@@ -22,6 +22,7 @@ package com.kunzisoft.keepass.adapters
import android.content.Context
import android.content.res.ColorStateList
import android.graphics.Color
import android.os.Build
import android.util.Log
import android.util.TypedValue
import android.view.LayoutInflater
@@ -66,6 +67,7 @@ class NodesAdapter (
private val mNodeSortedListCallback: NodeSortedListCallback
private val mNodeSortedList: SortedList<Node>
private val mInflater: LayoutInflater = LayoutInflater.from(context)
private val mNodeFilter: NodeFilter = NodeFilter(context, database)
private var mCalculateViewTypeTextSize = Array(2) { true } // number of view type
private var mTextSizeUnit: Int = TypedValue.COMPLEX_UNIT_PX
@@ -82,7 +84,7 @@ class NodesAdapter (
private var mShowNumberEntries: Boolean = true
private var mShowOTP: Boolean = false
private var mShowUUID: Boolean = false
private var mEntryFilters = arrayOf<Group.ChildFilter>()
private var mNodeFilters: NodeFilter? = null
private var mOldVirtualGroup = false
private var mVirtualGroup = false
@@ -161,9 +163,7 @@ class NodesAdapter (
this.mShowOTP = PreferencesUtil.showOTPToken(context)
this.mShowUUID = PreferencesUtil.showUUID(context)
this.mEntryFilters = Group.ChildFilter.getDefaults(
PreferencesUtil.showExpiredEntries(context)
)
this.mNodeFilters = NodeFilter(context, database)
// Reinit textSize for all view type
mCalculateViewTypeTextSize.forEachIndexed { index, _ -> mCalculateViewTypeTextSize[index] = true }
@@ -176,7 +176,7 @@ class NodesAdapter (
mOldVirtualGroup = mVirtualGroup
mVirtualGroup = group.isVirtual
assignPreferences()
mNodeSortedList.replaceAll(group.getFilteredChildren(mEntryFilters))
mNodeSortedList.replaceAll(group.getChildren(mNodeFilter.filter))
}
private inner class NodeSortedListCallback: SortedListAdapterCallback<Node>(this) {
@@ -205,6 +205,11 @@ class NodesAdapter (
&& oldItem.type == newItem.type
&& oldItem.title == newItem.title
&& oldItem.icon == newItem.icon
&& oldItem.creationTime == newItem.creationTime
&& oldItem.lastModificationTime == newItem.lastModificationTime
&& oldItem.lastAccessTime == newItem.lastAccessTime
&& oldItem.expiryTime == newItem.expiryTime
&& oldItem.expires == newItem.expires
&& oldItem.isCurrentlyExpires == newItem.isCurrentlyExpires
}
@@ -473,7 +478,10 @@ class NodesAdapter (
if (mShowNumberEntries) {
holder.numberChildren?.apply {
text = (subNode as Group)
.recursiveNumberOfChildEntries
.getNumberOfChildEntries(
mNodeFilter.recursiveNumberOfEntries,
mNodeFilter.filter
)
.toString()
setTextSize(mTextSizeUnit, mNumberChildrenTextDefaultDimension, mPrefSizeMultiplier)
visibility = View.VISIBLE
@@ -522,6 +530,9 @@ class NodesAdapter (
holder?.otpToken?.apply {
text = otpElement?.tokenString
setTextSize(mTextSizeUnit, mOtpTokenTextDefaultDimension, mPrefSizeMultiplier)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
textDirection = View.TEXT_DIRECTION_LTR
}
}
holder?.otpContainer?.setOnClickListener {
otpElement?.token?.let { token ->

View File

@@ -27,6 +27,7 @@ import android.net.Uri
import android.os.IBinder
import android.util.Base64
import android.util.Log
import androidx.core.content.ContextCompat
import com.kunzisoft.keepass.database.element.binary.BinaryData.Companion.BASE64_FLAG
import com.kunzisoft.keepass.model.CipherEncryptDatabase
import com.kunzisoft.keepass.services.AdvancedUnlockNotificationService
@@ -69,9 +70,11 @@ class CipherDatabaseAction(context: Context) {
@Synchronized
private fun attachService(performedAction: () -> Unit) {
applicationContext.registerReceiver(mAdvancedUnlockBroadcastReceiver, IntentFilter().apply {
addAction(AdvancedUnlockNotificationService.REMOVE_ADVANCED_UNLOCK_KEY_ACTION)
})
ContextCompat.registerReceiver(applicationContext, mAdvancedUnlockBroadcastReceiver,
IntentFilter().apply {
addAction(AdvancedUnlockNotificationService.REMOVE_ADVANCED_UNLOCK_KEY_ACTION)
}, ContextCompat.RECEIVER_EXPORTED
)
mServiceConnection = object : ServiceConnection {
override fun onServiceConnected(name: ComponentName?, serviceBinder: IBinder?) {
@@ -97,7 +100,7 @@ class CipherDatabaseAction(context: Context) {
private fun detachService() {
try {
applicationContext.unregisterReceiver(mAdvancedUnlockBroadcastReceiver)
} catch (e: Exception) {}
} catch (_: Exception) {}
mServiceConnection?.let {
AdvancedUnlockNotificationService.unbindService(applicationContext, it)
@@ -181,6 +184,14 @@ class CipherDatabaseAction(context: Context) {
}
}
fun resetCipherParameters(databaseUri: Uri) {
containsCipherDatabase(databaseUri) { contains ->
if (contains) {
mBinder?.resetTimer()
}
}
}
fun addOrUpdateCipherDatabase(cipherEncryptDatabase: CipherEncryptDatabase,
cipherDatabaseResultListener: (() -> Unit)? = null) {
cipherEncryptDatabase.databaseUri?.let { databaseUri ->

View File

@@ -60,6 +60,7 @@ import com.kunzisoft.keepass.settings.AutofillSettingsActivity
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.utils.LOCK_ACTION
import com.kunzisoft.keepass.utils.getParcelableExtraCompat
import kotlin.math.min
@RequiresApi(api = Build.VERSION_CODES.O)
@@ -175,8 +176,8 @@ object AutofillHelper {
}
if (entryInfo.expires) {
val year = entryInfo.expiryTime.getYearInt()
val month = entryInfo.expiryTime.getMonthInt()
val year = entryInfo.expiryTime.getYear()
val month = entryInfo.expiryTime.getMonth()
val monthString = month.toString().padStart(2, '0')
val day = entryInfo.expiryTime.getDay()
val dayString = day.toString().padStart(2, '0')
@@ -191,7 +192,7 @@ object AutofillHelper {
} else {
datasetBuilder.addValueToDatasetBuilder(
it,
AutofillValue.forDate(entryInfo.expiryTime.date.time)
AutofillValue.forDate(entryInfo.expiryTime.toMilliseconds())
)
}
}
@@ -321,10 +322,11 @@ object AutofillHelper {
val inlinePresentationSpecs = inlineSuggestionsRequest.inlinePresentationSpecs
val maxSuggestion = inlineSuggestionsRequest.maxSuggestionCount
if (positionItem <= maxSuggestion - 1
&& inlinePresentationSpecs.size > positionItem
) {
val inlinePresentationSpec = inlinePresentationSpecs[positionItem]
if (positionItem <= maxSuggestion - 1) {
// If positionItem is larger than the number of specs in the list, then
// the last spec is used for the remainder of the suggestions
val inlinePresentationSpec = inlinePresentationSpecs[min(positionItem, inlinePresentationSpecs.size - 1)]
// Make sure that the IME spec claims support for v1 UI template.
val imeStyle = inlinePresentationSpec.style

View File

@@ -21,12 +21,21 @@ package com.kunzisoft.keepass.autofill
import android.annotation.SuppressLint
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.BlendMode
import android.graphics.drawable.Icon
import android.os.Build
import android.os.CancellationSignal
import android.service.autofill.*
import android.service.autofill.AutofillService
import android.service.autofill.FillCallback
import android.service.autofill.FillRequest
import android.service.autofill.FillResponse
import android.service.autofill.InlinePresentation
import android.service.autofill.Presentations
import android.service.autofill.SaveCallback
import android.service.autofill.SaveInfo
import android.service.autofill.SaveRequest
import android.util.Log
import android.view.autofill.AutofillId
import android.widget.RemoteViews
@@ -35,6 +44,7 @@ import androidx.autofill.inline.UiVersions
import androidx.autofill.inline.v1.InlineSuggestionUi
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.AutofillLauncherActivity
import com.kunzisoft.keepass.autofill.StructureParser.Companion.APPLICATION_ID_POPUP_WINDOW
import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.database.DatabaseTaskProvider
import com.kunzisoft.keepass.database.helper.SearchHelper
@@ -99,8 +109,12 @@ class KeeAutofillService : AutofillService() {
StructureParser(latestStructure).parse()?.let { parseResult ->
// Build search info only if applicationId or webDomain are not blocked
if (autofillAllowedFor(parseResult.applicationId, applicationIdBlocklist)
&& autofillAllowedFor(parseResult.webDomain, webDomainBlocklist)) {
if (autofillAllowedFor(
applicationId = parseResult.applicationId,
applicationIdBlocklist = applicationIdBlocklist,
webDomain = parseResult.webDomain,
webDomainBlocklist = webDomainBlocklist)
) {
val searchInfo = SearchInfo().apply {
applicationId = parseResult.applicationId
webDomain = parseResult.webDomain
@@ -258,7 +272,7 @@ class KeeAutofillService : AutofillService() {
val inlinePresentationSpecs =
inlineSuggestionsRequest.inlinePresentationSpecs
if (inlineSuggestionsRequest.maxSuggestionCount > 0
&& inlinePresentationSpecs.size > 0
&& inlinePresentationSpecs.isNotEmpty()
) {
val inlinePresentationSpec = inlinePresentationSpecs[0]
@@ -274,11 +288,7 @@ class KeeAutofillService : AutofillService() {
this,
0,
Intent(this, AutofillSettingsActivity::class.java),
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
PendingIntent.FLAG_IMMUTABLE
} else {
0
}
PendingIntent.FLAG_IMMUTABLE
)
).apply {
setContentDescription(getString(R.string.autofill_sign_in_prompt))
@@ -352,8 +362,12 @@ class KeeAutofillService : AutofillService() {
val latestStructure = request.fillContexts.last().structure
StructureParser(latestStructure).parse(true)?.let { parseResult ->
if (autofillAllowedFor(parseResult.applicationId, applicationIdBlocklist)
&& autofillAllowedFor(parseResult.webDomain, webDomainBlocklist)) {
if (autofillAllowedFor(
applicationId = parseResult.applicationId,
applicationIdBlocklist = applicationIdBlocklist,
webDomain = parseResult.webDomain,
webDomainBlocklist = webDomainBlocklist)
) {
Log.d(TAG, "autofill onSaveRequest password")
// Build expiration from date or from year and month
@@ -414,6 +428,28 @@ class KeeAutofillService : AutofillService() {
companion object {
private val TAG = KeeAutofillService::class.java.name
fun autofillAllowedFor(applicationId: String?,
webDomain: String?,
context: Context
): Boolean {
return autofillAllowedFor(
applicationId = applicationId,
applicationIdBlocklist = PreferencesUtil.applicationIdBlocklist(context),
webDomain = webDomain,
webDomainBlocklist = PreferencesUtil.webDomainBlocklist(context))
}
fun autofillAllowedFor(applicationId: String?,
applicationIdBlocklist: Set<String>?,
webDomain: String?,
webDomainBlocklist: Set<String>?
): Boolean {
return autofillAllowedFor(applicationId, applicationIdBlocklist)
// To prevent unrecognized autofill popup id
&& applicationId?.contains(APPLICATION_ID_POPUP_WINDOW) != true
&& autofillAllowedFor(webDomain, webDomainBlocklist)
}
fun autofillAllowedFor(element: String?, blockList: Set<String>?): Boolean {
element?.let { elementNotNull ->
if (blockList?.any { appIdBlocked ->

View File

@@ -27,8 +27,7 @@ import android.view.autofill.AutofillId
import android.view.autofill.AutofillValue
import androidx.annotation.RequiresApi
import org.joda.time.DateTime
import java.util.*
import kotlin.collections.ArrayList
import java.util.Locale
/**
@@ -37,7 +36,6 @@ import kotlin.collections.ArrayList
@RequiresApi(api = Build.VERSION_CODES.O)
class StructureParser(private val structure: AssistStructure) {
private var result: Result? = null
private var usernameNeeded = true
private var usernameIdCandidate: AutofillId? = null
private var usernameValueCandidate: AutofillValue? = null
@@ -53,7 +51,7 @@ class StructureParser(private val structure: AssistStructure) {
applicationId = windowNode.title.toString().split("/")[0]
Log.d(TAG, "Autofill applicationId: $applicationId")
if (applicationId?.contains("PopupWindow:") == false) {
if (applicationId?.contains(APPLICATION_ID_POPUP_WINDOW) == false) {
if (parseViewNode(windowNode.rootViewNode))
break@mainLoop
}
@@ -131,27 +129,40 @@ class StructureParser(private val structure: AssistStructure) {
val autofillId = node.autofillId
node.autofillHints?.forEach {
when {
it.contains(View.AUTOFILL_HINT_USERNAME, true) -> {
result?.usernameId = autofillId
result?.usernameValue = node.autofillValue
Log.d(TAG, "Autofill username hint")
}
it.contains(View.AUTOFILL_HINT_USERNAME, true)
|| it.contains(View.AUTOFILL_HINT_EMAIL_ADDRESS, true)
|| it.contains("email", true)
|| it.contains(View.AUTOFILL_HINT_PHONE, true) -> {
// Priority to username or add if null
|| it.contains("login", true) -> {
// Replace username until we have a password
if (result?.passwordId == null) {
result?.usernameId = autofillId
result?.usernameValue = node.autofillValue
Log.d(TAG, "Autofill username hint if no password")
} else {
usernameIdCandidate = autofillId
usernameValueCandidate = node.autofillValue
Log.d(TAG, "Autofill email hint")
Log.d(TAG, "Autofill username hint if password")
}
}
it.contains(View.AUTOFILL_HINT_PHONE, true) -> {
if (usernameIdCandidate == null) {
usernameIdCandidate = autofillId
usernameValueCandidate = node.autofillValue
Log.d(TAG, "Autofill phone")
}
}
it.contains(View.AUTOFILL_HINT_PASSWORD, true) -> {
// Password Id changed if it's the second times we are here,
// So the last username candidate is most appropriate
if (result?.passwordId != null) {
result?.usernameId = usernameIdCandidate
result?.usernameValue = usernameValueCandidate
}
result?.passwordId = autofillId
result?.passwordValue = node.autofillValue
Log.d(TAG, "Autofill password hint")
return true
// Comment "return" to check all the tree
// return true
}
it.equals("cc-name", true) -> {
Log.d(TAG, "Autofill credit card name hint")
@@ -328,91 +339,128 @@ class StructureParser(private val structure: AssistStructure) {
return "0x${"%08x".format(inputType)}"
}
private fun manageTypeText(
node: AssistStructure.ViewNode,
autofillId: AutofillId?,
inputType: Int
): Boolean {
when {
inputIsVariationType(inputType,
InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS,
InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS) -> {
if (result?.passwordId == null) {
result?.usernameId = autofillId
result?.usernameValue = node.autofillValue
Log.d(TAG, "Autofill username android text type: ${showHexInputType(inputType)}")
}
}
inputIsVariationType(inputType,
InputType.TYPE_TEXT_VARIATION_NORMAL,
InputType.TYPE_TEXT_VARIATION_PERSON_NAME,
InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT) -> {
// Assume the username field is before the password field
if (result?.passwordId == null) {
usernameIdCandidate = autofillId
usernameValueCandidate = node.autofillValue
}
Log.d(TAG, "Autofill username candidate android text type: ${showHexInputType(inputType)}")
}
inputIsVariationType(inputType,
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) -> {
// Some forms used visible password as username
if (result?.passwordId == null &&
usernameIdCandidate == null && usernameValueCandidate == null) {
usernameIdCandidate = autofillId
usernameValueCandidate = node.autofillValue
Log.d(TAG, "Autofill visible password android text type (as username): ${showHexInputType(inputType)}")
} else if (result?.passwordId == null && result?.passwordValue == null) {
result?.passwordId = autofillId
result?.passwordValue = node.autofillValue
Log.d(TAG, "Autofill visible password android text type (as password): ${showHexInputType(inputType)}")
}
}
inputIsVariationType(inputType,
InputType.TYPE_TEXT_VARIATION_PASSWORD,
InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD) -> {
result?.passwordId = autofillId
result?.passwordValue = node.autofillValue
Log.d(TAG, "Autofill password android text type: ${showHexInputType(inputType)}")
return true
}
inputIsVariationType(inputType,
InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT,
InputType.TYPE_TEXT_VARIATION_FILTER,
InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE,
InputType.TYPE_TEXT_VARIATION_PHONETIC,
InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS,
InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE,
InputType.TYPE_TEXT_VARIATION_URI) -> {
// Type not used
Log.d(TAG, "Autofill not used android text type: ${showHexInputType(inputType)}")
}
else -> {
Log.d(TAG, "Autofill unknown android text type: ${showHexInputType(inputType)}")
}
}
return false
}
private fun manageTypeNumber(
node: AssistStructure.ViewNode,
autofillId: AutofillId?,
inputType: Int
): Boolean {
when {
inputIsVariationType(inputType,
InputType.TYPE_NUMBER_VARIATION_NORMAL) -> {
if (usernameIdCandidate == null) {
usernameIdCandidate = autofillId
usernameValueCandidate = node.autofillValue
Log.d(TAG, "Autofill username candidate android number type: ${showHexInputType(inputType)}")
}
}
inputIsVariationType(inputType,
InputType.TYPE_NUMBER_VARIATION_PASSWORD) -> {
result?.passwordId = autofillId
result?.passwordValue = node.autofillValue
Log.d(TAG, "Autofill password android number type: ${showHexInputType(inputType)}")
return true
}
else -> {
Log.d(TAG, "Autofill unknown android number type: ${showHexInputType(inputType)}")
}
}
return false
}
private fun manageTypeNull(
node: AssistStructure.ViewNode,
autofillId: AutofillId?,
inputType: Int
): Boolean {
if (node.className == "android.widget.EditText") {
Log.d(TAG, "Autofill null android input type class: ${showHexInputType(inputType)}" +
", get the EditText node class name!")
if (result?.passwordId == null) {
usernameIdCandidate = autofillId
usernameValueCandidate = node.autofillValue
}
}
return false
}
private fun parseNodeByAndroidInput(node: AssistStructure.ViewNode): Boolean {
val autofillId = node.autofillId
val inputType = node.inputType
when (inputType and InputType.TYPE_MASK_CLASS) {
InputType.TYPE_CLASS_TEXT -> {
when {
inputIsVariationType(inputType,
InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS,
InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS) -> {
if (result?.passwordId == null) {
result?.usernameId = autofillId
result?.usernameValue = node.autofillValue
Log.d(TAG, "Autofill username android text type: ${showHexInputType(inputType)}")
}
}
inputIsVariationType(inputType,
InputType.TYPE_TEXT_VARIATION_NORMAL,
InputType.TYPE_TEXT_VARIATION_PERSON_NAME,
InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT) -> {
// Assume the username field is before the password field
if (result?.passwordId == null) {
usernameIdCandidate = autofillId
usernameValueCandidate = node.autofillValue
}
Log.d(TAG, "Autofill username candidate android text type: ${showHexInputType(inputType)}")
}
inputIsVariationType(inputType,
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) -> {
// Some forms used visible password as username
if (result?.passwordId == null &&
usernameIdCandidate == null && usernameValueCandidate == null) {
usernameIdCandidate = autofillId
usernameValueCandidate = node.autofillValue
Log.d(TAG, "Autofill visible password android text type (as username): ${showHexInputType(inputType)}")
} else if (result?.passwordId == null && result?.passwordValue == null) {
result?.passwordId = autofillId
result?.passwordValue = node.autofillValue
Log.d(TAG, "Autofill visible password android text type (as password): ${showHexInputType(inputType)}")
usernameNeeded = false
}
}
inputIsVariationType(inputType,
InputType.TYPE_TEXT_VARIATION_PASSWORD,
InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD) -> {
result?.passwordId = autofillId
result?.passwordValue = node.autofillValue
Log.d(TAG, "Autofill password android text type: ${showHexInputType(inputType)}")
return true
}
inputIsVariationType(inputType,
InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT,
InputType.TYPE_TEXT_VARIATION_FILTER,
InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE,
InputType.TYPE_TEXT_VARIATION_PHONETIC,
InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS,
InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE,
InputType.TYPE_TEXT_VARIATION_URI) -> {
// Type not used
}
else -> {
Log.d(TAG, "Autofill unknown android text type: ${showHexInputType(inputType)}")
}
}
return manageTypeText(node, autofillId, inputType)
}
InputType.TYPE_CLASS_NUMBER -> {
when {
inputIsVariationType(inputType,
InputType.TYPE_NUMBER_VARIATION_NORMAL) -> {
if (usernameIdCandidate == null) {
usernameIdCandidate = autofillId
usernameValueCandidate = node.autofillValue
Log.d(TAG, "Autofill username candidate android number type: ${showHexInputType(inputType)}")
}
}
inputIsVariationType(inputType,
InputType.TYPE_NUMBER_VARIATION_PASSWORD) -> {
result?.passwordId = autofillId
result?.passwordValue = node.autofillValue
Log.d(TAG, "Autofill password android number type: ${showHexInputType(inputType)}")
return true
}
else -> {
Log.d(TAG, "Autofill unknown android number type: ${showHexInputType(inputType)}")
}
}
return manageTypeNumber(node, autofillId, inputType)
}
InputType.TYPE_NULL -> {
return manageTypeNull(node, autofillId, inputType)
}
}
return false
@@ -441,21 +489,13 @@ class StructureParser(private val structure: AssistStructure) {
var creditCardExpirationDayOptions: Array<CharSequence>? = null
var usernameId: AutofillId? = null
var passwordId: AutofillId? = null
var creditCardHolderId: AutofillId? = null
var creditCardNumberId: AutofillId? = null
var creditCardExpirationDateId: AutofillId? = null
var creditCardExpirationYearId: AutofillId? = null
var creditCardExpirationMonthId: AutofillId? = null
var creditCardExpirationDayId: AutofillId? = null
var cardVerificationValueId: AutofillId? = null
fun allAutofillIds(): Array<AutofillId> {
@@ -542,5 +582,7 @@ class StructureParser(private val structure: AssistStructure) {
companion object {
private val TAG = StructureParser::class.java.name
const val APPLICATION_ID_POPUP_WINDOW = "PopupWindow:"
}
}

View File

@@ -566,6 +566,7 @@ class AdvancedUnlockFragment: Fragment(), AdvancedUnlockManager.AdvancedUnlockCa
this.decryptedValue = decryptedValue
}
)
cipherDatabaseAction.resetCipherParameters(databaseUri)
}
}

View File

@@ -40,6 +40,7 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale
import androidx.core.content.ContextCompat
import androidx.core.content.ContextCompat.RECEIVER_NOT_EXPORTED
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope
import com.kunzisoft.keepass.R
@@ -182,8 +183,11 @@ class DatabaseTaskProvider(
private var databaseInfoListener = object:
DatabaseTaskNotificationService.DatabaseInfoListener {
override fun onDatabaseInfoChanged(previousDatabaseInfo: SnapFileDatabaseInfo,
newDatabaseInfo: SnapFileDatabaseInfo) {
override fun onDatabaseInfoChanged(
previousDatabaseInfo: SnapFileDatabaseInfo,
newDatabaseInfo: SnapFileDatabaseInfo,
readOnlyDatabase: Boolean
) {
activity?.let { activity ->
activity.lifecycleScope.launch {
if (databaseChangedDialogFragment == null) {
@@ -195,7 +199,8 @@ class DatabaseTaskProvider(
if (progressTaskDialogFragment == null) {
databaseChangedDialogFragment = DatabaseChangedDialogFragment.getInstance(
previousDatabaseInfo,
newDatabaseInfo
newDatabaseInfo,
readOnlyDatabase
)
databaseChangedDialogFragment?.actionDatabaseListener =
mActionDatabaseListener
@@ -326,11 +331,11 @@ class DatabaseTaskProvider(
}
}
}
context.registerReceiver(databaseTaskBroadcastReceiver,
ContextCompat.registerReceiver(context, databaseTaskBroadcastReceiver,
IntentFilter().apply {
addAction(DATABASE_START_TASK_ACTION)
addAction(DATABASE_STOP_TASK_ACTION)
}
}, RECEIVER_NOT_EXPORTED
)
// Check if a service is currently running else do nothing

View File

@@ -51,8 +51,10 @@ open class SaveDatabaseRunnable(
// Build temp database file to avoid file corruption if error
database.saveData(
cacheFile = File(context.cacheDir, databaseCopyUri.hashCode().toString()),
databaseOutputStream = contentResolver
.getUriOutputStream(databaseCopyUri ?: database.fileUri),
databaseOutputStream = {
contentResolver
.getUriOutputStream(databaseCopyUri ?: database.fileUri)
},
isNewLocation = databaseCopyUri == null,
mainCredential?.toMasterCredential(contentResolver),
challengeResponseRetriever)

View File

@@ -60,6 +60,7 @@ object SearchHelper {
// If search provide results
database.createVirtualGroupFromSearchInfo(
searchInfo.toString(),
searchInfo.isASearchByDomain(),
MAX_SEARCH_ENTRY
)?.let { searchGroup ->
if (searchGroup.numberOfChildEntries > 0) {

View File

@@ -0,0 +1,3 @@
package com.kunzisoft.keepass.model
data class DataDate(val year: Int, val month: Int, val day: Int)

View File

@@ -0,0 +1,3 @@
package com.kunzisoft.keepass.model
data class DataTime(val hour: Int, val minute: Int)

View File

@@ -21,6 +21,7 @@ package com.kunzisoft.keepass.password
import android.content.res.Resources
import android.graphics.Color
import android.text.Editable
import android.text.Spannable
import android.text.SpannableString
import android.text.SpannableStringBuilder
@@ -253,51 +254,62 @@ class PasswordGenerator(private val resources: Resources) {
return charSet.toString()
}
fun colorizedPassword(editable: Editable?) {
editable.toString().forEachIndexed { index, char ->
colorFromChar(char)?.let { color ->
editable?.setSpan(
ForegroundColorSpan(color),
index,
index + 1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
}
}
}
fun getColorizedPassword(password: String): Spannable {
val spannableString = SpannableStringBuilder()
if (password.isNotEmpty()) {
password.forEach {
when {
UPPERCASE_CHARS.contains(it)||
LOWERCASE_CHARS.contains(it) -> {
spannableString.append(it)
}
DIGIT_CHARS.contains(it) -> {
// RED
spannableString.append(colorizeChar(it, Color.rgb(246, 79, 62)))
}
SPECIAL_CHARS.contains(it) -> {
// Blue
spannableString.append(colorizeChar(it, Color.rgb(39, 166, 228)))
}
MINUS_CHAR.contains(it)||
UNDERLINE_CHAR.contains(it)||
BRACKET_CHARS.contains(it) -> {
// Purple
spannableString.append(colorizeChar(it, Color.rgb(185, 38, 209)))
}
extendedChars().contains(it) -> {
// Green
spannableString.append(colorizeChar(it, Color.rgb(44, 181, 50)))
}
else -> {
spannableString.append(it)
}
}
password.forEach { char ->
colorFromChar(char)?.let { color ->
val spannableColorChar = SpannableString(char.toString())
spannableColorChar.setSpan(
ForegroundColorSpan(color),
0,
1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
spannableString.append(spannableColorChar)
} ?: spannableString.append(char)
}
}
return spannableString
}
private fun colorizeChar(char: Char, color: Int): Spannable {
val spannableColorChar = SpannableString(char.toString())
spannableColorChar.setSpan(
ForegroundColorSpan(color),
0,
1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
return spannableColorChar
private fun colorFromChar(char: Char): Int? {
return when {
DIGIT_CHARS.contains(char) -> {
// RED
Color.rgb(246, 79, 62)
}
SPECIAL_CHARS.contains(char) -> {
// Blue
Color.rgb(39, 166, 228)
}
MINUS_CHAR.contains(char)||
UNDERLINE_CHAR.contains(char)||
BRACKET_CHARS.contains(char) -> {
// Purple
Color.rgb(185, 38, 209)
}
extendedChars().contains(char) -> {
// Green
Color.rgb(44, 181, 50)
}
else -> {
null
}
}
}
}
}

View File

@@ -26,7 +26,9 @@ class AdvancedUnlockNotificationService : NotificationService() {
return mTempCipherDao.firstOrNull { it.databaseUri == databaseUri.toString()}
}
fun addOrUpdateCipherDatabase(cipherDatabaseEntity: CipherDatabaseEntity) {
val cipherDatabaseRetrieve = mTempCipherDao.firstOrNull { it.databaseUri == cipherDatabaseEntity.databaseUri }
val cipherDatabaseRetrieve = mTempCipherDao.firstOrNull {
it.databaseUri == cipherDatabaseEntity.databaseUri
}
cipherDatabaseRetrieve?.replaceContent(cipherDatabaseEntity)
?: mTempCipherDao.add(cipherDatabaseEntity)
}
@@ -35,6 +37,9 @@ class AdvancedUnlockNotificationService : NotificationService() {
mTempCipherDao.remove(it)
}
}
fun resetTimer() {
resetTimeJob()
}
fun deleteAll() {
mTempCipherDao.clear()
}
@@ -86,11 +91,19 @@ class AdvancedUnlockNotificationService : NotificationService() {
val notificationTimeoutMilliSecs = PreferencesUtil.getAdvancedUnlockTimeout(this)
// Not necessarily a foreground service
if (mTimerJob == null && notificationTimeoutMilliSecs != TimeoutHelper.NEVER) {
defineTimerJob(notificationBuilder, notificationTimeoutMilliSecs) {
defineTimerJob(
notificationBuilder,
NotificationServiceType.ADVANCED_UNLOCK,
notificationTimeoutMilliSecs
) {
sendBroadcast(Intent(REMOVE_ADVANCED_UNLOCK_KEY_ACTION))
}
} else {
startForeground(notificationId, notificationBuilder.build())
startForegroundCompat(
notificationId,
notificationBuilder,
NotificationServiceType.ADVANCED_UNLOCK
)
}
return mActionTaskBinder

View File

@@ -36,13 +36,13 @@ import com.kunzisoft.keepass.model.AttachmentState
import com.kunzisoft.keepass.model.EntryAttachmentState
import com.kunzisoft.keepass.model.StreamDirection
import com.kunzisoft.keepass.tasks.BinaryDatabaseManager
import com.kunzisoft.keepass.utils.getParcelableExtraCompat
import com.kunzisoft.keepass.utils.UriUtil.getDocumentFile
import com.kunzisoft.keepass.utils.getParcelableExtraCompat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.util.*
import java.util.LinkedList
import java.util.concurrent.CopyOnWriteArrayList
@@ -282,15 +282,21 @@ class AttachmentFileNotificationService: LockNotificationService() {
AttachmentState.ERROR -> {
ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_DETACH)
try {
notificationManager?.notify(
attachmentNotification.notificationId,
builder.build()
)
checkNotificationsPermission(this) {
notificationManager?.notify(
attachmentNotification.notificationId,
builder.build()
)
}
} catch (e: SecurityException) {
Log.e(TAG, "Unable to notify the attachment state", e)
}
} else -> {
startForeground(attachmentNotification.notificationId, builder.build())
startForegroundCompat(
attachmentNotification.notificationId,
builder,
NotificationServiceType.ATTACHMENT
)
}
}
}

View File

@@ -19,16 +19,12 @@
*/
package com.kunzisoft.keepass.services
import android.Manifest
import android.app.Activity
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.util.Log
import android.widget.Toast
import androidx.core.content.ContextCompat
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.model.EntryInfo
import com.kunzisoft.keepass.otp.OtpEntryFields.OTP_TOKEN_FIELD
@@ -196,23 +192,29 @@ class ClipboardEntryNotificationService : LockNotificationService() {
//Get settings
val notificationTimeoutMilliSecs = PreferencesUtil.getClipboardTimeout(this)
if (notificationTimeoutMilliSecs != NEVER) {
defineTimerJob(builder, notificationTimeoutMilliSecs, {
val newGeneratedValue = fieldToCopy.getGeneratedValue(mEntryInfo)
// New auto generated value
if (generatedValue != newGeneratedValue) {
generatedValue = newGeneratedValue
clipboardHelper?.copyToClipboard(
fieldToCopy.label,
generatedValue,
fieldToCopy.isSensitive
)
defineTimerJob(
builder,
NotificationServiceType.CLIPBOARD,
notificationTimeoutMilliSecs,
{
val newGeneratedValue = fieldToCopy.getGeneratedValue(mEntryInfo)
// New auto generated value
if (generatedValue != newGeneratedValue) {
generatedValue = newGeneratedValue
clipboardHelper?.copyToClipboard(
fieldToCopy.label,
generatedValue,
fieldToCopy.isSensitive
)
}
},
{
stopNotificationAndSendLockIfNeeded()
// Clean password only if no next field
if (nextFields.size <= 0)
clipboardHelper?.cleanClipboard()
}
}) {
stopNotificationAndSendLockIfNeeded()
// Clean password only if no next field
if (nextFields.size <= 0)
clipboardHelper?.cleanClipboard()
}
)
} else {
// No timer
checkNotificationsPermission {
@@ -226,12 +228,11 @@ class ClipboardEntryNotificationService : LockNotificationService() {
}
private fun checkNotificationsPermission(action: () -> Unit) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS)
== PackageManager.PERMISSION_GRANTED) {
action.invoke()
} else {
showPermissionErrorIfNeeded(this)
}
checkNotificationsPermission(
this,
PreferencesUtil.isClipboardNotificationsEnable(this),
action
)
}
override fun onTaskRemoved(rootIntent: Intent?) {
@@ -255,26 +256,14 @@ class ClipboardEntryNotificationService : LockNotificationService() {
const val EXTRA_CLIPBOARD_FIELDS = "EXTRA_CLIPBOARD_FIELDS"
const val ACTION_CLEAN_CLIPBOARD = "ACTION_CLEAN_CLIPBOARD"
private fun showPermissionErrorIfNeeded(context: Context) {
if (PreferencesUtil.isClipboardNotificationsEnable(context)) {
Toast.makeText(context, R.string.warning_copy_permission, Toast.LENGTH_LONG).show()
}
}
fun checkAndLaunchNotification(
activity: Activity,
entry: EntryInfo
) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (ContextCompat.checkSelfPermission(
activity,
Manifest.permission.POST_NOTIFICATIONS
) == PackageManager.PERMISSION_GRANTED) {
launchNotificationIfAllowed(activity, entry)
} else {
showPermissionErrorIfNeeded(activity)
}
} else {
checkNotificationsPermission(
activity,
PreferencesUtil.isClipboardNotificationsEnable(activity)
) {
launchNotificationIfAllowed(activity, entry)
}
}

View File

@@ -36,10 +36,24 @@ import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.database.MainCredential
import com.kunzisoft.keepass.database.ProgressMessage
import com.kunzisoft.keepass.database.action.*
import com.kunzisoft.keepass.database.action.CreateDatabaseRunnable
import com.kunzisoft.keepass.database.action.LoadDatabaseRunnable
import com.kunzisoft.keepass.database.action.MergeDatabaseRunnable
import com.kunzisoft.keepass.database.action.ReloadDatabaseRunnable
import com.kunzisoft.keepass.database.action.RemoveUnlinkedDataDatabaseRunnable
import com.kunzisoft.keepass.database.action.SaveDatabaseRunnable
import com.kunzisoft.keepass.database.action.UpdateCompressionBinariesDatabaseRunnable
import com.kunzisoft.keepass.database.action.history.DeleteEntryHistoryDatabaseRunnable
import com.kunzisoft.keepass.database.action.history.RestoreEntryHistoryDatabaseRunnable
import com.kunzisoft.keepass.database.action.node.*
import com.kunzisoft.keepass.database.action.node.ActionNodesValues
import com.kunzisoft.keepass.database.action.node.AddEntryRunnable
import com.kunzisoft.keepass.database.action.node.AddGroupRunnable
import com.kunzisoft.keepass.database.action.node.AfterActionNodesFinish
import com.kunzisoft.keepass.database.action.node.CopyNodesRunnable
import com.kunzisoft.keepass.database.action.node.DeleteNodesRunnable
import com.kunzisoft.keepass.database.action.node.MoveNodesRunnable
import com.kunzisoft.keepass.database.action.node.UpdateEntryRunnable
import com.kunzisoft.keepass.database.action.node.UpdateGroupRunnable
import com.kunzisoft.keepass.database.element.Entry
import com.kunzisoft.keepass.database.element.Group
import com.kunzisoft.keepass.database.element.database.CompressionAlgorithm
@@ -62,9 +76,17 @@ import com.kunzisoft.keepass.utils.getParcelableExtraCompat
import com.kunzisoft.keepass.utils.getParcelableList
import com.kunzisoft.keepass.utils.putParcelableList
import com.kunzisoft.keepass.viewmodels.FileDatabaseInfo
import kotlinx.coroutines.*
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.async
import kotlinx.coroutines.channels.Channel
import java.util.*
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import java.util.UUID
open class DatabaseTaskNotificationService : LockNotificationService(), ProgressTaskUpdater {
@@ -139,6 +161,7 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
fun onDatabaseInfoChanged(
previousDatabaseInfo: SnapFileDatabaseInfo,
newDatabaseInfo: SnapFileDatabaseInfo,
readOnlyDatabase: Boolean
)
}
@@ -197,8 +220,11 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
// Call listener to indicate a change in database info
if (!mSaveState && previousDatabaseInfo != null) {
mDatabaseInfoListeners.forEach { listener ->
listener.onDatabaseInfoChanged(previousDatabaseInfo,
lastFileDatabaseInfo)
listener.onDatabaseInfoChanged(
previousDatabaseInfo,
lastFileDatabaseInfo,
mDatabase?.isReadOnly ?: true
)
}
}
mSnapFileDatabaseInfo = lastFileDatabaseInfo
@@ -565,7 +591,11 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
}
// Create the notification
startForeground(notificationId, notificationBuilder.build())
startForegroundCompat(
notificationId,
notificationBuilder,
NotificationServiceType.DATABASE_TASK
)
}
private fun removeIntentData(intent: Intent?) {
@@ -831,6 +861,7 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
if (intent.hasExtra(MAIN_CREDENTIAL_KEY)) {
databaseToMergeMainCredential = intent.getParcelableExtraCompat(MAIN_CREDENTIAL_KEY)
}
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
return MergeDatabaseRunnable(
this,
databaseToMergeUri,
@@ -839,7 +870,7 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
retrieveResponseFromChallenge(hardwareKey, seed)
},
database,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
!database.isReadOnly && saveDatabase,
{ hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
},
@@ -932,12 +963,13 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
val parentId: NodeId<*>? = intent.getParcelableExtraCompat(PARENT_ID_KEY)
val newGroup: Group? = intent.getParcelableExtraCompat(GROUP_KEY)
if (parentId == null || newGroup == null) return null
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
database.getGroupById(parentId)?.let { parent ->
AddGroupRunnable(this,
database,
newGroup,
parent,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
!database.isReadOnly && saveDatabase,
AfterActionNodesRunnable()
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
@@ -959,12 +991,13 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
val groupId: NodeId<*>? = intent.getParcelableExtraCompat(GROUP_ID_KEY)
val newGroup: Group? = intent.getParcelableExtraCompat(GROUP_KEY)
if (groupId == null || newGroup == null) return null
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
database.getGroupById(groupId)?.let { oldGroup ->
UpdateGroupRunnable(this,
database,
oldGroup,
newGroup,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
!database.isReadOnly && saveDatabase,
AfterActionNodesRunnable()
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
@@ -986,12 +1019,13 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
val parentId: NodeId<*>? = intent.getParcelableExtraCompat(PARENT_ID_KEY)
val newEntry: Entry? = intent.getParcelableExtraCompat(ENTRY_KEY)
if (parentId == null || newEntry == null) return null
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
database.getGroupById(parentId)?.let { parent ->
AddEntryRunnable(this,
database,
newEntry,
parent,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
!database.isReadOnly && saveDatabase,
AfterActionNodesRunnable()
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
@@ -1013,12 +1047,13 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
val entryId: NodeId<UUID>? = intent.getParcelableExtraCompat(ENTRY_ID_KEY)
val newEntry: Entry? = intent.getParcelableExtraCompat(ENTRY_KEY)
if (entryId == null || newEntry == null) return null
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
database.getEntryById(entryId)?.let { oldEntry ->
UpdateEntryRunnable(this,
database,
oldEntry,
newEntry,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
!database.isReadOnly && saveDatabase,
AfterActionNodesRunnable()
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
@@ -1039,12 +1074,13 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
&& intent.hasExtra(SAVE_DATABASE_KEY)
) {
val parentId: NodeId<*> = intent.getParcelableExtraCompat(PARENT_ID_KEY) ?: return null
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
database.getGroupById(parentId)?.let { newParent ->
CopyNodesRunnable(this,
database,
getListNodesFromBundle(database, intent.extras!!),
newParent,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
!database.isReadOnly && saveDatabase,
AfterActionNodesRunnable()
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
@@ -1065,12 +1101,13 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
&& intent.hasExtra(SAVE_DATABASE_KEY)
) {
val parentId: NodeId<*> = intent.getParcelableExtraCompat(PARENT_ID_KEY) ?: return null
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
database.getGroupById(parentId)?.let { newParent ->
MoveNodesRunnable(this,
database,
getListNodesFromBundle(database, intent.extras!!),
newParent,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
!database.isReadOnly && saveDatabase,
AfterActionNodesRunnable()
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
@@ -1089,11 +1126,12 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
&& intent.hasExtra(ENTRIES_ID_KEY)
&& intent.hasExtra(SAVE_DATABASE_KEY)
) {
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
DeleteNodesRunnable(this,
database,
getListNodesFromBundle(database, intent.extras!!),
resources.getString(R.string.recycle_bin),
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
!database.isReadOnly && saveDatabase,
AfterActionNodesRunnable()
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
@@ -1112,12 +1150,13 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
&& intent.hasExtra(SAVE_DATABASE_KEY)
) {
val entryId: NodeId<UUID> = intent.getParcelableExtraCompat(ENTRY_ID_KEY) ?: return null
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
database.getEntryById(entryId)?.let { mainEntry ->
RestoreEntryHistoryDatabaseRunnable(this,
database,
mainEntry,
intent.getIntExtra(ENTRY_HISTORY_POSITION_KEY, -1),
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
!database.isReadOnly && saveDatabase
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
}
@@ -1136,12 +1175,13 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
&& intent.hasExtra(SAVE_DATABASE_KEY)
) {
val entryId: NodeId<UUID> = intent.getParcelableExtraCompat(ENTRY_ID_KEY) ?: return null
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
database.getEntryById(entryId)?.let { mainEntry ->
DeleteEntryHistoryDatabaseRunnable(this,
database,
mainEntry,
intent.getIntExtra(ENTRY_HISTORY_POSITION_KEY, -1),
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
!database.isReadOnly && saveDatabase
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
}
@@ -1162,11 +1202,12 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
val oldElement: CompressionAlgorithm? = intent.getParcelableExtraCompat(OLD_ELEMENT_KEY)
val newElement: CompressionAlgorithm? = intent.getParcelableExtraCompat(NEW_ELEMENT_KEY)
if (oldElement == null || newElement == null) return null
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
return UpdateCompressionBinariesDatabaseRunnable(this,
database,
oldElement,
newElement,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
!database.isReadOnly && saveDatabase
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
}.apply {
@@ -1184,9 +1225,10 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
database: ContextualDatabase,
): ActionRunnable? {
return if (intent.hasExtra(SAVE_DATABASE_KEY)) {
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
return RemoveUnlinkedDataDatabaseRunnable(this,
database,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
!database.isReadOnly && saveDatabase
) { hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
}.apply {
@@ -1204,9 +1246,10 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
database: ContextualDatabase,
): ActionRunnable? {
return if (intent.hasExtra(SAVE_DATABASE_KEY)) {
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
return SaveDatabaseRunnable(this,
database,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
!database.isReadOnly && saveDatabase,
null,
{ hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)
@@ -1229,13 +1272,14 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
database: ContextualDatabase
): ActionRunnable? {
return if (intent.hasExtra(SAVE_DATABASE_KEY)) {
val saveDatabase = intent.getBooleanExtra(SAVE_DATABASE_KEY, false)
var databaseCopyUri: Uri? = null
if (intent.hasExtra(DATABASE_URI_KEY)) {
databaseCopyUri = intent.getParcelableExtraCompat(DATABASE_URI_KEY)
}
SaveDatabaseRunnable(this,
database,
!database.isReadOnly && intent.getBooleanExtra(SAVE_DATABASE_KEY, false),
!database.isReadOnly && saveDatabase,
null,
{ hardwareKey, seed ->
retrieveResponseFromChallenge(hardwareKey, seed)

View File

@@ -111,13 +111,18 @@ class KeyboardEntryNotificationService : LockNotificationService() {
.setContentIntent(null)
.setDeleteIntent(pendingDeleteIntent)
notificationManager?.cancel(notificationId)
notificationManager?.notify(notificationId, builder.build())
checkNotificationsPermission(this, PreferencesUtil.isKeyboardNotificationEntryEnable(this)) {
notificationManager?.notify(notificationId, builder.build())
}
// Timeout only if notification clear is available
if (PreferencesUtil.isClearKeyboardNotificationEnable(this)) {
if (mNotificationTimeoutMilliSecs != TimeoutHelper.NEVER) {
defineTimerJob(builder, mNotificationTimeoutMilliSecs) {
defineTimerJob(
builder,
NotificationServiceType.KEYBOARD,
mNotificationTimeoutMilliSecs
) {
stopNotificationAndSendLockIfNeeded()
}
}

View File

@@ -1,17 +1,31 @@
package com.kunzisoft.keepass.services
import android.Manifest
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.Service
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_NONE
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE
import android.os.Build
import android.os.IBinder
import android.util.TypedValue
import android.widget.Toast
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.activities.stylish.Stylish
import kotlinx.coroutines.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancel
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.joda.time.Instant
abstract class NotificationService : Service() {
@@ -20,6 +34,7 @@ abstract class NotificationService : Service() {
private var colorNotificationAccent: Int = 0
protected var mTimerJob: Job? = null
private var mReset: Boolean = false
protected abstract val notificationId: Int
@@ -74,21 +89,55 @@ abstract class NotificationService : Service() {
}
}
protected fun startForegroundCompat(notificationId: Int,
builder: NotificationCompat.Builder,
type: NotificationServiceType
) {
@Suppress("DEPRECATION")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val foregroundServiceTimer = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
} else {
FOREGROUND_SERVICE_TYPE_NONE
}
val foregroundType = when (type) {
NotificationServiceType.DATABASE_TASK -> FOREGROUND_SERVICE_TYPE_DATA_SYNC
NotificationServiceType.ATTACHMENT -> FOREGROUND_SERVICE_TYPE_DATA_SYNC
NotificationServiceType.CLIPBOARD -> foregroundServiceTimer
NotificationServiceType.KEYBOARD -> foregroundServiceTimer
NotificationServiceType.ADVANCED_UNLOCK -> foregroundServiceTimer
}
startForeground(notificationId, builder.build(), foregroundType)
} else {
startForeground(notificationId, builder.build())
}
}
protected fun defineTimerJob(builder: NotificationCompat.Builder,
type: NotificationServiceType,
timeoutMilliseconds: Long,
actionAfterASecond: (() -> Unit)? = null,
actionEnd: () -> Unit) {
mTimerJob?.cancel()
mTimerJob = CoroutineScope(Dispatchers.Main).launch {
if (timeoutMilliseconds > 0) {
val timeoutInSeconds = timeoutMilliseconds / 1000L
for (currentTime in timeoutInSeconds downTo 0) {
var startInstant = Instant.now().millis
var currentTime = timeoutMilliseconds
while (currentTime >= 0) {
// Reset the timer if needed
if (mReset) {
mReset = false
startInstant = Instant.now().millis
currentTime = timeoutMilliseconds
}
// Update every second
actionAfterASecond?.invoke()
builder.setProgress(100,
(currentTime * 100 / timeoutInSeconds).toInt(),
false)
startForeground(notificationId, builder.build())
(currentTime * 100 / timeoutMilliseconds).toInt(),
false)
startForegroundCompat(notificationId, builder, type)
delay(1000)
currentTime = timeoutMilliseconds - (Instant.now().millis - startInstant)
if (currentTime <= 0) {
actionEnd()
}
@@ -103,6 +152,10 @@ abstract class NotificationService : Service() {
}
}
protected fun resetTimeJob() {
mReset = true
}
override fun onDestroy() {
mTimerJob?.cancel()
mTimerJob = null
@@ -114,5 +167,25 @@ abstract class NotificationService : Service() {
companion object {
private const val CHANNEL_ID = "com.kunzisoft.keepass.notification.channel"
private const val CHANNEL_NAME = "KeePassDX notification"
fun checkNotificationsPermission(
context: Context,
showError: Boolean = true,
action: () -> Unit
) {
if (ContextCompat.checkSelfPermission(context,
Manifest.permission.POST_NOTIFICATIONS)
== PackageManager.PERMISSION_GRANTED) {
action.invoke()
} else {
if (showError) {
Toast.makeText(
context,
R.string.warning_copy_permission,
Toast.LENGTH_LONG
).show()
}
}
}
}
}

View File

@@ -0,0 +1,9 @@
package com.kunzisoft.keepass.services
enum class NotificationServiceType {
DATABASE_TASK,
ATTACHMENT,
CLIPBOARD,
KEYBOARD,
ADVANCED_UNLOCK
}

View File

@@ -483,13 +483,15 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
getString(R.string.setting_style_brightness_key),
getString(R.string.setting_icon_pack_choose_key),
getString(R.string.show_entry_colors_key),
getString(R.string.hide_expired_entries_key),
getString(R.string.hide_templates_key),
getString(R.string.list_entries_show_username_key),
getString(R.string.list_groups_show_number_entries_key),
getString(R.string.recursive_number_entries_key),
getString(R.string.show_otp_token_key),
getString(R.string.show_uuid_key),
getString(R.string.list_size_key),
getString(R.string.monospace_font_fields_enable_key),
getString(R.string.hide_expired_entries_key),
getString(R.string.enable_education_screens_key),
getString(R.string.reset_education_screens_key) -> {
DATABASE_PREFERENCE_CHANGED = true

View File

@@ -120,6 +120,18 @@ object PreferencesUtil {
context.resources.getBoolean(R.bool.show_entry_colors_default))
}
fun showExpiredEntries(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return ! prefs.getBoolean(context.getString(R.string.hide_expired_entries_key),
context.resources.getBoolean(R.bool.hide_expired_entries_default))
}
fun showTemplates(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return ! prefs.getBoolean(context.getString(R.string.hide_templates_key),
context.resources.getBoolean(R.bool.hide_templates_default))
}
fun hideProtectedValue(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return prefs.getBoolean(context.getString(R.string.hide_password_key),
@@ -144,6 +156,12 @@ object PreferencesUtil {
context.resources.getBoolean(R.bool.list_groups_show_number_entries_default))
}
fun recursiveNumberEntries(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return prefs.getBoolean(context.getString(R.string.recursive_number_entries_key),
context.resources.getBoolean(R.bool.recursive_number_entries_default))
}
fun showOTPToken(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return prefs.getBoolean(context.getString(R.string.show_otp_token_key),
@@ -156,12 +174,6 @@ object PreferencesUtil {
context.resources.getBoolean(R.bool.show_uuid_default))
}
fun showExpiredEntries(context: Context): Boolean {
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
return ! prefs.getBoolean(context.getString(R.string.hide_expired_entries_key),
context.resources.getBoolean(R.bool.hide_expired_entries_default))
}
fun getStyle(context: Context): String {
val defaultStyleString = Stylish.defaultStyle(context)
val styleString = PreferenceManager.getDefaultSharedPreferences(context)
@@ -841,15 +853,17 @@ object PreferencesUtil {
context.getString(R.string.setting_style_brightness_key) -> editor.putString(name, value)
context.getString(R.string.setting_icon_pack_choose_key) -> editor.putString(name, value)
context.getString(R.string.show_entry_colors_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.hide_expired_entries_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.hide_templates_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.hide_password_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.colorize_password_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.list_entries_show_username_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.list_groups_show_number_entries_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.recursive_number_entries_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.show_otp_token_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.show_uuid_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.list_size_key) -> editor.putString(name, value)
context.getString(R.string.monospace_font_fields_enable_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.hide_expired_entries_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.enable_education_screens_key) -> editor.putBoolean(name, value.toBoolean())
context.getString(R.string.password_generator_length_key) -> editor.putInt(name, value.toInt())

View File

@@ -26,7 +26,7 @@ import com.kunzisoft.keepass.model.SearchInfo
class AutofillBlocklistWebDomainPreferenceDialogFragmentCompat
: AutofillBlocklistPreferenceDialogFragmentCompat() {
override fun buildSearchInfoFromString(searchInfoString: String): SearchInfo? {
override fun buildSearchInfoFromString(searchInfoString: String): SearchInfo {
val newSearchInfo = searchInfoString
// remove prefix https://
.replace(Regex("^.*://"), "")

View File

@@ -29,6 +29,7 @@ import android.content.Intent
import android.content.IntentFilter
import android.os.Build
import android.util.Log
import androidx.core.content.ContextCompat
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.ContextualDatabase
import com.kunzisoft.keepass.magikeyboard.MagikeyboardService
@@ -45,9 +46,9 @@ const val LOCK_ACTION = "com.kunzisoft.keepass.LOCK"
const val REMOVE_ENTRY_MAGIKEYBOARD_ACTION = "com.kunzisoft.keepass.REMOVE_ENTRY_MAGIKEYBOARD"
const val BACK_PREVIOUS_KEYBOARD_ACTION = "com.kunzisoft.keepass.BACK_PREVIOUS_KEYBOARD"
class LockReceiver(var lockAction: () -> Unit) : BroadcastReceiver() {
class LockReceiver(private var lockAction: () -> Unit) : BroadcastReceiver() {
var mLockPendingIntent: PendingIntent? = null
private var mLockPendingIntent: PendingIntent? = null
var backToPreviousKeyboardAction: (() -> Unit)? = null
override fun onReceive(context: Context, intent: Intent) {
@@ -60,7 +61,7 @@ class LockReceiver(var lockAction: () -> Unit) : BroadcastReceiver() {
}
Intent.ACTION_SCREEN_OFF -> {
if (PreferencesUtil.isLockDatabaseWhenScreenShutOffEnable(context)) {
mLockPendingIntent = PendingIntent.getBroadcast(context,
val lockPendingIntent = PendingIntent.getBroadcast(context,
4575,
Intent(intent).apply {
action = LOCK_ACTION
@@ -71,6 +72,7 @@ class LockReceiver(var lockAction: () -> Unit) : BroadcastReceiver() {
0
}
)
this.mLockPendingIntent = lockPendingIntent
// Launch the effective action after a small time
val first: Long = System.currentTimeMillis() + context.getString(R.string.timeout_screen_off).toLong()
(context.getSystemService(ALARM_SERVICE) as AlarmManager?)?.let { alarmManager ->
@@ -80,20 +82,20 @@ class LockReceiver(var lockAction: () -> Unit) : BroadcastReceiver() {
alarmManager.set(
AlarmManager.RTC_WAKEUP,
first,
mLockPendingIntent
lockPendingIntent
)
} else {
alarmManager.setExact(
AlarmManager.RTC_WAKEUP,
first,
mLockPendingIntent
lockPendingIntent
)
}
} else {
alarmManager.set(
AlarmManager.RTC_WAKEUP,
first,
mLockPendingIntent
lockPendingIntent
)
}
}
@@ -120,9 +122,9 @@ class LockReceiver(var lockAction: () -> Unit) : BroadcastReceiver() {
}
private fun cancelLockPendingIntent(context: Context) {
mLockPendingIntent?.let {
mLockPendingIntent?.let { lockPendingIntent ->
val alarmManager = context.getSystemService(ALARM_SERVICE) as AlarmManager?
alarmManager?.cancel(mLockPendingIntent)
alarmManager?.cancel(lockPendingIntent)
mLockPendingIntent = null
}
}
@@ -131,7 +133,7 @@ class LockReceiver(var lockAction: () -> Unit) : BroadcastReceiver() {
fun Context.registerLockReceiver(lockReceiver: LockReceiver?,
registerKeyboardAction: Boolean = false) {
lockReceiver?.let {
registerReceiver(it, IntentFilter().apply {
ContextCompat.registerReceiver(this, it, IntentFilter().apply {
addAction(Intent.ACTION_SCREEN_OFF)
addAction(Intent.ACTION_SCREEN_ON)
addAction(LOCK_ACTION)
@@ -139,7 +141,7 @@ fun Context.registerLockReceiver(lockReceiver: LockReceiver?,
addAction(REMOVE_ENTRY_MAGIKEYBOARD_ACTION)
addAction(BACK_PREVIOUS_KEYBOARD_ACTION)
}
})
}, ContextCompat.RECEIVER_EXPORTED)
}
}

View File

@@ -3,13 +3,17 @@ package com.kunzisoft.keepass.utils
import android.content.res.Resources
import androidx.core.os.ConfigurationCompat
import com.kunzisoft.keepass.database.element.DateInstant
import com.kunzisoft.keepass.model.DataDate
import java.text.DateFormat
import java.util.Calendar
import java.util.Locale
import java.util.TimeZone
object TimeUtil {
fun DateInstant.getDateTimeString(resources: Resources): String {
val locale = ConfigurationCompat.getLocales(resources.configuration)[0] ?: Locale.ROOT
val date = instant.toDate()
return when (type) {
DateInstant.Type.DATE -> DateFormat.getDateInstance(
DateFormat.MEDIUM,
@@ -26,4 +30,22 @@ object TimeUtil {
.format(date)
}
}
// https://github.com/material-components/material-components-android/issues/882#issuecomment-1111374962
// To fix UTC time in date picker
fun datePickerToDataDate(millis: Long): DataDate {
val selectedUtc = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
selectedUtc.timeInMillis = millis
val selectedLocal = Calendar.getInstance()
selectedLocal.clear()
selectedLocal.set(
selectedUtc.get(Calendar.YEAR),
selectedUtc.get(Calendar.MONTH),
selectedUtc.get(Calendar.DAY_OF_MONTH))
return DataDate(
selectedLocal.get(Calendar.YEAR),
selectedLocal.get(Calendar.MONTH) + 1,
selectedLocal.get(Calendar.DAY_OF_MONTH),
)
}
}

View File

@@ -68,6 +68,7 @@ class AddNodeButtonView @JvmOverloads constructor(context: Context,
init {
inflate(context)
hideButton()
}
private fun inflate(context: Context) {

View File

@@ -1,3 +0,0 @@
package com.kunzisoft.keepass.view
data class DataTime(val hours: Int, val minutes: Int)

View File

@@ -111,7 +111,7 @@ class DateTimeEditFieldView @JvmOverloads constructor(context: Context,
mDefault
}
set(value) {
mDateTime = DateInstant(value.date, mDateTime.type)
mDateTime = DateInstant(value.instant, mDateTime.type)
entryExpiresTextView.text = if (entryExpiresCheckBox.isChecked) {
mDateTime.getDateTimeString(resources)
} else {

View File

@@ -57,8 +57,6 @@ class DateTimeFieldView @JvmOverloads constructor(context: Context,
}
private fun assignExpiresDateText() {
val isExpires = mDateTime.isCurrentlyExpire()
// Show or not the warning icon
expiresImage.isVisible = if (mActivated) {
isExpires
@@ -100,6 +98,13 @@ class DateTimeFieldView @JvmOverloads constructor(context: Context,
mDateTime.type = value
}
var isExpirable: Boolean = false
val isExpires: Boolean
get() {
return isExpirable && mDateTime.isCurrentlyExpire()
}
override var activation: Boolean
get() {
return mActivated
@@ -128,7 +133,7 @@ class DateTimeFieldView @JvmOverloads constructor(context: Context,
mDefault
}
set(value) {
mDateTime = DateInstant(value.date, mDateTime.type)
mDateTime = DateInstant(value.instant, mDateTime.type)
assignExpiresDateText()
}

View File

@@ -33,20 +33,19 @@ import android.widget.TextView
import com.google.android.material.progressindicator.LinearProgressIndicator
import com.google.android.material.textfield.TextInputLayout
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.password.PasswordGenerator
import com.kunzisoft.keepass.password.PasswordEntropy
import com.kunzisoft.keepass.password.PasswordGenerator
import com.kunzisoft.keepass.settings.PreferencesUtil
class PassKeyView @JvmOverloads constructor(context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0)
class PasswordEditView @JvmOverloads constructor(context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0)
: FrameLayout(context, attrs, defStyle) {
private var mPasswordEntropyCalculator: PasswordEntropy? = null
private val passwordInputLayout: TextInputLayout
private val passwordText: EditText
private var textModified = false
private val passwordStrengthProgress: LinearProgressIndicator
private val passwordEntropy: TextView
@@ -60,13 +59,13 @@ class PassKeyView @JvmOverloads constructor(context: Context,
init {
context.theme.obtainStyledAttributes(
attrs,
R.styleable.PassKeyView,
R.styleable.PasswordView,
0, 0).apply {
try {
mViewHint = getString(R.styleable.PassKeyView_passKeyHint)
mViewHint = getString(R.styleable.PasswordView_passwordHint)
?: context.getString(R.string.password)
mMaxLines = getInteger(R.styleable.PassKeyView_passKeyMaxLines, mMaxLines)
mShowPassword = getBoolean(R.styleable.PassKeyView_passKeyVisible,
mMaxLines = getInteger(R.styleable.PasswordView_passwordMaxLines, mMaxLines)
mShowPassword = getBoolean(R.styleable.PasswordView_passwordVisible,
!PreferencesUtil.hideProtectedValue(context))
} finally {
recycle()
@@ -74,24 +73,24 @@ class PassKeyView @JvmOverloads constructor(context: Context,
}
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater?
inflater?.inflate(R.layout.view_passkey, this)
inflater?.inflate(R.layout.view_password_edit, this)
passwordInputLayout = findViewById(R.id.password_input_layout)
passwordInputLayout = findViewById(R.id.password_edit_input_layout)
passwordInputLayout?.hint = mViewHint
passwordText = findViewById(R.id.password_text)
passwordText = findViewById(R.id.password_edit_text)
if (mShowPassword) {
passwordText?.inputType = passwordText.inputType or
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
}
passwordText?.maxLines = mMaxLines
passwordText?.applyFontVisibility()
passwordStrengthProgress = findViewById(R.id.password_strength_progress)
passwordStrengthProgress = findViewById(R.id.password_edit_strength_progress)
passwordStrengthProgress?.apply {
setIndicatorColor(PasswordEntropy.Strength.RISKY.color)
progress = 0
max = 100
}
passwordEntropy = findViewById(R.id.password_entropy)
passwordEntropy = findViewById(R.id.password_edit_entropy)
mPasswordEntropyCalculator = PasswordEntropy {
passwordText?.text?.toString()?.let { firstPassword ->
@@ -113,19 +112,11 @@ class PassKeyView @JvmOverloads constructor(context: Context,
}
override fun afterTextChanged(editable: Editable) {
if (textModified) {
textModified = false
} else {
textModified = true
val selectionStart = passwordText.selectionStart
val selectionEnd = passwordText.selectionEnd
passwordString = editable.toString()
passwordText.setSelection(selectionStart, selectionEnd)
}
mPasswordTextWatchers.forEach {
it.afterTextChanged(editable)
}
getEntropyStrength(editable.toString())
PasswordGenerator.colorizedPassword(editable)
}
}
passwordText?.addTextChangedListener(mPasswordTextWatcher)

View File

@@ -0,0 +1,159 @@
/*
* Copyright 2024 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.view
import android.content.Context
import android.os.Build
import android.text.Spannable
import android.util.AttributeSet
import android.util.TypedValue
import android.widget.TextView
import androidx.core.view.ViewCompat
import androidx.core.view.setPadding
import androidx.core.widget.TextViewCompat
import androidx.core.widget.doAfterTextChanged
import com.google.android.material.progressindicator.LinearProgressIndicator
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.password.PasswordEntropy
import com.kunzisoft.keepass.password.PasswordGenerator
import com.kunzisoft.keepass.settings.PreferencesUtil
class PasswordTextEditFieldView @JvmOverloads constructor(context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0)
: TextEditFieldView(context, attrs, defStyle) {
private var mPasswordEntropyCalculator: PasswordEntropy = PasswordEntropy {
valueView.text?.toString()?.let { firstPassword ->
getEntropyStrength(firstPassword)
}
}
private var isColorizedPasswordActivated = PreferencesUtil.colorizePassword(context)
private var passwordProgressViewId = ViewCompat.generateViewId()
private var passwordEntropyViewId = ViewCompat.generateViewId()
private var mPasswordProgress = LinearProgressIndicator(context).apply {
layoutParams = LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT
).apply {
addRule(ALIGN_PARENT_BOTTOM)
}
setPadding(
TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
1f,
context.resources.displayMetrics
).toInt()
)
setIndicatorColor(PasswordEntropy.Strength.RISKY.color)
progress = 0
max = 100
}
private val mPasswordEntropyView = TextView(context).apply {
layoutParams = LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
).apply {
addRule(ALIGN_PARENT_BOTTOM)
}
setPadding(
TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
4f,
context.resources.displayMetrics
).toInt()
)
TextViewCompat.setTextAppearance(this, R.style.KeepassDXStyle_Text_Indicator)
}
init {
buildViews()
valueView.doAfterTextChanged { editable ->
getEntropyStrength(editable.toString())
PasswordGenerator.colorizedPassword(editable)
}
addView(mPasswordProgress)
addView(mPasswordEntropyView)
}
private fun buildViews() {
mPasswordProgress.apply {
id = passwordProgressViewId
layoutParams = (layoutParams as LayoutParams?)?.also {
it.addRule(LEFT_OF, actionImageButtonId)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
it.addRule(START_OF, actionImageButtonId)
}
}
}
mPasswordEntropyView.apply {
id = passwordEntropyViewId
layoutParams = (layoutParams as LayoutParams?)?.also {
it.addRule(ALIGN_RIGHT, passwordProgressViewId)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
it.addRule(ALIGN_END, passwordProgressViewId)
}
}
}
}
private fun getEntropyStrength(passwordText: String) {
mPasswordEntropyCalculator.getEntropyStrength(passwordText) { entropyStrength ->
mPasswordProgress.apply {
post {
setIndicatorColor(entropyStrength.strength.color)
setProgressCompat(entropyStrength.estimationPercent, true)
}
}
mPasswordEntropyView.apply {
post {
text = PasswordEntropy.getStringEntropy(resources, entropyStrength.entropy)
}
}
}
}
override fun spannableValue(value: String?): Spannable? {
if (value == null)
return null
return if (isColorizedPasswordActivated)
PasswordGenerator.getColorizedPassword(value)
else
super.spannableValue(value)
}
override var label: String
get() {
return super.label
}
set(value) {
super.label = value
// Define views Ids with label value
passwordProgressViewId = "passwordProgressViewId $value".hashCode()
passwordEntropyViewId = "passwordEntropyViewId $value".hashCode()
buildViews()
}
}

View File

@@ -0,0 +1,119 @@
/*
* Copyright 2024 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.view
import android.content.Context
import android.graphics.Color
import android.text.SpannableString
import android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
import android.text.style.ImageSpan
import android.util.AttributeSet
import androidx.annotation.StringRes
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.DrawableCompat
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.password.PasswordEntropy
import com.kunzisoft.keepass.password.PasswordGenerator
import com.kunzisoft.keepass.settings.PreferencesUtil
class PasswordTextFieldView @JvmOverloads constructor(context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0)
: TextFieldView(context, attrs, defStyle) {
private var mPasswordEntropyCalculator: PasswordEntropy = PasswordEntropy {
valueView.text?.toString()?.let { firstPassword ->
getEntropyStrength(firstPassword)
}
}
private var indicatorDrawable = ContextCompat.getDrawable(
context,
R.drawable.ic_shield_white_24dp
)?.apply {
val lineHeight = labelView.lineHeight
setBounds(0,0,lineHeight, lineHeight)
DrawableCompat.setTint(this, Color.TRANSPARENT)
}
override var label: String
get() {
return labelView.text.toString().removeSuffix(ICON_STRING_SPACES)
}
set(value) {
indicatorDrawable?.let { drawable ->
val spannableString = SpannableString("$value$ICON_STRING_SPACES")
val startPosition = spannableString.split(ICON_STRING)[0].length
val endPosition = startPosition + ICON_STRING.length
spannableString
.setSpan(
ImageSpan(drawable),
startPosition,
endPosition,
SPAN_EXCLUSIVE_EXCLUSIVE
)
labelView.text = spannableString
} ?: kotlin.run {
labelView.text = value
}
}
override fun setLabel(@StringRes labelId: Int) {
label = resources.getString(labelId)
}
override var value: String
get() {
return valueView.text.toString()
}
set(value) {
val spannableString =
if (PreferencesUtil.colorizePassword(context))
PasswordGenerator.getColorizedPassword(value)
else
SpannableString(value)
valueView.text = spannableString
changeProtectedValueParameters()
}
override fun setValue(@StringRes valueId: Int) {
value = resources.getString(valueId)
}
private fun getEntropyStrength(passwordText: String) {
mPasswordEntropyCalculator.getEntropyStrength(passwordText) { entropyStrength ->
labelView.apply {
post {
val strengthColor = entropyStrength.strength.color
indicatorDrawable?.let { drawable ->
DrawableCompat.setTint(drawable, strengthColor)
}
invalidate()
}
}
}
}
companion object {
private const val ICON_STRING = "[icon]"
private const val ICON_STRING_SPACES = " $ICON_STRING"
}
}

View File

@@ -31,6 +31,7 @@ class SearchFiltersView @JvmOverloads constructor(context: Context,
private var searchUsername: CompoundButton
private var searchPassword: CompoundButton
private var searchURL: CompoundButton
private var searchByURLDomain: Boolean = false
private var searchExpired: CompoundButton
private var searchNotes: CompoundButton
private var searchOther: CompoundButton
@@ -50,6 +51,7 @@ class SearchFiltersView @JvmOverloads constructor(context: Context,
this.searchInUsernames = searchUsername.isChecked
this.searchInPasswords = searchPassword.isChecked
this.searchInUrls = searchURL.isChecked
this.searchByDomain = searchByURLDomain
this.searchInExpired = searchExpired.isChecked
this.searchInNotes = searchNotes.isChecked
this.searchInOther = searchOther.isChecked
@@ -70,6 +72,7 @@ class SearchFiltersView @JvmOverloads constructor(context: Context,
searchUsername.isChecked = value.searchInUsernames
searchPassword.isChecked = value.searchInPasswords
searchURL.isChecked = value.searchInUrls
searchByURLDomain = value.searchByDomain
searchExpired.isChecked = value.searchInExpired
searchNotes.isChecked = value.searchInNotes
searchOther.isChecked = value.searchInOther

View File

@@ -18,8 +18,14 @@ import com.kunzisoft.keepass.database.element.DateInstant
import com.kunzisoft.keepass.database.element.Field
import com.kunzisoft.keepass.database.element.icon.IconImage
import com.kunzisoft.keepass.database.element.security.ProtectedString
import com.kunzisoft.keepass.database.element.template.*
import com.kunzisoft.keepass.database.element.template.Template
import com.kunzisoft.keepass.database.element.template.TemplateAttribute
import com.kunzisoft.keepass.database.element.template.TemplateAttributeAction
import com.kunzisoft.keepass.database.element.template.TemplateAttributeOption
import com.kunzisoft.keepass.database.element.template.TemplateAttributeType
import com.kunzisoft.keepass.database.element.template.TemplateEngine
import com.kunzisoft.keepass.database.element.template.TemplateEngine.Companion.addTemplateDecorator
import com.kunzisoft.keepass.database.element.template.TemplateField
import com.kunzisoft.keepass.model.EntryInfo
import com.kunzisoft.keepass.otp.OtpElement
import com.kunzisoft.keepass.otp.OtpEntryFields
@@ -608,9 +614,8 @@ abstract class TemplateAbstractView<
getViewFieldByName(oldField.name)?.view?.let { viewToReplace ->
val oldValue = getCustomField(oldField.name).protectedValue.toString()
val parentGroup = viewToReplace.parent as ViewGroup
val indexInParent = parentGroup.indexOfChild(viewToReplace)
parentGroup.removeView(viewToReplace)
val parentGroup = viewToReplace.parent as? ViewGroup?
parentGroup?.removeView(viewToReplace)
val newCustomFieldWithValue = if (keepOldValue)
Field(newField.name,
@@ -624,7 +629,9 @@ abstract class TemplateAbstractView<
val newCustomView = buildViewForCustomField(newCustomFieldWithValue)
newCustomView?.let {
parentGroup.addView(newCustomView, indexInParent)
parentGroup?.indexOfChild(viewToReplace)?.let { indexInParent ->
parentGroup.addView(newCustomView, indexInParent)
}
mViewFields.add(
oldPosition,
ViewField(

View File

@@ -17,8 +17,10 @@ import com.kunzisoft.keepass.database.element.template.TemplateAttribute
import com.kunzisoft.keepass.database.element.template.TemplateAttributeAction
import com.kunzisoft.keepass.database.element.template.TemplateField
import com.kunzisoft.keepass.database.helper.getLocalizedName
import com.kunzisoft.keepass.database.helper.isStandardPasswordName
import com.kunzisoft.keepass.model.DataDate
import com.kunzisoft.keepass.model.DataTime
import com.kunzisoft.keepass.otp.OtpEntryFields
import org.joda.time.DateTime
class TemplateEditView @JvmOverloads constructor(context: Context,
@@ -112,15 +114,22 @@ class TemplateEditView @JvmOverloads constructor(context: Context,
override fun buildLinearTextView(templateAttribute: TemplateAttribute,
field: Field): TextEditFieldView? {
return context?.let {
TextEditFieldView(it).apply {
(if (TemplateField.isStandardPasswordName(context, templateAttribute.label))
PasswordTextEditFieldView(it)
else TextEditFieldView(it)).apply {
// hiddenProtectedValue (mHideProtectedValue) don't work with TextInputLayout
setProtection(field.protectedValue.isProtected)
default = templateAttribute.default
setMaxChars(templateAttribute.options.getNumberChars())
setMaxLines(templateAttribute.options.getNumberLines())
setActionClick(templateAttribute, field, this)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_NO
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
if (field.protectedValue.isProtected) {
textDirection = TEXT_DIRECTION_LTR
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_NO
}
}
}
}
@@ -211,35 +220,31 @@ class TemplateEditView @JvmOverloads constructor(context: Context,
val dateTimeView = getFieldViewById(viewId)
if (dateTimeView is DateTimeEditFieldView) {
dateTimeView.dateTime = DateInstant(
action.invoke(dateTimeView.dateTime).date,
dateTimeView.dateTime.type)
action.invoke(dateTimeView.dateTime).instant,
dateTimeView.dateTime.type
)
}
}
}
fun setCurrentDateTimeValue(dateMilliseconds: Long) {
fun setCurrentDateTimeValue(date: DataDate) {
// Save the date
setCurrentDateTimeSelection { instant ->
val newDateInstant = DateInstant(
DateTime(instant.date)
.withMillis(dateMilliseconds)
.toDate(), instant.type)
if (instant.type == DateInstant.Type.DATE_TIME) {
val instantTime = DateInstant(instant.date, DateInstant.Type.TIME)
setCurrentDateTimeSelection { dateInstant ->
dateInstant.setDate(date.year, date.month, date.day)
if (dateInstant.type == DateInstant.Type.DATE_TIME) {
// Trick to recall selection with time
mOnDateInstantClickListener?.invoke(instantTime)
mOnDateInstantClickListener?.invoke(
DateInstant(dateInstant.instant, DateInstant.Type.TIME)
)
}
newDateInstant
dateInstant
}
}
fun setCurrentTimeValue(time: DataTime) {
setCurrentDateTimeSelection { instant ->
DateInstant(
DateTime(instant.date)
.withHourOfDay(time.hours)
.withMinuteOfHour(time.minutes)
.toDate(), instant.type)
setCurrentDateTimeSelection { dateInstant ->
dateInstant.setTime(time.hour, time.minute)
dateInstant
}
}

View File

@@ -1,6 +1,7 @@
package com.kunzisoft.keepass.view
import android.content.Context
import android.os.Build
import android.util.AttributeSet
import android.view.View
import androidx.core.view.isVisible
@@ -10,6 +11,7 @@ import com.kunzisoft.keepass.database.element.security.ProtectedString
import com.kunzisoft.keepass.database.element.template.TemplateAttribute
import com.kunzisoft.keepass.database.element.template.TemplateField
import com.kunzisoft.keepass.database.helper.getLocalizedName
import com.kunzisoft.keepass.database.helper.isStandardPasswordName
import com.kunzisoft.keepass.model.OtpModel
import com.kunzisoft.keepass.otp.OtpElement
import com.kunzisoft.keepass.otp.OtpEntryFields.OTP_TOKEN_FIELD
@@ -48,7 +50,9 @@ class TemplateView @JvmOverloads constructor(context: Context,
field: Field): TextFieldView? {
// Add an action icon if needed
return context?.let {
TextFieldView(it).apply {
(if (TemplateField.isStandardPasswordName(context, templateAttribute.label))
PasswordTextFieldView(it)
else TextFieldView(it)).apply {
applyFontVisibility(mFontInVisibility)
setProtection(field.protectedValue.isProtected, mHideProtectedValue)
label = templateAttribute.alias
@@ -59,6 +63,9 @@ class TemplateView @JvmOverloads constructor(context: Context,
// Here the value is often empty
if (field.protectedValue.isProtected) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
textDirection = TEXT_DIRECTION_LTR
}
if (mFirstTimeAskAllowCopyProtectedFields) {
setCopyButtonState(TextFieldView.ButtonState.DEACTIVATE)
setCopyButtonClickListener { _, _ ->
@@ -100,13 +107,12 @@ class TemplateView @JvmOverloads constructor(context: Context,
return context?.let {
DateTimeFieldView(it).apply {
label = TemplateField.getLocalizedName(context, field.name)
val dateInstantType = templateAttribute.options.getDateFormat()
type = templateAttribute.options.getDateFormat()
isExpirable = templateAttribute.options.getExpirable()
try {
val value = field.protectedValue.toString().trim()
type = dateInstantType
activation = value.isNotEmpty()
} catch (e: Exception) {
type = dateInstantType
activation = false
}
}
@@ -173,6 +179,9 @@ class TemplateView @JvmOverloads constructor(context: Context,
otpElement.type.name,
ProtectedString(false, otpElement.token)))
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
textDirection = TEXT_DIRECTION_LTR
}
mLastOtpTokenView = this
mOtpRunnable = Runnable {
if (otpElement.shouldRefreshToken()) {

View File

@@ -8,45 +8,40 @@ import android.text.Spannable
import android.text.SpannableString
import android.util.AttributeSet
import android.util.TypedValue
import android.view.ContextThemeWrapper
import android.view.View
import android.view.inputmethod.EditorInfo
import android.widget.LinearLayout
import android.widget.RelativeLayout
import androidx.annotation.DrawableRes
import androidx.appcompat.view.ContextThemeWrapper
import androidx.appcompat.widget.AppCompatImageButton
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
import androidx.core.widget.doAfterTextChanged
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.template.TemplateField
import com.kunzisoft.keepass.database.helper.isStandardPasswordName
import com.kunzisoft.keepass.password.PasswordGenerator
import com.kunzisoft.keepass.settings.PreferencesUtil
class TextEditFieldView @JvmOverloads constructor(context: Context,
open class TextEditFieldView @JvmOverloads constructor(context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0)
: RelativeLayout(context, attrs, defStyle), GenericTextFieldView {
private var labelViewId = ViewCompat.generateViewId()
private var valueViewId = ViewCompat.generateViewId()
private var actionImageButtonId = ViewCompat.generateViewId()
private var textModified = false
private var isColorizedPasswordActivated = PreferencesUtil.colorizePassword(context)
protected var actionImageButtonId = ViewCompat.generateViewId()
private val labelView = TextInputLayout(context).apply {
layoutParams = LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT)
}
private val valueView = TextInputEditText(
ContextThemeWrapper(getContext(),
R.style.KeepassDXStyle_TextInputLayout)
protected val valueView = TextInputEditText(
ContextThemeWrapper(
getContext(),
R.style.KeepassDXStyle_TextInputLayout
)
).apply {
layoutParams = LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
@@ -62,7 +57,10 @@ class TextEditFieldView @JvmOverloads constructor(context: Context,
maxLines = 1
}
private var actionImageButton = AppCompatImageButton(
ContextThemeWrapper(context, R.style.KeepassDXStyle_ImageButton_Simple), null, 0).apply {
ContextThemeWrapper(
context,
R.style.KeepassDXStyle_ImageButton_Simple
), null, 0).apply {
layoutParams = LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT).also {
@@ -83,20 +81,6 @@ class TextEditFieldView @JvmOverloads constructor(context: Context,
init {
// Manually write view to avoid view id bugs
buildViews()
// To change the password color dynamically
valueView.doAfterTextChanged { editable ->
editable?.let { text ->
if (textModified) {
textModified = false
} else {
textModified = true
val selectionStart = valueView.selectionStart
val selectionEnd = valueView.selectionEnd
value = spannableValue(text.toString()).toString()
valueView.setSelection(selectionStart, selectionEnd)
}
}
}
labelView.addView(valueView)
addView(labelView)
addView(actionImageButton)
@@ -105,10 +89,10 @@ class TextEditFieldView @JvmOverloads constructor(context: Context,
private fun buildViews() {
labelView.apply {
id = labelViewId
layoutParams = (layoutParams as LayoutParams?).also {
it?.addRule(LEFT_OF, actionImageButtonId)
layoutParams = (layoutParams as LayoutParams?)?.also {
it.addRule(LEFT_OF, actionImageButtonId)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
it?.addRule(START_OF, actionImageButtonId)
it.addRule(START_OF, actionImageButtonId)
}
}
}
@@ -129,15 +113,6 @@ class TextEditFieldView @JvmOverloads constructor(context: Context,
return actionImageButton
}
private fun spannableValue(value: String?): Spannable? {
if (value == null)
return null
return if (isColorizedPasswordActivated && TemplateField.isStandardPasswordName(context, label))
PasswordGenerator.getColorizedPassword(value)
else
SpannableString(value)
}
override var label: String
get() {
return labelView.hint?.toString() ?: ""
@@ -151,6 +126,10 @@ class TextEditFieldView @JvmOverloads constructor(context: Context,
buildViews()
}
protected open fun spannableValue(value: String?): Spannable? {
return SpannableString(value)
}
override var value: String
get() {
return valueView.text?.toString() ?: ""

View File

@@ -22,7 +22,6 @@ package com.kunzisoft.keepass.view
import android.content.Context
import android.os.Build
import android.text.InputFilter
import android.text.SpannableString
import android.text.util.Linkify
import android.util.AttributeSet
import android.util.TypedValue
@@ -38,15 +37,11 @@ import androidx.core.text.util.LinkifyCompat
import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
import com.kunzisoft.keepass.R
import com.kunzisoft.keepass.database.element.template.TemplateField
import com.kunzisoft.keepass.database.helper.isStandardPasswordName
import com.kunzisoft.keepass.model.EntryInfo.Companion.APPLICATION_ID_FIELD_NAME
import com.kunzisoft.keepass.password.PasswordGenerator
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.utils.UriUtil.openExternalApp
class TextFieldView @JvmOverloads constructor(context: Context,
open class TextFieldView @JvmOverloads constructor(context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0)
: RelativeLayout(context, attrs, defStyle), GenericTextFieldView {
@@ -56,7 +51,7 @@ class TextFieldView @JvmOverloads constructor(context: Context,
private var showButtonId = ViewCompat.generateViewId()
private var copyButtonId = ViewCompat.generateViewId()
private val labelView = AppCompatTextView(context).apply {
protected val labelView = AppCompatTextView(context).apply {
setTextAppearance(context,
R.style.KeepassDXStyle_TextAppearance_LabelTextStyle)
layoutParams = LayoutParams(
@@ -77,7 +72,7 @@ class TextFieldView @JvmOverloads constructor(context: Context,
}
}
}
private val valueView = AppCompatTextView(context).apply {
protected val valueView = AppCompatTextView(context).apply {
setTextAppearance(context,
R.style.KeepassDXStyle_TextAppearance_TextNode)
layoutParams = LayoutParams(
@@ -131,46 +126,46 @@ class TextFieldView @JvmOverloads constructor(context: Context,
private fun buildViews() {
copyButton.apply {
id = copyButtonId
layoutParams = (layoutParams as LayoutParams?).also {
it?.addRule(ALIGN_PARENT_RIGHT)
layoutParams = (layoutParams as LayoutParams?)?.also {
it.addRule(ALIGN_PARENT_RIGHT)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
it?.addRule(ALIGN_PARENT_END)
it.addRule(ALIGN_PARENT_END)
}
}
}
showButton.apply {
id = showButtonId
layoutParams = (layoutParams as LayoutParams?).also {
layoutParams = (layoutParams as LayoutParams?)?.also {
if (copyButton.isVisible) {
it?.addRule(LEFT_OF, copyButtonId)
it.addRule(LEFT_OF, copyButtonId)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
it?.addRule(START_OF, copyButtonId)
it.addRule(START_OF, copyButtonId)
}
} else {
it?.addRule(ALIGN_PARENT_RIGHT)
it.addRule(ALIGN_PARENT_RIGHT)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
it?.addRule(ALIGN_PARENT_END)
it.addRule(ALIGN_PARENT_END)
}
}
}
}
labelView.apply {
id = labelViewId
layoutParams = (layoutParams as LayoutParams?).also {
it?.addRule(LEFT_OF, showButtonId)
layoutParams = (layoutParams as LayoutParams?)?.also {
it.addRule(LEFT_OF, showButtonId)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
it?.addRule(START_OF, showButtonId)
it.addRule(START_OF, showButtonId)
}
}
}
valueView.apply {
id = valueViewId
layoutParams = (layoutParams as LayoutParams?).also {
it?.addRule(LEFT_OF, showButtonId)
layoutParams = (layoutParams as LayoutParams?)?.also {
it.addRule(LEFT_OF, showButtonId)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
it?.addRule(START_OF, showButtonId)
it.addRule(START_OF, showButtonId)
}
it?.addRule(BELOW, labelViewId)
it.addRule(BELOW, labelViewId)
}
}
}
@@ -188,7 +183,7 @@ class TextFieldView @JvmOverloads constructor(context: Context,
labelView.text = value
}
fun setLabel(@StringRes labelId: Int) {
open fun setLabel(@StringRes labelId: Int) {
labelView.setText(labelId)
}
@@ -197,17 +192,11 @@ class TextFieldView @JvmOverloads constructor(context: Context,
return valueView.text.toString()
}
set(value) {
val spannableString =
if (PreferencesUtil.colorizePassword(context)
&& TemplateField.isStandardPasswordName(context, label))
PasswordGenerator.getColorizedPassword(value)
else
SpannableString(value)
valueView.text = spannableString
valueView.text = value
changeProtectedValueParameters()
}
fun setValue(@StringRes valueId: Int) {
open fun setValue(@StringRes valueId: Int) {
value = resources.getString(valueId)
changeProtectedValueParameters()
}
@@ -237,7 +226,7 @@ class TextFieldView @JvmOverloads constructor(context: Context,
invalidate()
}
private fun changeProtectedValueParameters() {
protected fun changeProtectedValueParameters() {
valueView.apply {
if (showButton.isVisible) {
applyHiddenStyle(showButton.isSelected)

View File

@@ -59,6 +59,7 @@ import androidx.core.view.forEach
import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding
import androidx.core.view.updatePaddingRelative
import com.google.android.material.appbar.CollapsingToolbarLayout
import com.google.android.material.snackbar.Snackbar
import com.kunzisoft.keepass.R
@@ -225,14 +226,20 @@ fun View.showByFading() {
}
}
fun View.updateLockPaddingLeft() {
updatePadding(resources.getDimensionPixelSize(
if (PreferencesUtil.showLockDatabaseButton(context)) {
R.dimen.lock_button_size
} else {
R.dimen.hidden_lock_button_size
}
))
fun View.updateLockPaddingStart() {
resources.getDimensionPixelSize(
if (PreferencesUtil.showLockDatabaseButton(context)) {
R.dimen.lock_button_size
} else {
R.dimen.hidden_lock_button_size
}
).let { lockPadding ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
updatePaddingRelative(lockPadding)
} else {
updatePadding(lockPadding)
}
}
}
fun Context.showActionErrorIfNeeded(result: ActionRunnable.Result) {
@@ -306,9 +313,12 @@ fun Activity.setTransparentNavigationBar(applyToStatusBar: Boolean = false, appl
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1
&& resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
WindowCompat.setDecorFitsSystemWindows(window, false)
this.window.navigationBarColor = ContextCompat.getColor(this, R.color.surface_selector)
window.navigationBarColor = ContextCompat.getColor(this, R.color.surface_selector)
if (applyToStatusBar) {
this.window.statusBarColor = ContextCompat.getColor(this, R.color.surface_selector)
obtainStyledAttributes(intArrayOf(R.attr.colorSurface)).apply {
window.statusBarColor = getColor(0, Color.GRAY)
recycle()
}
}
applyWindowInsets.invoke()
}
@@ -356,6 +366,23 @@ fun View.applyWindowInsets(position: WindowInsetPosition = WindowInsetPosition.B
}
}
}
WindowInsetPosition.BOTTOM_IME -> {
val imeHeight = windowInsets.getInsets(WindowInsetsCompat.Type.ime()).bottom
if (view.layoutParams is ViewGroup.MarginLayoutParams) {
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
bottomMargin = if (imeHeight > 1) 0 else insets.bottom
}
}
}
WindowInsetPosition.TOP_BOTTOM_IME -> {
val imeHeight = windowInsets.getInsets(WindowInsetsCompat.Type.ime()).bottom
if (view.layoutParams is ViewGroup.MarginLayoutParams) {
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = insets.top
bottomMargin = if (imeHeight > 1) imeHeight else 0
}
}
}
}
// If any of the children consumed the insets, return an appropriate value
if (consumed) WindowInsetsCompat.CONSUMED else windowInsets
@@ -363,5 +390,5 @@ fun View.applyWindowInsets(position: WindowInsetPosition = WindowInsetPosition.B
}
enum class WindowInsetPosition {
TOP, BOTTOM, LEGIT_TOP
TOP, BOTTOM, LEGIT_TOP, BOTTOM_IME, TOP_BOTTOM_IME
}

View File

@@ -51,7 +51,9 @@ class DatabaseFileViewModel(application: Application) : AndroidViewModel(applica
fun loadDatabaseFile(databaseUri: Uri) {
mFileDatabaseHistoryAction?.getDatabaseFile(databaseUri) { databaseFileRetrieved ->
mDatabaseFileLoaded.value = databaseFileRetrieved
databaseFileRetrieved?.let {
mDatabaseFileLoaded.value = it
}
}
}
}

View File

@@ -2,6 +2,7 @@ package com.kunzisoft.keepass.viewmodels
import android.app.Application
import android.net.Uri
import android.util.Log
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.MutableLiveData
import com.kunzisoft.keepass.app.App
@@ -10,8 +11,8 @@ import com.kunzisoft.keepass.hardware.HardwareKey
import com.kunzisoft.keepass.model.DatabaseFile
import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.utils.IOActionTask
import com.kunzisoft.keepass.utils.parseUri
import com.kunzisoft.keepass.utils.UriUtil.releaseUriPermission
import com.kunzisoft.keepass.utils.parseUri
class DatabaseFilesViewModel(application: Application) : AndroidViewModel(application) {
@@ -25,11 +26,29 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic
MutableLiveData<DatabaseFileData>()
}
private var mDefaultDatabaseAlreadyChecked : Boolean = false
val defaultDatabase: MutableLiveData<Uri?> by lazy {
MutableLiveData<Uri?>()
}
fun checkDefaultDatabase() {
fun doForDefaultDatabase(action: (defaultDatabaseUri: Uri) -> Unit) {
if (!mDefaultDatabaseAlreadyChecked) {
mDefaultDatabaseAlreadyChecked = true
val context = getApplication<App>().applicationContext
PreferencesUtil.getDefaultDatabasePath(context)?.parseUri()?.let { databaseFileUri ->
if (FileDatabaseInfo(context, databaseFileUri).exists) {
action.invoke(databaseFileUri)
} else {
Log.e(TAG, "Unable to automatically load a non-accessible file")
}
} ?: run {
Log.i(TAG, "No default database to prepare")
}
}
}
private fun checkDefaultDatabase() {
IOActionTask(
{
PreferencesUtil.getDefaultDatabasePath(getApplication<App>().applicationContext)
@@ -149,4 +168,8 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic
enum class DatabaseFileAction {
NONE, ADD, UPDATE, DELETE
}
companion object {
private val TAG = DatabaseFilesViewModel::class.java.name
}
}

View File

@@ -43,8 +43,8 @@ class KeyGeneratorViewModel: ViewModel() {
val requirePassphraseGeneration : LiveData<Void?> get() = _requirePassphraseGeneration
private val _requirePassphraseGeneration = SingleLiveEvent<Void?>()
fun setKeyGenerated(passKey: String) {
_keyGenerated.value = passKey
fun setKeyGenerated(value: String) {
_keyGenerated.value = value
}
fun validateKeyGenerated() {

View File

@@ -4,7 +4,8 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import com.kunzisoft.keepass.database.element.DateInstant
import com.kunzisoft.keepass.database.element.icon.IconImage
import com.kunzisoft.keepass.view.DataTime
import com.kunzisoft.keepass.model.DataDate
import com.kunzisoft.keepass.model.DataTime
abstract class NodeEditViewModel : ViewModel() {
@@ -23,8 +24,8 @@ abstract class NodeEditViewModel : ViewModel() {
val requestDateTimeSelection : LiveData<DateInstant> get() = _requestDateTimeSelection
private val _requestDateTimeSelection = SingleLiveEvent<DateInstant>()
val onDateSelected : LiveData<Long> get() = _onDateSelected
private val _onDateSelected = SingleLiveEvent<Long>()
val onDateSelected : LiveData<DataDate> get() = _onDateSelected
private val _onDateSelected = SingleLiveEvent<DataDate>()
val onTimeSelected : LiveData<DataTime> get() = _onTimeSelected
private val _onTimeSelected = SingleLiveEvent<DataTime>()
@@ -57,12 +58,12 @@ abstract class NodeEditViewModel : ViewModel() {
_requestDateTimeSelection.value = dateInstant
}
fun selectDate(dateMilliseconds: Long) {
_onDateSelected.value = dateMilliseconds
fun selectDate(date: DataDate) {
_onDateSelected.value = date
}
fun selectTime(hours: Int, minutes: Int) {
_onTimeSelected.value = DataTime(hours, minutes)
fun selectTime(dataTime: DataTime) {
_onTimeSelected.value = dataTime
}
private enum class ColorRequest {

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.78885484"
android:pathData="M10,19Q7.5,19 5.5,17.5Q4,16 4,13.5Q4,11 5.5,9.5Q7.5,8 10,8L16,8L13.5,5.5L15,4L20,9L15,14L13.5,12.5L16,10L10,10Q8.5,10 7,11Q6,12 6,13.5Q6,15 7,16Q8.5,17 10,17L17,17L17,19L10,19Z" />
</group>
</vector>

View File

@@ -0,0 +1,9 @@
<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="#FFFFFF"
android:pathData="M8.59,16.59L13.17,12 8.59,7.41 10,6l6,6 -6,6 -1.41,-1.41z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24">
<path
android:fillColor="@color/green"
android:pathData="M14,7l-5,5 5,5V7z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/ic_arrow_left_white_24dp"
android:fromDegrees="180"
android:toDegrees="180"
android:visible="true" />

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#ffffff"
android:pathData="M11 16C11 16.6 10.6 17 10 17S9 16.6 9 16C9 15.4 9.4 15 10 15S11 15.4 11 16M20 8V20C20 21.1 19.1 22 18 22H6C4.9 22 4 21.1 4 20V4C4 2.9 4.9 2 6 2H14M18 15H12.8C12.2 13.4 10.5 12.6 9 13.2C7.4 13.8 6.6 15.5 7.2 17S9.5 19.4 11 18.8C11.9 18.5 12.5 17.8 12.8 17H14V19H16V17H18M18.5 9L13 3.5V9H18.5Z" />
</vector>

View File

@@ -0,0 +1,5 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
<path android:fillColor="@android:color/white" android:pathData="M18,22l-0.01,-6L14,12l3.99,-4.01L18,2H6v6l4,4l-4,3.99V22H18zM8,7.5V4h8v3.5l-4,4L8,7.5z"/>
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M12,1L3,5v6c0,5.55 3.84,10.74 9,12 5.16,-1.26 9,-6.45 9,-12V5l-9,-4z"/>
</vector>

View File

@@ -1,7 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp">
<path android:fillColor="#ffffff" android:pathData="M1,21h22L12,2 1,21zM13,18h-2v-2h2v2zM13,14h-2v-4h2v4z"/>
</vector>

View File

@@ -22,59 +22,55 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:importantForAutofill="noExcludeDescendants"
android:id="@+id/activity_entry_edit_container"
tools:targetApi="o"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:filterTouchesWhenObscured="true">
<com.kunzisoft.keepass.view.ToolbarSpecial
android:id="@+id/special_mode_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/entry_edit_coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/special_mode_view"
app:layout_constraintBottom_toBottomOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/activity_entry_edit_container"
<androidx.core.widget.NestedScrollView
android:id="@+id/entry_edit_scroll"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.kunzisoft.keepass.view.ToolbarSpecial
android:id="@+id/special_mode_view"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:scrollbarStyle="insideOverlay"
android:scrollbars="none"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<androidx.core.widget.NestedScrollView
android:id="@+id/entry_edit_scroll"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/special_mode_view"
app:layout_constraintBottom_toBottomOf="parent"
android:scrollbarStyle="insideOverlay"
android:scrollbars="none"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_height="match_parent"
android:paddingTop="@dimen/card_view_margin_vertical"
android:paddingBottom="128dp">
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/entry_edit_template_selector"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/card_view_margin_vertical"
android:paddingBottom="128dp">
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/entry_edit_template_selector"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/entry_edit_content"
android:name="com.kunzisoft.keepass.activities.fragments.EntryEditFragment"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintWidth_percent="@dimen/content_percent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/entry_edit_template_selector"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/entry_edit_content"
android:name="com.kunzisoft.keepass.activities.fragments.EntryEditFragment"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintWidth_percent="@dimen/content_percent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/entry_edit_template_selector"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
@@ -84,35 +80,47 @@
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent">
<com.kunzisoft.keepass.view.ToolbarAction
android:id="@+id/entry_edit_bottom_bar"
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/bottom_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner" />
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/entry_edit_validate"
style="@style/KeepassDXStyle.Fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/validate"
android:src="@drawable/ic_check_white_24dp"
app:fabCustomSize="@dimen/button_small_size"
app:layout_constraintTop_toTopOf="@+id/entry_edit_bottom_bar"
app:layout_constraintBottom_toBottomOf="@+id/entry_edit_bottom_bar"
android:layout_marginBottom="6dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.kunzisoft.keepass.view.ToolbarAction
android:id="@+id/entry_edit_bottom_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:layout_constraintBottom_toBottomOf="parent" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/entry_edit_validate"
style="@style/KeepassDXStyle.Fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/validate"
android:src="@drawable/ic_check_white_24dp"
app:fabCustomSize="@dimen/button_small_size"
app:layout_constraintTop_toTopOf="@+id/entry_edit_bottom_bar"
app:layout_constraintBottom_toBottomOf="@+id/entry_edit_bottom_bar"
android:layout_marginBottom="6dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<include
layout="@layout/view_button_lock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<include
layout="@layout/view_button_lock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner"/>
<include layout="@layout/view_screenshot_mode_banner" />
app:layout_constraintTop_toBottomOf="@+id/bottom_toolbar"
app:layout_constraintBottom_toBottomOf="parent"
layout="@layout/view_screenshot_mode_banner" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -58,6 +58,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_collapseMode="parallax"
android:layoutDirection="ltr"
android:layout_gravity="center_horizontal|bottom"
android:gravity="center"
android:orientation="horizontal"

View File

@@ -46,14 +46,15 @@
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<include
layout="@layout/view_button_lock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@+id/screenshot_mode_banner" />
<include
layout="@layout/view_button_lock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|start"
app:layout_anchorGravity="bottom|start"
app:layout_dodgeInsetEdges="bottom" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<include layout="@layout/view_screenshot_mode_banner"
app:layout_constraintBottom_toBottomOf="parent"/>

View File

@@ -50,14 +50,14 @@
android:layout_height="wrap_content"
android:layout_margin="@dimen/card_view_padding">
<com.kunzisoft.keepass.view.PassKeyView
<com.kunzisoft.keepass.view.PasswordEditView
android:id="@+id/passphrase_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toStartOf="@+id/passphrase_copy_button"
android:layout_toLeftOf="@+id/passphrase_copy_button"
app:passKeyHint="@string/passphrase"
app:passKeyMaxLines="7"/>
app:passwordHint="@string/passphrase"
app:passwordMaxLines="7"/>
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/passphrase_copy_button"

View File

@@ -50,7 +50,7 @@
android:layout_height="wrap_content"
android:layout_margin="@dimen/card_view_padding">
<com.kunzisoft.keepass.view.PassKeyView
<com.kunzisoft.keepass.view.PasswordEditView
android:id="@+id/password_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@@ -72,11 +72,11 @@
android:text="@string/password"/>
<!-- Password Input -->
<com.kunzisoft.keepass.view.PassKeyView
<com.kunzisoft.keepass.view.PasswordEditView
android:id="@+id/password_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passKeyVisible="false"/>
app:passwordVisible="false"/>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/password_repeat_input_layout"
android:layout_width="match_parent"
@@ -94,6 +94,7 @@
android:importantForAccessibility="no"
android:importantForAutofill="no"
android:inputType="textPassword|textMultiLine"
android:textDirection="ltr"
android:maxLines="3"
android:hint="@string/hint_conf_pass"/>
</com.google.android.material.textfield.TextInputLayout>
@@ -121,6 +122,15 @@
android:layout_height="wrap_content"
android:text="@string/entry_keyfile"/>
<com.google.android.material.button.MaterialButton
style="@style/KeepassDXStyle.Button.Secondary"
android:id="@+id/keyfile_generate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="end"
app:icon="@drawable/ic_file_key_white_24dp"
android:text="@string/generate_keyfile" />
<com.kunzisoft.keepass.view.KeyFileSelectionView
android:id="@+id/keyfile_selection"
android:layout_width="match_parent"

View File

@@ -125,8 +125,7 @@
android:paddingStart="8dp"
android:paddingLeft="8dp"
android:paddingEnd="4dp"
android:paddingRight="4dp"
android:paddingVertical="4dp">
android:paddingRight="4dp">
<TextView
android:id="@+id/node_otp_token"

View File

@@ -61,11 +61,11 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/node_icon"
android:layout_marginEnd="-32dp"
android:layout_marginRight="-32dp"
android:layout_toStartOf="@+id/node_icon"
android:layout_toLeftOf="@+id/node_icon"
tools:text="3" />
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
tools:text="123" />
<LinearLayout
android:layout_width="wrap_content"

View File

@@ -1,91 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorSurface"
android:gravity="bottom"
android:orientation="vertical"
android:layout_marginBottom="6dp"
android:paddingTop="36dp"
android:paddingLeft="@dimen/default_margin"
android:paddingRight="@dimen/default_margin"
android:paddingBottom="@dimen/default_margin"
tools:ignore="UnusedAttribute">
<TextView
android:id="@+id/nav_database_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:paddingStart="8dp"
android:paddingLeft="8dp"
android:paddingEnd="8dp"
android:paddingRight="8dp"
style="@style/KeepassDXStyle.Text.Info.OnSurface"
android:textSize="11sp"
tools:text="version"
android:textIsSelectable="true" />
<ImageView
android:id="@+id/nav_database_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/content_description_nav_header"
app:layout_constraintTop_toBottomOf="@+id/nav_database_version"
app:layout_constraintBottom_toTopOf="@+id/nav_database_name"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="6dp"
android:layout_marginLeft="6dp"
android:layout_marginBottom="12dp"
app:srcCompat="@drawable/ic_database_white_36dp"
style="@style/KeepassDXStyle.Icon"
app:tint="?attr/colorSecondary" />
<ImageView
android:id="@+id/nav_database_modified"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/save"
android:src="@drawable/ic_modified_white_12dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/nav_database_icon"
app:layout_constraintStart_toEndOf="@+id/nav_database_icon"
app:layout_constraintTop_toTopOf="@+id/nav_database_icon" />
<ImageView
android:id="@+id/nav_database_color"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_gravity="center"
android:contentDescription="@string/content_description_database_color"
android:src="@drawable/background_icon"
app:layout_constraintBottom_toBottomOf="@+id/nav_database_name"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/nav_database_name"
style="@style/KeepassDXStyle.Title.OnSurface"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="6dp"
android:maxLines="2"
android:text="@string/database"
android:textIsSelectable="true"
app:layout_constraintBottom_toTopOf="@+id/nav_database_path"
app:layout_constraintEnd_toStartOf="@+id/nav_database_color"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/nav_database_path"
style="@style/KeepassDXStyle.Text.Info.OnSurface"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
android:textSize="11sp"
android:text="@string/path"
android:textIsSelectable="true"/>
</androidx.constraintlayout.widget.ConstraintLayout>
android:gravity="bottom"
android:layout_margin="@dimen/default_margin">
<TextView
android:id="@+id/nav_database_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:paddingStart="8dp"
android:paddingLeft="8dp"
android:paddingEnd="8dp"
android:paddingRight="8dp"
style="@style/KeepassDXStyle.Text.Info.OnSurface"
android:textSize="11sp"
tools:text="version"
android:textIsSelectable="true" />
<ImageView
android:id="@+id/nav_database_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/content_description_nav_header"
app:layout_constraintTop_toBottomOf="@+id/nav_database_version"
app:layout_constraintBottom_toTopOf="@+id/nav_database_name"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="6dp"
android:layout_marginLeft="6dp"
android:layout_marginBottom="12dp"
app:srcCompat="@drawable/ic_database_white_36dp"
style="@style/KeepassDXStyle.Icon"
app:tint="?attr/colorSecondary" />
<ImageView
android:id="@+id/nav_database_modified"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/save"
android:src="@drawable/ic_modified_white_12dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/nav_database_icon"
app:layout_constraintStart_toEndOf="@+id/nav_database_icon"
app:layout_constraintTop_toTopOf="@+id/nav_database_icon" />
<ImageView
android:id="@+id/nav_database_color"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_gravity="center"
android:contentDescription="@string/content_description_database_color"
android:src="@drawable/background_icon"
app:layout_constraintBottom_toBottomOf="@+id/nav_database_name"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/nav_database_name"
style="@style/KeepassDXStyle.Title.OnSurface"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="6dp"
android:maxLines="2"
android:text="@string/database"
android:textIsSelectable="true"
app:layout_constraintBottom_toTopOf="@+id/nav_database_path"
app:layout_constraintEnd_toStartOf="@+id/nav_database_color"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/nav_database_path"
style="@style/KeepassDXStyle.Text.Info.OnSurface"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
android:textSize="11sp"
android:text="@string/path"
android:textIsSelectable="true"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>

View File

@@ -76,6 +76,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="ltr"
app:layout_constraintTop_toBottomOf="@+id/switch_element">
<LinearLayout

View File

@@ -20,7 +20,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_warning_white_24dp"
android:src="@drawable/ic_hourglass_bottom_white_24dp"
android:contentDescription="@string/content_description_file_information"
app:tint="?android:attr/textColor"/>
<androidx.appcompat.widget.AppCompatTextView

View File

@@ -36,6 +36,7 @@
android:minHeight="48dp"
android:hint="@string/password"
android:inputType="textPassword"
android:textDirection="ltr"
android:importantForAutofill="no"
android:focusable="true"
android:focusableInTouchMode="true"

View File

@@ -7,7 +7,7 @@
xmlns:tools="http://schemas.android.com/tools">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/password_input_layout"
android:id="@+id/password_edit_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
@@ -18,7 +18,7 @@
tools:ignore="UnusedAttribute">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password_text"
android:id="@+id/password_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
@@ -26,28 +26,27 @@
android:importantForAccessibility="no"
android:importantForAutofill="no"
android:inputType="textPassword|textMultiLine"
android:textDirection="ltr"
android:maxLines="3"
tools:ignore="TextFields" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/password_strength_progress"
android:id="@+id/password_edit_strength_progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:padding="1dp"
app:trackCornerRadius="8dp"
app:layout_constraintTop_toBottomOf="@+id/password_input_layout"/>
app:layout_constraintBottom_toBottomOf="@+id/password_edit_input_layout"/>
<TextView
android:id="@+id/password_entropy"
android:id="@+id/password_edit_entropy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Entropy: 72.50 bit"
android:textSize="11sp"
android:layout_margin="4dp"
android:textColor="?attr/colorSecondary"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/password_input_layout"
app:layout_constraintEnd_toEndOf="@+id/password_input_layout" />
style="@style/KeepassDXStyle.Text.Indicator"
android:padding="4dp"
app:layout_constraintBottom_toBottomOf="@+id/password_edit_input_layout"
app:layout_constraintEnd_toEndOf="@+id/password_edit_input_layout" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -24,7 +24,7 @@
<string name="encryption_algorithm">خوارزمية التشفير</string>
<string name="application">التطبيق</string>
<string name="brackets">الأقواس</string>
<string name="extended_ASCII">تمديد ASCII</string>
<string name="extended_ASCII">ASCII ممتد</string>
<string name="allow">سماح</string>
<string name="clipboard_cleared">مُسِحت الحافظة</string>
<string name="clipboard_error_title">خطأ في الحافظة</string>
@@ -43,7 +43,7 @@
<string name="entry_title">العنوان</string>
<string name="entry_url">رابط</string>
<string name="entry_user_name">اسم المستخدم</string>
<string name="error_file_not_create">تعذر إنشاء الملف</string>
<string name="error_file_not_create">تعذر إنشاء الملف.</string>
<string name="error_invalid_path">تأكد أن المسار صحيح.</string>
<string name="error_no_name">ادخل اسمًا.</string>
<string name="error_pass_match">كلمتا السر غير متطابقتين.</string>
@@ -136,14 +136,14 @@
<string name="error_wrong_length">أدخل عددًا صحيحًا موجبًا في حقل «الطول».</string>
<string name="error_autofill_enable_service">تعذر تمكين خدمة الملء التلقائي.</string>
<string name="file_not_found_content">تعذر إيجاد الملف. جرِّب فتحه من متصفح ملفات.</string>
<string name="file_browser">مدير الملفات</string>
<string name="file_browser">مدير الملفات.</string>
<string name="invalid_credentials">تعذر قراءة الإعتمادات.</string>
<string name="invalid_db_sig">تعذر تمييز نسق قاعدة البيانات.</string>
<string name="keyfile_is_empty">ملف المفتاح فارغ.</string>
<string name="list_entries_show_username_title">أظهر أسماء المستخدمين</string>
<string name="list_entries_show_username_summary">اعرض اسماء المستخدمين في قوائم المدخلات</string>
<string name="hint_generated_password">كلمة السر الموَلدة</string>
<string name="hint_keyfile">الملف المفتاحي</string>
<string name="hint_generated_password">كلمة السر الموَلدة.</string>
<string name="hint_keyfile">الملف المفتاحي.</string>
<string name="hide_password_title">اخفاء كلمات السر</string>
<string name="copy_field">نُسخة من %1$s</string>
<string name="menu_copy">نسخ</string>
@@ -272,7 +272,7 @@
<string name="master_key">المفتاح الرئيسي</string>
<string name="error_otp_period">يجب ان تكون المدة بين %1$d و%2$d ثانية.</string>
<string name="error_otp_secret_key">المفتاح السري يجب ان يكون بصيغة Base32.</string>
<string name="error_save_database">لا يمكن حفظ قاعدة البيانات.</string>
<string name="error_save_database">تعذر حفظ قاعدة البيانات.</string>
<string name="error_create_database">لا يمكن إنشاء ملف قاعدة البيانات.</string>
<string name="error_copy_group_here">لا يمكن نسخ مجموعة هنا.</string>
<string name="error_label_exists">هذه التسمية موجودة بالفعل.</string>
@@ -431,7 +431,7 @@
<string name="email_address">عنوان البريد الإلكتروني</string>
<string name="ssid">SSID</string>
<string name="debit_credit_card">بطاقة السحب الفوري / الإئتمان</string>
<string name="error_registration_read_only">لا يمكن حفظ عنصر في قاعدة بيانات مفتوحة للقراءة فقط</string>
<string name="error_registration_read_only">لا يمكن حفظ عنصر في قاعدة بيانات مفتوحة للقراءة فقط.</string>
<string name="otp_secret">الرمز السري</string>
<string name="place_of_issue">مكان المشكلة</string>
<string name="date_of_issue">تاريخ المشكلة</string>
@@ -463,8 +463,8 @@
<string name="import_app_properties_summary">اختر ملفًا لاستيراد إعدادات التطبيق</string>
<string name="export_app_properties_title">صدّر إعدادات التطبيق</string>
<string name="export_app_properties_summary">أنشئ ملفًا لتصدير إعدادات التطبيق</string>
<string name="error_import_app_properties">خطأ أثناء استيراد إعدادات التطبيق</string>
<string name="error_export_app_properties">خطأ أثناء تصدير إعدادات التطبيق</string>
<string name="error_import_app_properties">خطأ أثناء استيراد إعدادات التطبيق.</string>
<string name="error_export_app_properties">خطأ أثناء تصدير إعدادات التطبيق.</string>
<string name="warning_database_info_changed">غُيِّرت معلومات قاعدة البيانات من خارج هذا التطبيق.</string>
<string name="warning_database_info_changed_options">ادمج البيانات أو استبدل التعديلات الخارجية بحفظ قاعدة البيانات أو أعد تحميلها لجلب آخر التغييرات.</string>
<string name="credential_before_click_advanced_unlock_button">اكتب كلمة السر، وأنقر هذا الزر.</string>
@@ -474,7 +474,7 @@
<string name="keyboard_previous_fill_in_title">العودة إلى الوراء</string>
<string name="keyboard_previous_lock_title">اقفل قاعدة البيانات</string>
<string name="education_advanced_unlock_title">فتح قاعدة بيانات الجهاز</string>
<string name="hint_icon_name">اسم الأيقونة</string>
<string name="hint_icon_name">اسم الأيقونة.</string>
<string name="autofill_manual_selection_title">اختيار يدوي</string>
<string name="description_app_properties">خصائص KeePassDX لإدارة إعدادات التطبيقات</string>
<string name="warning_empty_recycle_bin">هل تريد حذف جميع العقد نهائيًا من سلة المهملات؟</string>
@@ -616,11 +616,11 @@
<string name="navigation_drawer_close">درج التنقل مقفول</string>
<string name="error_XML_malformed">XML تالف.</string>
<string name="error_otp_type">لم يتم التعرف على نوع OTP الحالي من خلال هذا النموذج، وقد لا يؤدي التحقق من صحته إلى إنشاء الرمز المميز بشكل صحيح.</string>
<string name="error_challenge_already_requested">التحدي مطلوب بالفعل</string>
<string name="error_challenge_already_requested">التحدي مطلوب بالفعل.</string>
<string name="error_response_already_provided">تقدم الرد بالفعل.</string>
<string name="error_no_response_from_challenge">غير قادر على الحصول على رد من التحدي.</string>
<string name="error_driver_required">مطلوب تعريف لـ%1$s.</string>
<string name="error_unable_merge_database_kdb">تعذر الدمج من قاعدة بيانات V1.</string>
<string name="error_unable_merge_database_kdb">غير قادر على الدمج مع ملف قاعدة بيانات kdb.</string>
<string name="error_location_unknown">موقع قاعدة البيانات غير معروف، لا يمكن تنفيذ إجراء قاعدة البيانات.</string>
<string name="menu_advanced_unlock_settings_summary">القياس الحيوي، بيانات اعتماد الجهاز</string>
<string name="menu_database_settings_summary">البيانات الوصفية، سلة المحذوفات، القوالب، التاريخ</string>
@@ -660,6 +660,7 @@
<string name="advanced_unlock_keystore_warning">ستقوم هذه الميزة بتخزين بيانات الاعتماد المشفرة في KeyStore الآمن بجهازك.
\n
\nاعتمادًا على تطبيق API الأصلي لنظام التشغيل، قد لا يعمل بكامل طاقته.
\n
\nتحقق من توافق وأمن KeyStore مع الشركة المصنعة لجهازك ومنشئ ROM الذي تستخدمه.</string>
<string name="keyboard_selection_entry_summary">عند عرض إدخال في KeePassDX، عبئ Magikeyboard بهذا الإدخال</string>
<string name="enable_screenshot_mode_summary">اسمح لتطبيقات الطرف الثالث بتسجيل أو التقاط لقطات شاشة للتطبيق</string>
@@ -681,6 +682,25 @@
<string name="download_initialization">جارِ التهيئة…</string>
<string name="download_progression">قيد التقدم: %1$d%%</string>
<string name="html_text_buy_pro">بشراء الإصدار الاحترافي، ستتمتع بإمكانية الوصول إلى هذا &lt;strong&gt; النمط المرئي&lt;/strong&gt; وستساعد بشكل خاص في &lt;strong&gt; تنفيذ مشروعات المجتمع. &lt;/strong&gt;</string>
<string name="html_text_donation">من أجل الحفاظ على حريتنا ولكي نكون نشيطين دائمًا، فإننا نعتمد على &lt;strong&gt; مساهمتك.&lt;/strong&gt;</string>
<string name="html_text_donation">من خلال &lt;strong&gt;المساهمة&lt;/strong&gt; في المشروع <i>(مالياً أو برمجياً أو ترجمة)</i>، ستساعده على الاستمرار في الحياة والازدهار، وستكون مؤهلاً أيضاً لإجراء فتح &lt;strong&gt;السمة&lt;/strong&gt;.</string>
<string name="html_text_dev_feature_encourage">أنت تشجع المطورين على إنشاء &lt;strong&gt; ميزات جديدة&lt;/strong&gt; و &lt;strong&gt; إصلاح الخلل&lt;/strong&gt; وفقًا لملاحظاتك.</string>
<string name="style_name_forest">غابة</string>
<string name="style_name_simple">بسيط</string>
<string name="style_name_moon">قمر</string>
<string name="style_name_divine">إلهي</string>
<string name="style_name_classic">كلاسيكي</string>
<string name="style_name_dark">داكن</string>
<string name="style_name_reply">رد</string>
<string name="warning_database_info_changed_options_read_only">أعِد تحميل قاعدة البيانات بأحدث التغييرات.</string>
<string name="style_name_sun">شمس</string>
<string name="style_name_kunzite">الكونزيت</string>
<string name="style_name_follow_system">اتبع النظام</string>
<string name="style_name_light">فاتح</string>
<string name="hide_templates_summary">لا يتم عرض القوالب</string>
<string name="generate_keyfile">ولّد ملف المفتاح</string>
<string name="nodes">العُقد</string>
<string name="recursive_number_entries_title">عدد متكرر من الإدخالات</string>
<string name="recursive_number_entries_summary">يحسب بشكل متكرر عدد الإدخالات في المجموعة</string>
<string name="warning_large_keyfile">لا يُنصح بإضافة ملف مفتاحي كبير، فقد يؤدي هذا إلى منع فتح قاعدة البيانات.</string>
<string name="hide_templates_title">أخفِ القوالب</string>
</resources>

View File

@@ -0,0 +1,662 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="info">Məlumat</string>
<string name="contact">Əlaqə</string>
<string name="homepage">Ana səhifə</string>
<string name="add_entry">Şifrə əlavə et</string>
<string name="edit_entry">Şifrəyə düzəliş et</string>
<string name="add_group">Qrup əlavə et</string>
<string name="key_derivation_function">Açar yaratma funksiyası</string>
<string name="app_timeout">Taym-aut</string>
<string name="app_timeout_summary">Məlumat bazasını kilidləmədən öncəki boşluq müddəti</string>
<string name="application">Tətbiq</string>
<string name="brackets">Mötərizə</string>
<string name="extended_ASCII">Artırılmış ASCII</string>
<string name="allow">İcazə ver</string>
<string name="clipboard_cleared">Mübadilə buferi təmizləndi</string>
<string name="clipboard_error_title">Mübadilə buferi xətası</string>
<string name="clipboard_timeout">Mübadilə buferinin taym-aut (boşda qalma) müddəti</string>
<string name="clipboard_timeout_summary">Mübadilə buferində məlumatların saxlanma müddəti (əgər cihazınız dəstəkləyirsə)</string>
<string name="content_description_background">Arxaplan</string>
<string name="content_description_open_file">Faylı</string>
<string name="content_description_add_entry">Qeyd əlavə et</string>
<string name="content_description_add_group">Qrup əlavə et</string>
<string name="content_description_add_item">Fayl əlavə et</string>
<string name="content_description_file_information">Fayl məlumatları</string>
<string name="content_description_credentials_information">Şəxsiyyəti təsdiq edən məlumatlar</string>
<string name="content_description_otp_information">Birdəfəlik şifrə məlumatları</string>
<string name="content_description_keyfile_checkbox">Açar fayl təsdiqi</string>
<string name="content_description_hardware_key_checkbox">Aparat-təchizat açarının təsdiqi</string>
<string name="content_description_entry_icon">Şifrə ikonu</string>
<string name="content_description_database_color">Məlumat bazasının rəngi</string>
<string name="discard_changes">Dəyişiklikləri ləğv et?</string>
<string name="entry_password_generator">Şifrə generatoru</string>
<string name="content_description_password_length">Şifrə uzunluğu</string>
<string name="entry_add_attachment">Qoşma əlavə et</string>
<string name="select_to_copy">%1$sfaylını mübadilə buferinə köçürmək üçün seçin</string>
<string name="retrieving_db_key">Məlumat bazası açarı əldə edilir …</string>
<string name="waiting_challenge_request">Doğrulama istəyi gözlənilir …</string>
<string name="waiting_challenge_response">Doğrulama cavabı gözlənilir …</string>
<string name="database">Məlumat bazası</string>
<string name="template_group_name">Şablonlar</string>
<string name="decrypting_db">Məlumat bazası məzmunun şifrəsi açılır …</string>
<string name="digits">Rəqəmlər</string>
<string name="default_checkbox">Standart məlumat bazası olaraq istifədə et</string>
<string name="html_about_privacy">&lt;strong&gt;Heç bir istifadəçi məlumatı toplanmır&lt;/strong&gt;, bu tətbiq heç bir serverə bağlanmır, yalnız lokal olaraq işləyir və tamamilə istidəçilərin gizliliyinə hörmət edir.</string>
<string name="entry_accessed">Giriş edildi</string>
<string name="entry_cancel">Ləğv et</string>
<string name="entry_notes">Qeydlər</string>
<string name="entry_confpassword">Şifrəni təsdiq et</string>
<string name="entry_UUID">UUID (Qlobal Unikal İdentifikator)</string>
<string name="entry_history">Tarixçə</string>
<string name="entry_attachments">Qoşmalar</string>
<string name="entry_keyfile">Açar fayl</string>
<string name="hardware_key">Aparat-təchizat açarı</string>
<string name="entry_modified">Modifikasiya edilmiş</string>
<string name="searchable">Axtarıla bilən</string>
<string name="error_pass_match">Şifrələr uyğun deyil.</string>
<string name="error_string_key">Hər bir sıranın bir adı olmalıdır.</string>
<string name="error_label_exists">Bu etiket artıq mövcuddur.</string>
<string name="error_wrong_length">\"Uzunluq\" sahəsinə müsbət bir rəqəm yazın.</string>
<string name="error_autofill_enable_service">\"Avtomatik doldurma\" xidmətini aktiv etmək mümkün olmadı.</string>
<string name="error_move_group_here">Qrupu buraya köçürə bilməzsiniz.</string>
<string name="error_copy_group_here">Qrupu buraya nüsxələyə bilməzsiniz.</string>
<string name="error_create_database">Məlumat bazası yaratmaq mümkün deyil.</string>
<string name="error_create_database_file">Bu şifrə və açar faylı ilə məlumat bazası yaratmaq mümkün deyil.</string>
<string name="error_otp_counter">Sayğac %1$dvə%2$d aralığında olmalıdır.</string>
<string name="error_otp_period">Dövr %1$dvə%2$d saniyə aralığında olmalıdır.</string>
<string name="contribution">İanə</string>
<string name="feedback">Rəy</string>
<string name="about_description">Keepass şifrə menecerinin android tətbiqi</string>
<string name="accept">Qəbul et</string>
<string name="master_key">Ana şifrə</string>
<string name="security">Təhlükəsizlik</string>
<string name="encryption">Şifrələmə</string>
<string name="encryption_algorithm">Şifrələmə alqortiması</string>
<string name="clipboard_error">Bəzi cihazlar mübadilə buferindən istifadə etməyə icazə verməyəcək.</string>
<string name="clipboard_error_clear">Mübadilə buferi təmizlənmədi</string>
<string name="content_description_password_checkbox">Şifrə təsdiqi</string>
<string name="expired">Müddəti bitdi</string>
<string name="content_description_entry_foreground_color">Şifrənin ön plan rəngi</string>
<string name="content_description_entry_background_color">Şifrənin arxa plan rəngi</string>
<string name="validate">Doğrula</string>
<string name="discard">Ləğv et</string>
<string name="content_description_passphrase_word_count">Şifrədəki söz sayısı</string>
<string name="content_description_update_from_list">Yenilə</string>
<string name="content_description_remove_from_list">Sil</string>
<string name="html_about_contribution">&lt;strong&gt;Müstəqilliyimiz qorumaq&lt;/strong&gt;, &lt;strong&gt;xətaları düzəltmək&lt;/strong&gt;,&lt;strong&gt;yeni funskiyalar əlavə etmək&lt;/strong&gt;&lt;strong&gt;hər zaman aktiv olmaq&lt;/strong&gt;üçün&lt;strong&gt;sizin &lt;/strong&gt;dəstəyinizə etibar edirik.</string>
<string name="entry_created">Yaradıldı</string>
<string name="entry_expires">İstifadə müddəti biti</string>
<string name="tags">Etiketlər</string>
<string name="entry_password">Şifrə</string>
<string name="error_disallow_no_credentials">Ən azından bir ədəd şəxsiyyəti təyin edən məlumat təyin edilməlidir.</string>
<string name="error_pass_gen_type">Ən azından bir ədəd şifrə generatoru növü seçilməlidir.</string>
<string name="error_rounds_too_large">\"Transformasiya mərhələləri\" çox yüksəkdir. 2147483648-ə təyin edin.</string>
<string name="error_save_database">Malumat bazasını yadda saxlamaq mümkün olmadı.</string>
<string name="error_otp_secret_key">Məxfi söz Base32 formatında olmalıdır.</string>
<string name="error_challenge_already_requested">Doğrulama artıq istənilib.</string>
<string name="error_response_already_provided">Artıq cavab verilib.</string>
<string name="error_location_unknown">Məlumat bazasının yeri məlum deyil, məlumat bazası funksiyası yerinə yetirilə bilməz.</string>
<string name="error_empty_key">Açar bölməsi boş saxlanıla bilməz.</string>
<string name="field_name">Sahə adı</string>
<string name="field_value">Sahə dəyəri</string>
<string name="file_not_found_content">Fayl tapılmadı. Onu fayl menecerində yenidən açmağı yoxlayın.</string>
<string name="corrupted_file">Zədələnmiş fayl.</string>
<string name="hint_conf_pass">Şifrəni təsdiq et</string>
<string name="hint_generated_password">Yaradılmış şifrə</string>
<string name="hint_group_name">Qrup adı</string>
<string name="hint_icon_name">İkona adı</string>
<string name="hint_keyfile">Açar faylı</string>
<string name="passphrase">Şifrəli cümlə</string>
<string name="error_driver_required">%1$s üçün drayver lazımdır.</string>
<string name="error_cancel_by_user">İstifadəçi tərəfindən ləğv edildi.</string>
<string name="hint_length">Uzunluq</string>
<string name="error_hardware_key_unsupported">Aparat-təchizat açarı dəstəklənmir.</string>
<string name="generate_password">Şifrə yarat</string>
<string name="password">Şifrə</string>
<string name="file_browser">Fayl meneceri</string>
<string name="hint_pass">Şifrə</string>
<string name="show_uuid_title">UUID-ni göstər</string>
<string name="show_uuid_summary">Şifrə və ya şifrə qrupuna bağlı UUID-ni göstər</string>
<string name="list_groups_show_number_entries_summary">Qrupdaki şifrələrin sayını göstər</string>
<string name="list_size_title">Listdəki faylların həcmi</string>
<string name="list_size_summary">Element listindəki mətnin ölçüsü</string>
<string name="creating_database">Məlumat bazası yaradılır …</string>
<string name="loading_database">Məlumat bazası yüklənir …</string>
<string name="lowercase">Kiçik hərf</string>
<string name="about">Haqqında</string>
<string name="menu_change_key_settings">Ana açarı dəyişdir</string>
<string name="copy_field">%1$s nüsxələndi</string>
<string name="menu_form_filling_settings">Forum doldurma</string>
<string name="menu_form_filling_settings_summary">Klaviatura, avtomatik douldurma, mübadilə buferi</string>
<string name="menu_advanced_unlock_settings">Cihaz kilidini aç</string>
<string name="menu_advanced_unlock_settings_summary">Biometrik, cihaz şəxsiyyətini təyin edən məlumatlar</string>
<string name="menu_security_settings_summary">Şifrələmə, açar yaratma funskiyası</string>
<string name="menu_master_key_settings">Ana açar parametrləri</string>
<string name="settings">Parametrlər</string>
<string name="menu_app_settings">Tətbiq parametrləri</string>
<string name="menu_app_settings_summary">Axtar, kilidlə, tarixçə, xüsusiyyətlər</string>
<string name="menu_database_settings">Məlumat bazası parametrləri</string>
<string name="menu_database_settings_summary">Meta məlumatlar, zibil qutusu, şablonlar, tarixçə</string>
<string name="menu_security_settings">Təhlükəsizlik parametrləri</string>
<string name="menu_paste">Mubadilə buferindən əlavə et</string>
<string name="menu_delete">Sil</string>
<string name="menu_cancel">Ləğv et</string>
<string name="menu_hide_password">Şifrəni gizlət</string>
<string name="menu_lock">Məlumat bazasını kilidlə</string>
<string name="menu_save_database">Məlumatları yadda saxla</string>
<string name="menu_merge_database">Məlumatları birləşdir</string>
<string name="menu_reload_database">Məlumatları yenidən yüklə</string>
<string name="menu_merge_from">... -dan birləşdir</string>
<string name="menu_save_copy_to">Bir nüsxəsini burada ... yadda saxla</string>
<string name="menu_open"></string>
<string name="menu_search">Axtar</string>
<string name="menu_showpass">Şifrəni göstər</string>
<string name="menu_donate">İanə et</string>
<string name="master_key_settings_summary">Dəyişiklik, yenilənmə</string>
<string name="menu_edit">Düzəliş et</string>
<string name="menu_copy">Nüsxələ</string>
<string name="menu_move">Köçür</string>
<string name="remember_hardware_key_title">Aparat-təchizat açarlarını xatırla</string>
<string name="remember_keyfile_locations_title">Açar faylın yerini xatırla</string>
<string name="remember_keyfile_locations_summary">Açar faylların saxlanıldığı yeri unutma</string>
<string name="show_recent_files_title">Ən son faylları göstər</string>
<string name="hide_broken_locations_title">Zədələnmiş məlumat bazası linklərini gizlət</string>
<string name="show_recent_files_summary">Ən son məlumat bazalarının yerini göstər</string>
<string name="export_app_properties_title">Tətbiqin parametrlərini ixrac et</string>
<string name="export_app_properties_summary">Tətbiqin parametrlərini ixrac etmək üçün bir fayl yaradın</string>
<string name="description_app_properties">Tətbiq parametrlərini idarə etmək üçün KeePassDX xüsusiyyətləri</string>
<string name="success_import_app_properties">Tətbiqin parametrləri idxal edildi</string>
<string name="success_export_app_properties">Tətbiqin parametrləri ixrac edildi</string>
<string name="encryption_explanation">Bütün malumatlar üçün istifadə olunan məlumat bazası şifrələmə alqoritması</string>
<string name="do_not_kill_app">Tətbiqi bağlamayın …</string>
<string name="space">Boşluq</string>
<string name="filter">Filter</string>
<string name="sort_ascending">Öncə ən aşağı</string>
<string name="sort_groups_before">Öncə qruplar</string>
<string name="sort_recycle_bin_bottom">Aşağıdakı zibil qutusu</string>
<string name="sort_db">Təbii sıralama</string>
<string name="sort_title">Başlıq</string>
<string name="sort_creation_time">Yaradılma</string>
<string name="sort_last_modify_time">Dəyişiklik</string>
<string name="search">Axtar</string>
<string name="underline">Altdan xətt</string>
<string name="uppercase">Böyük hərf</string>
<string name="warning">Xəbərdarlıq</string>
<string name="error_import_app_properties">Tətbiqin parametrlərinin idxalı zamanı xəta baş verdi.</string>
<string name="error_export_app_properties">Tətbiqin parametrləri idxal edilən zaman xəta baş verdi.</string>
<string name="root">Kök</string>
<string name="sort_menu">Çeşidlə</string>
<string name="sort_username">İstifadəçi adı</string>
<string name="sort_last_access_time">Giriş</string>
<string name="special">Özəl</string>
<string name="unsupported_db_version">Dəstəklənməyən məlumat bazas versiyası.</string>
<string name="merge_success">Birləşdirmə uğurla tamamlandı</string>
<string name="warning_copy_permission">Mübadilə buferi bildiriş funksiyası üçün bildiriş icazəsinə ehtiyyac var.</string>
<string name="later">Sonra</string>
<string name="ask">Soruş</string>
<string name="configure">Kofiqurasiya et</string>
<string name="keystore_not_accessible">Açar ehtiyyatı düzgün formada başladılmadı.</string>
<string name="advanced_unlock_prompt_store_credential_title">Cihaz kilidini açma linki</string>
<string name="database_history">Tarixçə</string>
<string name="advanced_unlock_scanning_error">Cihaz kilidini açma xətası: %1$s</string>
<string name="warning_database_info_reloaded">Məlumat bazasını yenidən yükləmək lokal olaraq modifikasiya olunmuş faylları siləcəkdir.</string>
<string name="warning_database_revoked">Fayla giriş fayl meneceri tərəfindən ləğv edildi, məlumat bazasını bağlayın və onu olduğu yerdən yenidən açın.</string>
<string name="warning_exact_alarm">Siz tətəbiqin zəngli saatdan istifadə etməsinə icazə verməmisiniz. Nəticədə, taymer tələb edən funksiyalar dəqiq bir zamanda işləməyəckdir.</string>
<string name="warning_keyfile_integrity">Android, məlumatlarını anında dəyişdirə biləcəyindən faylın heşi qaranti edilməyib. Doğru bütünlük üçün fayl əlavəsini .bin olaraq dəyişin.</string>
<string name="permission">İcazə</string>
<string name="version_label">Versiya %1$s</string>
<string name="build_label">Nüvə%1$s</string>
<string name="configure_biometric">Biometrik və ya cihaz şəxsiyyəti ilə doğrulama məlumatları tapılmadı.</string>
<string name="biometric_security_update_required">Biometrik təhlükəsizlik yenilənməsi lazımdır.</string>
<string name="unlock_and_link_biometric">Cihaz kilid açma linki</string>
<string name="advanced_unlock_prompt_extract_credential_title">Cihaz kilidini tanıma</string>
<string name="encrypted_value_stored">Şifrələnmiş şifrə ehtiyyata alındı</string>
<string name="advanced_unlock_not_recognized">Cihaz kilidini açmaq üçün barmaq izi tanınmadı</string>
<string name="unavailable">Mövcud deyil</string>
<string name="credential_before_click_advanced_unlock_button">Şifrəni yazın və sonra bu düyməyə basın.</string>
<string name="properties">Xüsusiyyətlər</string>
<string name="menu_appearance_settings">Görünüş</string>
<string name="menu_appearance_settings_summary">Tema, rəng və atributlar</string>
<string name="biometric">Biometriya</string>
<string name="device_credential">Cihazın şəxsiyyətini təsdiq edən məlumatları</string>
<string name="general">Ümumi</string>
<string name="autofill">Avtomatik doldurma</string>
<string name="autofill_service_name">KeePassDX avtomatik doldurma formu</string>
<string name="autofill_sign_in_prompt">KeePassDX ile giriş edin</string>
<string name="education_entry_new_field_title">Xüsusi bölmələr əlavə edin</string>
<string name="education_add_attachment_title">Qoşma əlavə edin</string>
<string name="advanced_unlock_explanation_summary">Məlumat bazasını daha asan açmaq üçün cihazın kilid açma funksiyasından istifadə edin</string>
<string name="device_credential_unlock_enable_summary">Məlumat bazasını açmaq üçün cihaz şəxsiyyət məlumatlarından istifadə etməyə imkan verir</string>
<string name="education_add_attachment_summary">Önəmli xarici məlumatları yadda saxlamaq üçün şifrənizə (qeyd) qoşma əlavə edin.</string>
<string name="temp_advanced_unlock_enable_title">Müvəqqəti kilid açma</string>
<string name="temp_advanced_unlock_timeout_title">Cihazın kilid açma müddəti bitdi</string>
<string name="unavailable_feature_version">Bu cihazda Andoird %1$s versiyası var, lakin %2$svə ya daha sonrakı versiya lazımdır.</string>
<string name="path">Yol</string>
<string name="unavailable_feature_hardware">Lazımi aparat-təchizat tapılmadı.</string>
<string name="max_history_size_title">Maksimum həcm</string>
<string name="templates_group_uuid_title">Şablonlar qrupu</string>
<string name="max_history_items_title">Maskimum sayı</string>
<string name="max_history_size_summary">Hər şifrəyə görə tarixçə həcmini limitlə</string>
<string name="settings_database_recommend_changing_master_key_summary">Ana açarın dəyişdirilməsini tövsiyə et (gün)</string>
<string name="settings_database_force_changing_master_key_title">Yeniləməyə məcbur et</string>
<string name="settings_database_force_changing_master_key_next_time_title">Bir sonrakı səfərə yeniləməyə məcbur et</string>
<string name="settings_database_force_changing_master_key_summary">Ana açarın dəyişdirilməsini tələb et (gün)</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Bir sonrakı səfərə ana açarın dəyişdirilməsini tələb et (tək səfərlik)</string>
<string name="keyboard_notification_entry_summary">Şifrə mövcud olanda bildirişi göstər</string>
<string name="keyboard_notification_entry_content_text">%1$s</string>
<string name="keyboard_appearance_category">Görünüş</string>
<string name="keyboard_theme_title">Klaviatura teması</string>
<string name="keyboard_change">Klaviaturanı dəyişdir</string>
<string name="keyboard_keys_category">Açarlar</string>
<string name="keyboard_key_sound_title">Düyməyə toxunulduğunda səs çıxart</string>
<string name="education_unlock_summary">Məlumat bazanızın şifrəsini açmaq üçün şifrə və\\və ya açar faylı daxil edin.\n\nMəlumat bazası faylını hər dəfə dəyişəndən sonra etibarlı bir yerdə ehtiyat üçün nüsxələyin.</string>
<string name="biometric_unlock_enable_title">Biometrik kilid açma</string>
<string name="biometric_unlock_enable_summary">Məlumat bazasını açmaq üçün biometrikləri skan etməyə imkan verir</string>
<string name="device_credential_unlock_enable_title">Cihaz şəxsiyyət məlumatları ilə kilid açma</string>
<string name="biometric_auto_open_prompt_title">Avtomatik açma istəyi</string>
<string name="biometric_auto_open_prompt_summary">Məlumat bazası ondan istifadə ediləcək şəkildə quraşdırılıbsa, cihaz kilidini avtomatik olaraq tələb et</string>
<string name="temp_advanced_unlock_enable_summary">Cihaz kilidini açmaq üçün hər hansısa şifrələnmiş məzmunu saxlamayın</string>
<string name="biometric_delete_all_key_title">Şifrələnmiş açarları silin</string>
<string name="unavailable_feature_text">Bu funksiya işləmədi.</string>
<string name="file_name">Fayl adı</string>
<string name="assign_master_key">Ana açar təyin edin</string>
<string name="data">Məlumat</string>
<string name="database_data_compression_title">Məlumat sıxışdırma</string>
<string name="database_data_compression_summary">Məlumat sıxışdırma məlumat bazasının həcmini azaldır</string>
<string name="database_data_remove_unlinked_attachments_title">Əlaqəsiz məlumatları sil</string>
<string name="recycle_bin_title">Zibil qutusu istifadəsi</string>
<string name="recycle_bin_summary">Qrup və qeydləri (şifrə) silməzdən öncə \"Zibil qutusuna\" köçür</string>
<string name="recycle_bin_group_title">Zibil qutusu qrupu</string>
<string name="templates_group_enable_title">Şablonlardan istifadə</string>
<string name="templates_group_enable_summary">Şifrə məlumatlarındakı xanaları doldurmaq üçün dinamik şablonlardan istifadə edin</string>
<string name="settings_database_recommend_changing_master_key_title">Yeniləməyi tövsiyə et</string>
<string name="allow_copy_password_summary">Şifrələrin və qorunan məlumatların mübadilə buferinə nüsxələnməsinə icazə ver</string>
<string name="allow_copy_password_warning">Xəbərdarlıq: Mübadilə buferi bütün tətbiqlər tərəfindən istifadə olunur. Əgər həssas məlumatlar nüsxələnibsə, digər tətbiqlər onu bərpa edə bilər.</string>
<string name="enable">Aktiv et</string>
<string name="disable">Deaktiv et</string>
<string name="notification">Bildiriş</string>
<string name="clear_clipboard_notification_title">Tətbiqi bağlayarkən sil</string>
<string name="database_name_title">Məlumat bazasının adı</string>
<string name="database_description_title">Məlumat bazasının açıqlaması</string>
<string name="database_default_username_title">Standart (susmaya görə) istifadəçi adı</string>
<string name="database_custom_color_title">Xüsusi məlumat bazası rəngi</string>
<string name="database_version_title">Məlumat bazası versiyası</string>
<string name="text_appearance">Mətn</string>
<string name="application_appearance">İnterfeys</string>
<string name="other">Digər</string>
<string name="compression">Sıxışdırma</string>
<string name="compression_none">Heç biri</string>
<string name="compression_gzip">Gzip</string>
<string name="recycle_bin">Zibil qutusu</string>
<string name="templates">Şablonlar</string>
<string name="keyboard">Klaviatura</string>
<string name="magic_keyboard_title">Magikeyboard</string>
<string name="device_keyboard_setting_title">Cihaz klaviatura parametrləri</string>
<string name="keyboard_name">Magikeyboard</string>
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
<string name="keyboard_setting_label">Magikeyboard parametrləri</string>
<string name="keyboard_entry_category">Şifrə</string>
<string name="keyboard_selection_entry_title">Şifrə seçimi</string>
<string name="keyboard_notification_entry_title">Bildiriş məlumatı</string>
<string name="keyboard_save_search_info_title">Paylaşılan məlumatları yadda saxla</string>
<string name="keyboard_notification_entry_clear_close_title">Tətbiqi bağlayarkən təmizlə</string>
<string name="keyboard_notification_entry_clear_close_summary">Bildirişi bağlayarkən məlumat bazasını bağla</string>
<string name="keyboard_entry_timeout_title">Taymaut</string>
<string name="keyboard_notification_entry_content_title_text">Şifrə</string>
<string name="keyboard_notification_entry_content_title">%1$s Magikeyboard-da istifadə edilə bilər</string>
<string name="keyboard_key_vibrate_title">Düyməyə toxunulduğunda titrət</string>
<string name="education_setup_OTP_title">Birdəfəlik şifrə (OTP) təyin edin</string>
<string name="education_unlock_title">Məlaumat bazasının şifrəsini açın</string>
<string name="education_read_only_title">Məlumat bazasını dəyişiklik edilməsinə qarşı qoruyun</string>
<string name="education_field_copy_title">Bölməni (sahəni) nüsxələyin</string>
<string name="education_field_copy_summary">Nüsxələnmiş bölmələr (sahələr) istənilən yerə nüsxələnə bilər.\n\nÜntünlük verdiyiniz form doldurma metodunu seçin.</string>
<string name="education_lock_title">Məlumat bazasını kilidləyin</string>
<string name="html_text_donation">Azadlığımızı qorumaq və daima aktiv olmağınız üçün sizin &lt;strong&gt;yardımınıza güvənirik.&lt;/strong&gt;</string>
<string name="html_text_feature_generosity">Bu &lt;strong&gt;görünüş stili&lt;/strong&gt;sizin əliaçıqlığınız sayəsində mövuddur.</string>
<string name="html_text_dev_feature">Bu xüsusiyyət &lt;strong&gt;hazırlıq mərhələsindədir&lt;/strong&gt; və tezliklə &lt;strong&gt;istifadə verilməsi üçün sizin &lt;strong&gt;yardımınıza ehtiyyacı var.</string>
<string name="html_text_dev_feature_encourage">tərtibatçıları &lt;strong&gt;yeni funksiyalar əlavə etməyə&lt;/strong&gt;&lt;strong&gt;sizin rəylərinizə əsasən &lt;/strong&gt;xətaları düzəltməyə həvəsləndirirsiniz.</string>
<string name="contribute">Yardım et</string>
<string name="unit_kibibyte">KiB</string>
<string name="unit_mebibyte">MiB</string>
<string name="unit_gibibyte">GiB</string>
<string name="style_name_simple">Sadə</string>
<string name="save">Yadda saxla</string>
<string name="number">Nömrə</string>
<string name="card_verification_value">CVV</string>
<string name="personal_identification_number">PİN</string>
<string name="international_bank_account_number">İBAN</string>
<string name="standard">Standart</string>
<string name="warning_sure_add_file">Hər bir halda fayl əlavə edilsinmi?</string>
<string name="warning_remove_unlinked_attachment">Əlaqəsiz məlumatların silinməsi məlumat bazanızın həcmini azalda bilər, lakin KeePass modulları üçün olan məlumatları da silə bilər.</string>
<string name="warning_sure_remove_data">Hər bir halda bu məlumatlar silinsinmi?</string>
<string name="warning_empty_keyfile">Boş bir açar faylı əlavə etmək məsləhət görülmür.</string>
<string name="warning_empty_keyfile_explanation">Açar faylın məzmunu heç vaxt dəyişdirilə bilinməməlidir və ən yaxşı halda təsadüfi yaradılmış məlumatlardan ibarət olmalıdır.</string>
<string name="warning_database_info_changed">Məlumat bazası faylınızda olan informasiya tətbiq xaricində dəyişdirilib.</string>
<string name="warning_database_info_changed_options_read_only">Ən son dəyişikliklərlə məlumat bazasını yenidən yükləyin.</string>
<string name="warning_database_notification_permission">Bildiriş icazəsi, məlumat bazasının statusunu göstərməyə və onu əlçatan bir düymə ilə kilidləməyə imkan verir.\n\nƏgər icazəni aktivləşdirməsəniz arxa planda açıq olan məlumat bazası, ön planda başqa bir tətbiq varkən görünməyəcəkdir.</string>
<string name="warning_database_info_changed_options">Məlumatları birləşdirin, məlumat bazasını yadda saxlayaraq xarici dəyişikliklərin üzərinə yazın və ya ən son dəyişikliklər ilə onu yenidən yükləyin.</string>
<string name="clipboard">Mübadilə buferi</string>
<string name="clipboard_explanation_summary">Cihazınızın mübadilə buferindən istifadə edərək şifrə sahələrini (bölmələrini) nüsxələyin</string>
<string name="clipboard_notifications_title">Mübadilə buferi bildirişləri</string>
<string name="clipboard_notifications_summary">Şifrəni göstərərkən sahələri (bölmə) nüsxələmək üçün mübadilə buferi bildirişlərini göstər</string>
<string name="clipboard_warning">Əgər mübadilə buferinin avtomatik silinməsi uğursuz olarsa, onun tarixçəsini əllə silin.</string>
<string name="html_text_ad_free">Digər bir çox şifrə menecerlerindən fərqli olaraq, bu tətbiq &lt;strong&gt;reklamsız&lt;/strong&gt;,&lt;strong&gt;azad lisenziyaya sahibdir&lt;/strong&gt; və hansı versiyanı istifadə etdiyinizdən asılı olmayaraq, şəxsi məlumatlarınızı öz serverlərində toplamır.</string>
<string name="advanced_unlock_keystore_warning">Bu xüsusiyyət, şifrələnən şəxsiyyəti təsdiq edən məlumatları cihazın təhlükəsiz açar bazasında saxlayacaqdır.\n\nƏməliyyat sisteminin yerli APİ-nin tətbiqindən asılı olaraq, tam olaraq funksional olmaya bilər.\n\nCihazın istehsalçısı və istifadə etdiyiniz ROM-un tərtibatçısı ilə açar bazasının uyğunluğu və təhlükəsizliyini yoxlayın.</string>
<string name="autofill_inline_suggestions_title">Cümlə daxili təkliflər</string>
<string name="autofill_inline_suggestions_summary">Birbaşa uyğun olan klaviaturadan avtomatik doldurma təkliflərini göstərməyə çalış</string>
<string name="autofill_manual_selection_title">Əllə seçim</string>
<string name="autofill_manual_selection_summary">İstifadəçiyə məlumat bazası şifrəsini seçməyə imkan verən seçimi göstər</string>
<string name="autofill_save_search_info_title">Axtarış məlumatlarını yadda saxla</string>
<string name="autofill_inline_suggestions_keyboard">Avtomatik doldurma təklifləri əlavə edildi.</string>
<string name="allow_no_password_title">Ana açar olmamasına icazə ver</string>
<string name="enable_read_only_summary">Məlumat bazasını standart olaraq yazma-qorumalı (dəyişməz) aç</string>
<string name="enable_auto_save_database_title">Məlumat bazasını avtomatik olaraq yadda saxla</string>
<string name="reset_education_screens_summary">Bütün təlim məlumatlarını yenidən göstər</string>
<string name="reset_education_screens_text">Təlim ipuclarını sıfırlamaq</string>
<string name="education_new_node_title">Məlumat bazanıza məlumatlar (fayl) əlavə edin</string>
<string name="education_search_summary">Şifrələrinizi geri əldə etmək üçün başlıq, istifadəçi adı və ya digər sahələrin (bölmə) məzmununu daxil et.</string>
<string name="education_entry_edit_title">Şifrəyə düzəliş edin</string>
<string name="education_generate_password_summary">Şifrənizlə əlaqələndirmək üçün güclü bir şifrə yaradın, anketin kriteriyalarına görə onu asanlıqla müəyyənlşdirin və güvənli şifrəni unutmayın.</string>
<string name="education_generate_password_title">Güclü şifrə yaradın</string>
<string name="keyboard_previous_lock_title">Məlumat bazasını kilidlə</string>
<string name="file_manager_install_description">Məlumat bazası fayllarını yaratmaq, açmaq və yadda saxlamaq üçün ACTION_CREATE_DOCUMENT və ACTION_OPEN_DOCUMENT funksiyalarını həyata keçirə bilən bir fayl meneceri tələb olunur.</string>
<string name="content_description_node_children">Şəbəkə nöqtəsinin alt kateqoriyası</string>
<string name="content_description_add_node">Şəbəkə nöqtəsi əlavə edin</string>
<string name="content_description_repeat_toggle_password_visibility">Şifrənin görünüb-görünməməsinin dəyişdirilməsini təkrarlayın</string>
<string name="content_description_nav_header">Naviqasiya başlığı</string>
<string name="navigation_drawer_open">Naviqasiya panelini aç</string>
<string name="navigation_drawer_close">Naviqasiya panelini bağla</string>
<string name="entry_add_field">Sahə (bölmə) əlavə et</string>
<string name="content_description_remove_field">Sahəni (bölməni) sil</string>
<string name="content_description_keyboard_close_fields">Sahələri (bölmələri) bağla</string>
<string name="html_about_licence">KeePassDX©%1$dKunzisoft&lt;strong&gt;ıq mənbəlidir və&lt;/strong&gt;&lt;strong&gt;ondan heç bir reklam yoxdur&lt;/strong&gt;.\n&lt;strong&gt;GPLv3&lt;/strong&gt;lisenziyasına sahibdir, hər hansısa bir qarantiyası yoxdur.</string>
<string name="inherited">İdxal et</string>
<string name="auto_type">Avtomatik yazma</string>
<string name="auto_type_sequence">Avtomatik yazma sırası</string>
<string name="entry_not_found">Şifrə məlumatları tapılmadı.</string>
<string name="custom_data">Özəl məlumat</string>
<string name="entry_title">Başlıq</string>
<string name="entry_setup_otp">Tək səfərlik şifrə təyin et</string>
<string name="otp_type">OTP növü</string>
<string name="otp_secret">Sirr</string>
<string name="otp_period">Müddət (saniyə)</string>
<string name="otp_counter">Sayğac</string>
<string name="otp_digits">Rəqəmlər</string>
<string name="search_filters">Axtarış filterləri</string>
<string name="otp_algorithm">Alqoritma</string>
<string name="current_group">Hazırki qrup</string>
<string name="regex">Müntəzəm ifadə</string>
<string name="debit_credit_card">Debet / Kredit Kartı</string>
<string name="holder">Sahib</string>
<string name="id_card">Səxsiyyət Vəsiqəsi</string>
<string name="name">Ad</string>
<string name="place_of_issue">Verildiyi yer</string>
<string name="date_of_issue">Verildiyi tarix</string>
<string name="email">Elektron poçt</string>
<string name="email_address">Elektron poçt adresi</string>
<string name="wireless">Wi-Fi</string>
<string name="ssid">SSİD</string>
<string name="type">Növ</string>
<string name="cryptocurrency">Kripto valyuta pul kisəsi</string>
<string name="token">Jeton</string>
<string name="private_key">Şəxsi açar</string>
<string name="public_key">Ortaq açar</string>
<string name="seed">Başlanğıc</string>
<string name="account">Hesab</string>
<string name="bank">Bank</string>
<string name="bank_name">Bank adı</string>
<string name="bank_identifier_code">SWIFT / BIC</string>
<string name="secure_note">Təhlükəsizlik Qeydi</string>
<string name="membership">Üzvlük</string>
<string name="template">Şablon</string>
<string name="version">Versiya</string>
<string name="entry_otp">OTP</string>
<string name="entry_url">URL</string>
<string name="entry_user_name">İstifadəçi adı</string>
<string name="error_arc4">Arcfour axın şifrəsi dəstəklənmir.</string>
<string name="error_file_not_create">Faylı yaratmaq mümkün olmadə.</string>
<string name="error_can_not_handle_uri">Bu URİ-nin KeePassDX-də istifadəsi mümkün olmadı.</string>
<string name="case_sensitive">Böyük/kiçik hərf həssaslığı</string>
<string name="error_invalid_db">Məlumat bazasını oxumaq mümkün olmadı.</string>
<string name="error_invalid_path">Fayl yolunun doğru olduğundan əmin olun.</string>
<string name="error_invalid_OTP">Etibarsız gizli OTP.</string>
<string name="error_no_name">Ad daxil edin.</string>
<string name="error_word_reserved">Bu söz rezerv edilib və istifadəsi mümkün deyil.</string>
<string name="error_nokeyfile">Açar faylı seçin.</string>
<string name="error_no_hardware_key">Aparat-təchizat açarı seçin.</string>
<string name="error_out_of_memory">Bütün məlumat bazanızı yükləyəcək qədər yaddaşda yer yoxdur.</string>
<string name="error_XML_malformed">XML xətalı formalaşıb.</string>
<string name="error_load_database">Məlumat bazasını yükləmək mümkün olmadı.</string>
<string name="error_load_database_KDF_memory">Açarı yükləmək mümkün olmadı. KDF \"Yaddaş İstifadəsini\" azaltmağa çalışın.</string>
<string name="error_move_entry_here">Bu şifrəni buraya köçürə bilməzsiniz.</string>
<string name="error_copy_entry_here">Bu şifrəni buraya nüsxələyə bilməzsiniz.</string>
<string name="error_otp_digits">Jeton %1$d ilə %2$d arası rəqəmlərdən ibarət olmalıdır.</string>
<string name="error_otp_type">Mövcud OTP növü bu form tərəfindən tanınmır, onun doğrulaması artıq düzgün şəkildə jeton yaratmaya bilər.</string>
<string name="error_string_type">Bu mətn istənilən məlumat (fayl) ilə uyğunlaşmır.</string>
<string name="error_registration_read_only">Dəyişməz (yalnız oxuna bilən) məlumat bazasında yeni bir məlumatın yadda saxlanılmasına icazə verilmir.</string>
<string name="error_field_name_already_exists">Sahə (bölmə) adı artıq mövcuddur.</string>
<string name="error_database_uri_null">Mləlumat bazası URİ-sini geri qaytarmaq olmur.</string>
<string name="error_rebuild_list">Listi düzgün şəkildə yenidən hazırlamaq mümkün deyil.</string>
<string name="error_file_to_big">Qarşıya yükləməyə çalışdığınız faylın həcmi çox böyükdür.</string>
<string name="error_duplicate_file">Fayl məlumatları artıq mövcuddur.</string>
<string name="error_upload_file">Fayl məlumatları qarşıya yüklənərkən xəta baş verdi.</string>
<string name="error_remove_file">Fayl məlumatlarını silərkən xəta baş verdi.</string>
<string name="error_start_database_action">Məlumat bazasında prosses həyata keçirilərkən xəta baş verdi.</string>
<string name="error_no_response_from_challenge">Doğrulama istəyindən cavab almaq mümkün deyil.</string>
<string name="error_unable_merge_database_kdb">kdb məlumat bazası faylı ilə birləşdirmə etmək mümkün deyil.</string>
<string name="invalid_credentials">Şəxsiyyəti təsdiq edən məlumatları oxumaq mümkün olmadı.</string>
<string name="invalid_algorithm">Yanlış alqoritma.</string>
<string name="invalid_db_same_uuid">%1$s eyni UUİD dəyərinə sahib %2$s artıq mövcuddur.</string>
<string name="invalid_db_sig">Məlumat bazasının formatını tanımaq mümkün olmadı.</string>
<string name="keyfile_is_empty">Açar faylı boşdur.</string>
<string name="length">Uzunluq</string>
<string name="hide_password_title">Şifrələri gizlət</string>
<string name="hide_password_summary">Şifrələri standart olaraq (***) ilə maskala</string>
<string name="colorize_password_title">Şifrələri rəngləndir</string>
<string name="colorize_password_summary">Şifrə hərflərini (simvollarını) növə görə rəngləndir</string>
<string name="list_entries_show_username_title">İstifadəçi adlarını göstər</string>
<string name="list_entries_show_username_summary">Şifrə siyahılarında olan istifadəçi adlarını göstər</string>
<string name="list_groups_show_number_entries_title">Şifrələrin sayını göstər</string>
<string name="show_otp_token_title">OTP Jetononu göstər</string>
<string name="show_otp_token_summary">Şifrələrin siyahısında OTP jetonlarını göstər</string>
<string name="menu_keystore_remove_key">Cihaz kilid açma açarını sil</string>
<string name="menu_url">URL-ni aç</string>
<string name="menu_file_selection_read_only">Yazma qoruması</string>
<string name="menu_open_file_read_and_write">Modifikasiya edilə bilən</string>
<string name="menu_empty_recycle_bin">Zibil qutusunu boşalt</string>
<string name="menu_restore_entry_history">Tarixçəni bərpa et</string>
<string name="menu_delete_entry_history">Tarixçəni sil</string>
<string name="menu_external_icon">Xarici ikona</string>
<string name="minus">Mənfi</string>
<string name="never">Heç vaxt</string>
<string name="no_results">Axtarılan nəticə tapılmadı</string>
<string name="no_url_handler">Bu URL-ni açmaq üçün bir veb brauzer quraşdır.</string>
<string name="select_database_file">Mövcud kassanı</string>
<string name="create_keepass_file">Yeni kassa yarat</string>
<string name="auto_focus_search_title">Sürətli axtarış</string>
<string name="auto_focus_search_summary">Məlumat bazasını açarkən axtarış tələb et</string>
<string name="subdomain_search_title">Alt domendə axtarış</string>
<string name="subdomain_search_summary">Veb domenləri, alt domen məhdudiyyətləri ilə arxtarın</string>
<string name="progress_create">Yeni məlumat bazası yaradılır …</string>
<string name="progress_title">İşləyir …</string>
<string name="protection">Qoruma</string>
<string name="read_only">Yazma qorumalı</string>
<string name="read_only_warning">Fayl menecerinizdən asılı olaraq, KeePassDX cihazınızın yaddaşına yazmasına icazə verilməyə bilər.</string>
<string name="contains_duplicate_uuid">Məluamt bazasında təkrarlanan UUİD-lər mövcuddur.</string>
<string name="contains_duplicate_uuid_procedure">Təkrarlananlar üçün yeni UUİD-lər yaradaraq problemi həll edib davam et istəyirsinizmi?</string>
<string name="search_mode">Axtarış modu</string>
<string name="save_mode">Yadda saxlama modu</string>
<string name="selection_mode">Seçim modu</string>
<string name="registration_mode">Qeydiyyat modu</string>
<string name="remember_database_locations_title">Məlumat bazalarının yerlərini xatırlayın</string>
<string name="remember_database_locations_summary">Məlumat bazalarının harada saxlanıldığını izlə</string>
<string name="remember_hardware_key_summary">Aparat-təchizat açarlarının harada istifadə olunduğunu izlə</string>
<string name="hide_broken_locations_summary">Son məlumat bazaları siyahısındakı yararsız linkləri gizlət</string>
<string name="import_app_properties_title">Tətbiq parametrlərini idxal et</string>
<string name="import_app_properties_summary">Tətbiq parametrlərini idxal etmək üçün fayl seçin</string>
<string name="rounds">Transformasiya turları</string>
<string name="rounds_explanation">Əlavə şifrələmə turları, brute force hücumlarına qarşı yüksək qoruma təmin edər, lakin yükləmə və yadda saxlama prossesini ciddi şəkildə yavaşladır.</string>
<string name="memory_usage">Yaddaş istifadəsi</string>
<string name="memory_usage_explanation">Açar yaratma funksiyası tərəfindən istifadə ediləcək yaddaşın miqdarı.</string>
<string name="parallelism">Paralellik</string>
<string name="kdf_explanation">Şifrələmə alqoritmasının açarını hazırlamaq üçün ana açar, təsadüfi açar yaratma funksiyasından istifadə edilərək çevrilir.</string>
<string name="parallelism_explanation">Açar yaratma funksiyası tərəfindən istifadə edilən paralellik dərəcəsi (yəni thread-lərin sayı).</string>
<string name="saving_database">Məlumat bazası yadda saxlanılır …</string>
<string name="command_execution">Əmr yerinə yetirilir …</string>
<string name="warning_no_encryption_key">Şifrələmə açarı olmadan davam edilsinmi?</string>
<string name="warning_permanently_delete_nodes">Seçilmiş şəbəkə nöqtələri qalıcı olaraq silinsinmi?</string>
<string name="warning_empty_recycle_bin">Zibil qutusundakı bütün şəbəkə nöqtələri qalıcı olaraq silinsinmi?</string>
<string name="warning_file_too_big">KeePassDX məlumat bazası sadəcə kiçik köməkçi faylları (PGP açar faylları kimi) ehtiva edə bilər.\n\nMəlumat bazanızın bu yükləməylə həcmi çox arta və performansı aşağı düşə bilər.</string>
<string name="warning_replace_file">Bu faylın yüklənməsi mövcud olanı əvəzləyəcəkdir.</string>
<string name="warning_password_encoding">Məlumat bazası faylındakı mətn kodlama formatından xaric şifrə hərflərindən (simvol) istifadə etməkdən yayının (tanınmayan hərflər (simvollar) eyni hərfə çevrilir).</string>
<string name="warning_database_read_only">Məlumat bazasındakı dəyişiklikləri yadda saxlamaq üçün faylların yazılmasına icazə verin</string>
<string name="warning_database_link_revoked">Fayla giriş icazəsi fayl meneceri tərəfindən rədd edildi</string>
<string name="warning_database_already_opened">Məlumat bazası artıq açıqdır, yenisi açmaq üçün öncə onu bağlayın</string>
<string name="warning_empty_password">Şifrə qoruması olmadan davam edilsinmi?</string>
<string name="advanced_unlock_prompt_store_credential_message">Cihazın kilid açma funksiyasından istifadə etsəniz belə, kassanın əsas şəxsiyyət təyin etmə məlumatlarını yenə də xatırlamaq lazımdır.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Cihazın kilid açma funksiyası ilə məlumat bazasının şəxsiyyətini tədiq edən məlumatlarını əldə edin</string>
<string name="advanced_unlock_invalid_key">Cihazın kilid açma açarı oxunmadı. Zəhmət olmazsa, onu silin və kilid açma prossesini təkrarlayın.</string>
<string name="advanced_unlock_prompt_not_initialized">Cihaz kilid açma istəyini başlatmaq mümkün deyil.</string>
<string name="autofill_explanation_summary">Digər tətbiqlərdə formları (anket) daha sürətli doldurmaq üçün avtomatik doldurma funksiyasını aktiv edin</string>
<string name="autofill_select_entry">Şifrə seç .…</string>
<string name="set_autofill_service_title">Standart avtomatik doldurma xidmətini təyin edin</string>
<string name="autofill_preference_title">Avtomatik doldurmanın parametrləri</string>
<string name="password_size_title">Yaradılan şifrə həcmi</string>
<string name="password_size_summary">Yaradılan şifrələrin standart həcmini təyin edər</string>
<string name="list_password_generator_options_title">Şifrə hərfləri (simvolları)</string>
<string name="list_password_generator_options_summary">İcazə verilən şifrə yaratma hərflərini (simvollarını) təyin et</string>
<string name="database_opened">Məlumat bazasııldı</string>
<string name="lock">Kilid</string>
<string name="lock_database_screen_off_title">Ekran kilidi</string>
<string name="lock_database_screen_off_summary">Ekran söndükdən bir neçə saniyə sonra məlumat bazasının kilidləyin</string>
<string name="lock_database_back_root_title">Kilidləmək üçün \"Geri\" düyməsinə sıxın</string>
<string name="lock_database_back_root_summary">İstifadəçi kök ekranında geri düyməsinə klik etdikdə məlumat bazasını kilidlə</string>
<string name="lock_database_show_button_title">Kilid düyməsini göstərin</string>
<string name="lock_database_show_button_summary">İstifadəçi interfeysində kilid düyməsini göstərin</string>
<string name="content">Məzmun</string>
<string name="unlock">Kilidi aç</string>
<string name="advanced_unlock">Cihaz kilidini aç</string>
<string name="advanced_unlock_tap_delete">Cihaz kilid açma açarlarını silmək üçün toxunun</string>
<string name="temp_advanced_unlock_timeout_summary">Məzmununu silmədən öncə cihazın kilidini açma istifadə müddəti</string>
<string name="advanced_unlock_timeout">Cihaz kilidi açma taymout müddəti</string>
<string name="biometric_delete_all_key_summary">Cihaz kilid açma tanıması ilə bağlı bütün şifrəli açarları silin</string>
<string name="advanced_unlock_delete_all_key_warning">Cihaz kilid açma tanıması ilə bağlı bütün şifrəli açarlar silinsinmi?</string>
<string name="database_data_remove_unlinked_attachments_summary">Məlumat bazasında olan, lakin şifrəyə bağlı olmayan qoşmaları silin</string>
<string name="max_history_items_summary">Hər şifrə başına düşən keçmiş məlumatların (fayl) sayını limitləyin</string>
<string name="monospace_font_fields_enable_title">Sahə (bölmə) yazı tipi</string>
<string name="monospace_font_fields_enable_summary">Hərflərin (simvol) daha yaxşı görünməsi üçün sahələrdə (bölmə) istifadə olunan fontu dəyişdirin</string>
<string name="allow_copy_password_title">Mübadilə buferi güvəni</string>
<string name="clear_clipboard_notification_summary">Mübadilə buferinin istifadə müddəti bitdikdə və ya istifadə etməyə başladıqdan sonra bildiriş bağlandığında məlumat bazasını kilidləyin</string>
<string name="magic_keyboard_explanation_summary">Şifrə və bütün şəxsiyyət məlumatlarının daxil olduğu özəl klaviaturanı aktivləşdirin</string>
<string name="keyboard_selection_entry_summary">KeePassDX-də bir şifrəyə baxarkən, Magikeyboard-da həmin şifrəni göstər</string>
<string name="keyboard_save_search_info_summary">Gələcəkdə daha asan istifadələr üçün əl ilə şifrə seçimi edərkən paylaşılan məlumatları yadda saxlamağa çalışın</string>
<string name="keyboard_entry_timeout_summary">Klaviatura şifrəsini təmizləmək üçün taym-aut</string>
<string name="keyboard_auto_go_action_title">Avtomatik düymə funksiyası (hərəkəti)</string>
<string name="keyboard_auto_go_action_summary">\"Sahə\" düyməsinə basdıqdan sonra \"Get\" düyməsi funksiyası (hərəkəti)</string>
<string name="keyboard_previous_database_credentials_title">Məlumat bazasının şəxsiyyətini təsdiq edən məlumatların ekranı</string>
<string name="select_entry">Şifrə seç</string>
<string name="backspace">Backspace (geri silmə)</string>
<string name="enter">Enter (daxil et)</string>
<string name="autofill_close_database_title">Məlumat bazasını bağla</string>
<string name="autofill_close_database_summary">Avtomatik doldurma seçimindən sonra məlumat bazasını bağla</string>
<string name="autofill_save_search_info_summary">Gələcəkdə daha asan istifadələr üçün əllə şifrə seçimi edərkən axtarış məlumatlarını yadda saxlamağa çalış</string>
<string name="autofill_ask_to_save_data_title">Məlumatları yadda saxlamaq üçün sorğula</string>
<string name="autofill_ask_to_save_data_summary">Anket doldurma prossesi tamamlandığında məlumatları yadda saxlamaq üçün sorğula</string>
<string name="autofill_application_id_blocklist_title">Tətbiqin bloklama siyahısı</string>
<string name="autofill_application_id_blocklist_summary">Tətbiqlərin avtomatik olaraq doldurulmasını əngəlləyən bloklama siyahısı</string>
<string name="autofill_web_domain_blocklist_title">Veb domen bloklama siyahısı</string>
<string name="autofill_web_domain_blocklist_summary">Veb domenlərin avtomatik olaraq doldurulmasını əngəlləyən bloklama siyahısı</string>
<string name="autofill_block">Avtomatik doldurmanı blokla</string>
<string name="autofill_block_restart">Bloklamanı aktiv etmək üçün anketin daxil olduğu tətbiqi yenidən başladın.</string>
<string name="autofill_read_only_save">Yazma-qorumalı (dəyişməz) olaraq açılan məlumat bazasında yeni məlumatları yadda saxlamağa icazə verilmir.</string>
<string name="allow_no_password_summary">Əgər şəxsiyyəti təsdiq edən məlumatlar seçilməyibsə, \"Aç\" düyməsinin sıxılmasına icazə ver</string>
<string name="delete_entered_password_title">Şifrəni sil</string>
<string name="delete_entered_password_summary">Məlumat bazasına bağlantı cəhdindən sonra daxil edilmiş şifrəni sil</string>
<string name="enable_read_only_title">Yazma qorumalı</string>
<string name="enable_auto_save_database_summary">Hər önəmli prossesdən sonra məlumat bazasını yadda saxla (\"Modifikasiya edilə bilən\" modda keçərlidir)</string>
<string name="enable_keep_screen_on_title">Ekranııq saxla</string>
<string name="enable_keep_screen_on_summary">Şifrəyə baxarkən və ya redaktə edərkən ekranııq saxla</string>
<string name="keyboard_previous_database_credentials_summary">Məlumat bazası şəxsiyyətini təsdiq edən məlumatlar ekranında avtomatik olaraq əvvəlki klaviaturaya geri dön</string>
<string name="keyboard_previous_search_title">Axtarış ekranı</string>
<string name="keyboard_previous_search_summary">Axtarış ekranında avtomatik olaraq əvvəlki klaviaturaya geri dön</string>
<string name="keyboard_previous_fill_in_title">Geri dön</string>
<string name="keyboard_previous_fill_in_summary">\"Avtomatik funksiya düyməsi\" prossesi həyata keçirildikdən sonra avtomatik olaraq əvvəlki klaviaturaya geri dön</string>
<string name="education_validate_entry_title">Şifrəni doğrula</string>
<string name="education_validate_entry_summary">Şifrəni doğrulamağı və məlumat bazasını yadda saxlamağı unutmayın.\n\nƏgər avtomatik kilidləmə aktivləşərsə və dəyişiklik etdiyinizi unutsanız, məlumatlarınızı itirmə riskiniz olar.</string>
<string name="education_entry_new_field_summary">Əlavə bir sahəni (bölmə) qeydiyyata alın, bir dəyər əlavə edin və istəyə bağlı olaraq onu qoruyun.</string>
<string name="education_setup_OTP_summary">İki faktorlu doğrulama (2FA) üçün tələb olunan jetonu yaratmaq üçün bir dəfəlik şifrə menecerini (HOTP / TOTP) təyin edin.</string>
<string name="education_read_only_summary">Sessiya üçün açılış modunu dəyişin.\n\n\"Yazma qoruması\" funksiyası, məlumat bazasına istənilməyən dəyişikliklərin qarşısını alır.\n\"Modifikasiya edilə bilmə\" funksiyası, istədiyiniz kimi bütün elementləri əlavə etməyinizə, silmənizə və ya dəyişdirməyinizə icazə verir.</string>
<string name="education_lock_summary">Məlumat bazanızı cəld şəkildə kilidləyin, müəyyən müddət sonra və ekran söndükdə tətbiqin onu kilidləməsi üçün təyinatlandıra bilərsiniz.</string>
<string name="enable_screenshot_mode_title">Ekran görüntüsü modu</string>
<string name="enable_screenshot_mode_summary">Üçüncü tərəf tətbiqlərə bu tətbiqdə ekran görüntüsü qeyd etməyə və almağa icazə ver</string>
<string name="enable_education_screens_title">Təlim ipucları</string>
<string name="enable_education_screens_summary">Tətbiqin necə işlədiyini öyrənmək üçün elementləri önə çıxarın</string>
<string name="reset_education_screens_title">Təlim ipuclarını sıfırla</string>
<string name="education_create_database_title">Məlumat bazası faylınızı yaradın</string>
<string name="education_create_database_summary">İlk şifrə meneceri faylınızı yaradın.</string>
<string name="education_select_database_title">Mövcud məlumat bazasınıın</string>
<string name="education_select_database_summary">İstifadəyə davam etmək üçün fayl brauzerinizdən əvvəlki məlumat bazası faylınıın.</string>
<string name="education_new_node_summary">Şifrələr rəqəmsal şəxsiyyəti təsdiq edən məlumatları idarə etməyinizə kömək edir.\n\nQruplar (~qovluqlar) məlumat bazasındakı şifrələri düzəltdir.</string>
<string name="education_search_title">Şifrələrdə axtarış edin</string>
<string name="education_advanced_unlock_title">Cihaz maəlumat bazası kilidini açma</string>
<string name="education_advanced_unlock_summary">Məlumat bazanızı daha sürətli açmaq üçün şifrənizi skan edilmiş biometriya və ya cihaz şəxsiyyəti təsdiq edən məlumatlarla əlaqələndirin.</string>
<string name="education_entry_edit_summary">Şifrəyə özəl sahələrlə (bölmə) düzəliş edin. Ümumi məlumatlara müxtəlif şifrə sahələri arasında istinad edilə bilər.</string>
<string name="education_sort_title">Məlumatları (fayl) sıralayın</string>
<string name="education_sort_summary">Şifrə və qrupların necə sıralandığını seçin.</string>
<string name="education_donation_title">İştirak et</string>
<string name="education_donation_summary">Stabilliyin, təhlükəsizliyin artırılmasına və daha çox funksiyaların əlavə edilməsinə yardım edin.</string>
<string name="html_text_buy_pro">Pro versiyasını alaraq, bu &lt;strong&gt;görünüş stilindən&lt;/strong&gt;istifadə edə və xüsusilə &lt;strong&gt;ictimai layihələrinin həyata keçirilməsinə yardım etmiş olacaqsınız.&lt;/strong&gt;</string>
<string name="html_text_dev_feature_buy_pro">&lt;strong&gt;Pro&lt;/strong&gt;versiyasını alaraq,</string>
<string name="html_text_dev_feature_contibute">&lt;strong&gt;Yardım göstərərək&lt;/strong&gt;,</string>
<string name="html_text_dev_feature_thanks">Yardım etdiyiniz üçün çox sağ olun.</string>
<string name="html_text_dev_feature_work_hard">Bu funksiyası tezliklə yayımlamaq üçün çox çaıırıq.</string>
<string name="html_text_dev_feature_upgrade">Yeni versiyaları quraşdıraraq tətbiqi yeni saxlamağı unutmayın.</string>
<string name="download">Yüklə</string>
<string name="download_attachment">Yüklə%1$s</string>
<string name="upload_attachment">%1$sYüklə</string>
<string name="download_initialization">Başladılır …</string>
<string name="download_progression">Davam edir:%1$d%%</string>
<string name="download_finalization">Yekunlaşdırılır…</string>
<string name="download_complete">Bitdi!</string>
<string name="download_canceled">Ləğv edildi!</string>
<string name="unit_byte">B</string>
<string name="entropy">Entropiya:%1$s bit</string>
<string name="entropy_high">Entropiya: Yüksək</string>
<string name="entropy_calculate">Entropiya: Hesabla …</string>
<string name="at_least_one_char">Hər birindən ən az bir hərf (simvol)</string>
<string name="exclude_ambiguous_chars">Qeyri-müəyyən hərfləri (simvolları) istisna et</string>
<string name="consider_chars_filter">Hərfləri (simvolları) nəzərə al</string>
<string name="word_separator">Ayırıcı</string>
<string name="ignore_chars_filter">Hərfləri (simvolları) nəzərə alma</string>
<string name="lower_case">kiçik hərf</string>
<string name="upper_case">BÖYÜK HƏRF</string>
<string name="title_case">İlk hərflər böyük</string>
<string name="character_count">Hərf (simvol) sayı:%1$d</string>
<string name="screenshot_mode_banner_text">Ekran görüntüsü modu</string>
<string name="style_choose_title">Tətbiq teması</string>
<string name="style_choose_summary">Tətbiqdə istifadə olunan tema</string>
<string name="style_name_forest">Meşə</string>
<string name="style_name_divine">Müqəddəs</string>
<string name="style_name_classic">Klassik</string>
<string name="style_name_moon">Ay</string>
<string name="style_name_sun">Günəş</string>
<string name="style_name_reply">Cavab ver</string>
<string name="style_name_kunzite">Kunzit</string>
<string name="style_name_follow_system">Sistemi izle</string>
<string name="style_brightness_title">Tema parlaqlığı</string>
<string name="style_brightness_summary">ıq və ya tünd temaları seç</string>
<string name="style_name_light">ıq</string>
<string name="style_name_dark">Tünd</string>
<string name="icon_section_standard">Standart</string>
<string name="icon_section_custom">Özəl</string>
<string name="icon_pack_choose_title">İkona paketi</string>
<string name="icon_pack_choose_summary">Tətbiqdə istifadı edilən ikona paketi</string>
<string name="show_entry_colors_title">Şifrə rəngləri</string>
<string name="show_entry_colors_summary">Şifrələr üçün ön və arxa plan rənglərini göstərir</string>
<string name="hide_expired_entries_title">İstifadə müddəti bitən, istifadə olunmayan şifrələri gizlət</string>
<string name="hide_expired_entries_summary">İstifadə müddəti bitən şifrələr göstərilmir</string>
<string name="keyboard_previous_lock_summary">Məlumat bazasını kilidlədikdən sonra avtomatik olaraq əvvəlki klaviaturaya geri dön</string>
<string name="custom_fields">Özəl sahələr (bölmə)</string>
<string name="back_to_previous_keyboard">Əvvəlki klaviaturaya geri dön</string>
</resources>

View File

@@ -27,7 +27,7 @@
<string name="menu_showpass">Prikaži lozinku</string>
<string name="menu_search">Traži</string>
<string name="menu_open">Otvori</string>
<string name="menu_save_database">Sačuvaj bazu podataka</string>
<string name="menu_save_database">Sačuvaj podatake</string>
<string name="menu_lock">Zaključaj bazu podataka</string>
<string name="menu_hide_password">Sakrij lozinku</string>
<string name="menu_cancel">Otkaži</string>
@@ -74,7 +74,7 @@
<string name="file_not_found_content">Nije moguće pronaći datoteku. Pokušajte ponovo da je otvorite iz svog pregledača datoteka.</string>
<string name="field_value">Vrednost polja</string>
<string name="field_name">Naziv polja</string>
<string name="error_registration_read_only">Čuvanje nove stavke nije dozvoljeno u bazi podataka koja je samo za čitanje</string>
<string name="error_registration_read_only">Čuvanje nove stavke nije dozvoljeno u bazi podataka koja je samo za čitanje.</string>
<string name="error_string_type">Ovaj tekst se ne podudara sa traženom stavkom.</string>
<string name="error_otp_period">Broj sekundi perioda mora biti u opsegu od %1$d do %2$d.</string>
<string name="error_otp_digits">Broj cifara tokena mora biti u opsegu od %1$d do %2$d.</string>
@@ -100,7 +100,7 @@
<string name="error_invalid_OTP">Nevažeća OTP tajna.</string>
<string name="error_invalid_path">Proverite da li je putanja ispravna.</string>
<string name="error_invalid_db">Nije moguće pročitati bazu podataka.</string>
<string name="error_file_not_create">Nije moguće kreirati datoteku</string>
<string name="error_file_not_create">Nije moguće kreirati datoteku.</string>
<string name="error_can_not_handle_uri">Nije moguće obraditi ovaj URI u keePassDX-u.</string>
<string name="error_arc4">Archfour šifrovanje nije podržano.</string>
<string name="entry_user_name">Korisničko ime</string>
@@ -224,12 +224,12 @@
<string name="html_about_contribution">Kako bismo &lt;strong&gt;zadržali našu slobodu&lt;/strong&gt;, &lt;strong&gt;ispravljali greške&lt;/strong&gt;, &lt;strong&gt;dodavali nove opcije&lt;/strong&gt; i &lt;strong&gt;uvek bili aktivni&lt;/strong&gt;, računamo na Vaš &lt;strong&gt;doprinos&lt;/strong&gt;.</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft je &lt;strong&gt;otvorenog koda&lt;/strong&gt; i &lt;strong&gt;ne sadrži reklame&lt;/strong&gt;.
\nPonuđen je onakav kakav jeste, pod &lt;strong&gt;GPLv3&lt;/strong&gt; licencom, bez ikakvih garancija.</string>
<string name="digits">Cifre</string>
<string name="digits">Znamenke</string>
<string name="default_checkbox">Koristi kao podrazumevanu bazu podataka</string>
<string name="decrypting_db">Dešifrovanje sadržaja baze podataka…</string>
<string name="database">Baza podataka</string>
<string name="retrieving_db_key">Dohvatanje ključa baze podataka…</string>
<string name="select_to_copy">Izabarite kako bi ste kopirali %1$s u međuspremnik</string>
<string name="select_to_copy">Izaberite kako bi ste kopirali %1$s u međuspremnik</string>
<string name="content_description_keyboard_close_fields">Zatvori polja</string>
<string name="content_description_remove_from_list">Obriši</string>
<string name="content_description_update_from_list">Ažuriraj</string>
@@ -256,10 +256,161 @@
<string name="clipboard_timeout">Vreme isteka međuspremnika</string>
<string name="clipboard_error_clear">Nije moguće očistiti međuspremnik</string>
<string name="clipboard_error">Neki uređaji neće dozvoliti aplikacijama da koriste međuspremnik.</string>
<string name="clipboard_cleared">Međuspremnik je očišćena</string>
<string name="clipboard_cleared">Međuspremnik je očišćen</string>
<string name="clipboard_error_title">Greška međuspremnika</string>
<string name="allow">Dozvoli</string>
<string name="edit_entry">Izmeni stavku</string>
<string name="add_entry">Dodaj stavku</string>
<string name="contact">Kontakt</string>
<string name="biometric_security_update_required">Neophodno je ažurirati biometriju.</string>
<string name="configure">Podesi</string>
<string name="content_description_passphrase_word_count">Broj reči pristupne fraze</string>
<string name="passphrase">Dugačka lozinka</string>
<string name="filter">Filtar</string>
<string name="content_description_hardware_key_checkbox">Polje za potvrdu hardverskog ključa</string>
<string name="content_description_entry_background_color">Boja pozadine unosa</string>
<string name="name">Ime</string>
<string name="error_rebuild_list">Nije moguće pravilno obnoviti listu.</string>
<string name="auto_focus_search_title">Brza pretraga</string>
<string name="protection">Zaštita</string>
<string name="import_app_properties_summary">Izaberite datoteku za uvoz podešavanja aplikacije</string>
<string name="rounds">Transformacioni krugovi</string>
<string name="content_description_database_color">Boja baze podataka</string>
<string name="content_description_entry_foreground_color">Ulazna boja prednjeg plana</string>
<string name="debit_credit_card">Debitna/kreditna kartica</string>
<string name="place_of_issue">Mjesto izdavanja</string>
<string name="date_of_issue">Datum izdavanja</string>
<string name="email">Email</string>
<string name="email_address">Adresa e-pošte</string>
<string name="type">Vrsta</string>
<string name="cryptocurrency">Novčanik za kriptovalute</string>
<string name="token">Token</string>
<string name="public_key">Javni ključ</string>
<string name="private_key">Privatni ključ</string>
<string name="seed">Tajna fraza</string>
<string name="account">Račun</string>
<string name="bank_identifier_code">SVIFT / BIC</string>
<string name="membership">Članstvo</string>
<string name="error_otp_type">Ovaj obrazac ne prepoznaje postojeći tip OTP-a, njegova validacija možda više neće ispravno generisati token.</string>
<string name="error_start_database_action">Došlo je do greške pri izvođenju radnje u bazi podataka.</string>
<string name="menu_reload_database">Поново учитај податке</string>
<string name="no_url_handler">Instalirajte veb pregledač da biste otvorili ovu URL adresu.</string>
<string name="select_database_file">Otvorite postojeći trezor</string>
<string name="remember_database_locations_summary">Prati gde se čuvaju baze podataka</string>
<string name="hide_broken_locations_summary">Sakrijte pokvarene veze na listi nedavnih baza podataka</string>
<string name="content_description_otp_information">Informacije o jednokratnoj lozinci</string>
<string name="error_upload_file">Došlo je do greške pri otpremanju podataka datoteke.</string>
<string name="hint_icon_name">Ime ikone</string>
<string name="no_results">Nema rezultata pretrage</string>
<string name="memory_usage">Korišćenje memorije</string>
<string name="show_recent_files_title">Prikaži nedavne datoteke</string>
<string name="show_uuid_title">Prikaži UUID</string>
<string name="html_about_privacy">&lt;strong&gt;Ne preuzimaju se nikakvi korisnički podaci&lt;/strong&gt;, ova aplikacija se ne povezuje ni na jedan server, radi samo lokalno i u potpunosti poštuje privatnost korisnika.</string>
<string name="expired">Isteklo</string>
<string name="hardware_key">Hardverski ključ</string>
<string name="bank">Banka</string>
<string name="bank_name">Ime banke</string>
<string name="version">Verzija</string>
<string name="error_remove_file">Došlo je do greške pri uklanjanju podataka iz datoteke.</string>
<string name="error_challenge_already_requested">Izazov je već zahtevan.</string>
<string name="error_hardware_key_unsupported">Hardverski ključ nije podržan.</string>
<string name="error_empty_key">Ključ ne može biti prazan.</string>
<string name="colorize_password_summary">Obojite znakove lozinke po tipu</string>
<string name="show_otp_token_title">Prikaži OTP token</string>
<string name="show_uuid_summary">Prikazuje UUID povezan sa unosom ili grupom</string>
<string name="menu_merge_from">Sjedini iz …</string>
<string name="progress_title">Rad u toku …</string>
<string name="export_app_properties_summary">Napravite datoteku za izvoz podešavanja aplikacije</string>
<string name="success_export_app_properties">Podešavanja aplikacije su izvezena</string>
<string name="root">Koren</string>
<string name="rounds_explanation">Dodatne runde šifrovanja pružaju veću zaštitu od napada grube sile, ali zaista mogu usporiti učitavanje i čuvanje.</string>
<string name="memory_usage_explanation">Količina memorije koju će koristiti funkcija izvođenja ključa.</string>
<string name="space">Razmak</string>
<string name="error_unable_merge_database_kdb">Nije moguće spojiti sa kdb datotekom baze podataka.</string>
<string name="error_location_unknown">Lokacija baze podataka je nepoznata, radnja baze podataka se ne može izvršiti.</string>
<string name="corrupted_file">Oštećena datoteka.</string>
<string name="colorize_password_title">Obojite lozinke</string>
<string name="show_otp_token_summary">Prikazuje OTP tokene na listi unosa</string>
<string name="error_field_name_already_exists">Ime polja već postoji.</string>
<string name="menu_merge_database">Objedini podatke</string>
<string name="menu_keystore_remove_key">Izbrišite ključ za otključavanje uređaja</string>
<string name="subdomain_search_summary">Pretražujte veb domene sa ograničenjima poddomena</string>
<string name="export_app_properties_title">Izvezite podešavanja aplikacije</string>
<string name="registration_mode">Režim registracije</string>
<string name="remember_database_locations_title">Zapamtite lokacije baza podataka</string>
<string name="remember_hardware_key_title">Zapamtite hardverske ključeve</string>
<string name="remember_hardware_key_summary">Vodi evidenciju o korišćenim hardverskim ključevima</string>
<string name="error_import_app_properties">Greška tokom uvoza podešavanja aplikacije.</string>
<string name="hide_broken_locations_title">Sakrij neispravne veze baze podataka</string>
<string name="import_app_properties_title">Uvezite podešavanja aplikacije</string>
<string name="description_app_properties">KeePassDX svojstva za upravljanje podešavanjima aplikacije</string>
<string name="show_recent_files_summary">Prikaži lokacije nedavnih baza podataka</string>
<string name="success_import_app_properties">Podešavanja aplikacije su uvezena</string>
<string name="kdf_explanation">Da bi se generisao ključ za algoritam šifrovanja, glavni ključ se transformiše korišćenjem nasumično slane funkcije izvođenja ključa.</string>
<string name="do_not_kill_app">Ne ubijajte aplikaciju…</string>
<string name="encryption_explanation">Algoritam šifrovanja baze podataka koji se koristi za sve podatke</string>
<string name="command_execution">Izvršavanje komande…</string>
<string name="content_description_nav_header">Zaglavlje za navigaciju</string>
<string name="navigation_drawer_open">Ploča navigacije otvorena</string>
<string name="navigation_drawer_close">Ploča navigacije zatvorena</string>
<string name="searchable">Pretraživo</string>
<string name="inherited">Nasledi</string>
<string name="auto_type_sequence">Automatska sekvenca unosa</string>
<string name="tags">Oznake</string>
<string name="custom_data">Prilagođeni podaci</string>
<string name="search_filters">Filteri za pretragu</string>
<string name="current_group">Trenutna grupa</string>
<string name="case_sensitive">Osetljivo na velika i mala slova</string>
<string name="personal_identification_number">PIN</string>
<string name="international_bank_account_number">IBAN</string>
<string name="secure_note">Sigurna beleška</string>
<string name="error_database_uri_null">URI baze podataka se ne može preuzeti.</string>
<string name="read_only_warning">U zavisnosti od vašeg menadžera datoteka, KeePassDX možda neće dozvoliti da upisuje u vašu memoriju.</string>
<string name="sort_menu">Sortiraj</string>
<string name="auto_type">Automatski unos</string>
<string name="save_mode">Režim čuvanja</string>
<string name="info">Informacije</string>
<string name="waiting_challenge_request">Čeka se zahtev za izazov…</string>
<string name="waiting_challenge_response">Čeka se odgovor na izazov…</string>
<string name="template_group_name">Predlošci</string>
<string name="regex">Regularni izraz</string>
<string name="holder">Vlasnik</string>
<string name="number">Broj</string>
<string name="error_word_reserved">Ova reč je rezervisana i ne može se koristiti.</string>
<string name="card_verification_value">CVV</string>
<string name="id_card">Lična karta</string>
<string name="wireless">Vi-Fi</string>
<string name="ssid">SSID</string>
<string name="standard">Standardno</string>
<string name="template">Šablon</string>
<string name="error_no_hardware_key">Izaberite hardverski ključ.</string>
<string name="error_XML_malformed">XML je pogrešno oblikovan.</string>
<string name="error_move_group_here">Ovde ne možete premestiti grupu.</string>
<string name="error_file_to_big">Datoteka koju pokušavate da otpremite je prevelika.</string>
<string name="error_duplicate_file">Podaci o fajlu već postoje.</string>
<string name="error_response_already_provided">Odgovor je već dat.</string>
<string name="error_no_response_from_challenge">Nije moguće dobiti odgovor na izazov.</string>
<string name="error_cancel_by_user">Korisnik je otkazao.</string>
<string name="error_driver_required">Potreban je drajver za %1$s.</string>
<string name="menu_app_settings_summary">Pretraga, zaključavanje, istorija, svojstva</string>
<string name="menu_form_filling_settings_summary">Tastatura, automatsko popunjavanje, klipbord</string>
<string name="menu_advanced_unlock_settings_summary">Biometrija, akreditiv uređaja</string>
<string name="menu_database_settings_summary">Metapodaci, korpa za otpatke, šabloni, istorija</string>
<string name="menu_security_settings_summary">Šifrovanje, funkcija izvođenja ključa</string>
<string name="master_key_settings_summary">Promena, obnova</string>
<string name="menu_save_copy_to">Sačuvajte kopiju u…</string>
<string name="menu_external_icon">Vanjska ikona</string>
<string name="create_keepass_file">Napravite novi trezor</string>
<string name="auto_focus_search_summary">Zatražite pretragu prilikom otvaranja baze podataka</string>
<string name="subdomain_search_title">Pretraga poddomena</string>
<string name="progress_create">Pravljenje nove baze podataka…</string>
<string name="read_only">Zaštićeno od pisanja</string>
<string name="error_export_app_properties">Greška tokom izvoza podešavanja aplikacije.</string>
<string name="contains_duplicate_uuid">Baza podataka sadrži duplirane UUID-ove.</string>
<string name="contains_duplicate_uuid_procedure">Rešiti problem generisanjem novih UUID-ova za nastavak duplikata?</string>
<string name="search_mode">Režim pretrage</string>
<string name="selection_mode">Režim izbora</string>
<string name="parallelism">Paralelizam</string>
<string name="parallelism_explanation">Stepen paralelizma (tj. broj niti) koji koristi funkcija izvođenja ključa.</string>
<string name="saving_database">Čuvanje baze podataka…</string>
</resources>

View File

@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="accept">接受</string>
<string name="add_entry">新增項目</string>
<string name="edit_entry">編輯項目</string>
<string name="add_group">新增群組</string>
<string name="master_key">主密鑰</string>
<string name="security">安全</string>
<string name="encryption">加密</string>
<string name="encryption_algorithm">加密演算法</string>
<string name="key_derivation_function">密鑰推算函數</string>
<string name="app_timeout">超時</string>
<string name="application">應用程式</string>
<string name="brackets">括弧</string>
<string name="extended_ASCII">延伸ASCII</string>
<string name="allow">允許</string>
<string name="clipboard_error_title">剪貼簿錯誤</string>
<string name="clipboard_error">有啲設備唔容許其他應用程式用剪貼簿。</string>
<string name="clipboard_cleared">清除咗剪貼簿</string>
<string name="app_timeout_summary">鎖定資料庫前嘅閒置時間</string>
<string name="clipboard_error_clear">清除唔到剪貼簿</string>
<string name="clipboard_timeout">剪貼簿超時</string>
<string name="clipboard_timeout_summary">剪貼簿保留時間(如果裝置支持)</string>
<string name="content_description_background">背景</string>
<string name="content_description_open_file">開啟檔案</string>
<string name="content_description_node_children">子節點</string>
<string name="content_description_add_node">新增節點</string>
<string name="content_description_add_entry">新增項目</string>
<string name="content_description_add_group">新增群組</string>
<string name="content_description_add_item">新增項目</string>
<string name="content_description_credentials_information">憑證資訊</string>
<string name="content_description_otp_information">一次性密碼(OTP)訊息</string>
<string name="content_description_password_checkbox">密碼核取方塊</string>
<string name="content_description_keyfile_checkbox">密鑰檔案核取方塊</string>
<string name="content_description_hardware_key_checkbox">硬件密鑰方塊</string>
<string name="content_description_repeat_toggle_password_visibility">重複切換密碼能見度</string>
<string name="content_description_entry_icon">項目圖示</string>
<string name="content_description_entry_foreground_color">項目前景顏色</string>
<string name="content_description_entry_background_color">項目背景顏色</string>
<string name="content_description_nav_header">導覽</string>
<string name="validate">驗證</string>
<string name="discard_changes">放棄更改?</string>
<string name="entry_password_generator">密碼產生器</string>
<string name="content_description_password_length">密碼長度</string>
<string name="content_description_passphrase_word_count">密碼短句字數</string>
<string name="entry_add_field">新增欄位</string>
<string name="entry_add_attachment">新增附件</string>
<string name="content_description_remove_field">刪除欄位</string>
<string name="content_description_update_from_list">更新</string>
<string name="content_description_keyboard_close_fields">關閉欄位</string>
<string name="discard">放棄</string>
<string name="select_to_copy">複製%1$s去剪貼簿</string>
<string name="default_checkbox">用作預設資料庫</string>
<string name="digits">數字</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft呢個係&lt;strong&gt;冇廣告&lt;/strong&gt;&lt;strong&gt;開源&lt;/strong&gt;軟件。 \n你可以喺遵循&lt;strong&gt;GPL 3&lt;/strong&gt;或者更高版本嘅情況下重新發佈而Kunzisoft對此不帶有任何擔保。</string>
<string name="html_about_privacy">&lt;strong&gt;唔收集用戶資料。&lt;/strong&gt;,呢個應用程式唔會連接任何伺服器,只會喺裝置上運作,完全尊重用戶私穩。</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="entry_confpassword">確認密碼</string>
<string name="entry_expires">失效時間</string>
<string name="expired">過期</string>
<string name="entry_UUID">UUID</string>
<string name="entry_attachments">附件</string>
<string name="entry_keyfile">密鑰檔案</string>
<string name="hardware_key">硬件密鑰</string>
<string name="entry_modified">修改時間</string>
<string name="entry_created">建立時間</string>
<string name="inherited">繼承</string>
<string name="auto_type">自動填入</string>
<string name="entry_not_found">找不到項目資料。</string>
<string name="entry_password">密碼</string>
<string name="tags">標籤</string>
<string name="custom_data">自定義數據</string>
<string name="save">儲存</string>
<string name="entry_title">名稱</string>
<string name="entry_setup_otp">設定一次性密碼(OTP)</string>
<string name="otp_secret">OTP密鑰</string>
<string name="otp_period">間隔(秒)</string>
<string name="search_filters">搜尋過濾器</string>
<string name="otp_algorithm">演算法</string>
<string name="current_group">目前組别</string>
<string name="case_sensitive">區分大小寫</string>
<string name="regex">正則表達式</string>
<string name="debit_credit_card">扣賬卡 / 信用卡</string>
<string name="holder">持卡人</string>
<string name="email_address">電郵地址</string>
<string name="wireless">Wi-Fi</string>
<string name="standard">標準</string>
<string name="version">版本</string>
<string name="entry_otp">OTP</string>
<string name="error_arc4">唔支援Arcfour stream密碼。</string>
<string name="error_can_not_handle_uri">KeePassDX 處理唔到呢個網址。</string>
<string name="error_file_not_create">新增唔到檔案。</string>
<string name="error_invalid_db">讀取唔到資料庫。</string>
<string name="error_invalid_path">請確保路徑正確。</string>
<string name="error_invalid_OTP">無效 OTP 密鑰。</string>
<string name="error_no_name">請輸入用戶名。</string>
<string name="contact">聯絡方法</string>
<string name="info">資訊</string>
<string name="contribution">貢獻</string>
<string name="homepage">首頁</string>
<string name="feedback">反映意見</string>
<string name="about_description">相容KeePass密碼管理軟件嘅Android App</string>
<string name="file_manager_install_description">檔案總管要支援 ACTION_CREATE_DOCUMENT 和 ACTION_OPEN_DOCUMENT 的 intent先可以建立、開啟同儲存資料庫檔案。</string>
<string name="content_description_file_information">檔案資訊</string>
<string name="content_description_database_color">資料庫顔色</string>
<string name="content_description_remove_from_list">移除</string>
<string name="template_group_name">範本</string>
<string name="retrieving_db_key">攞緊資料庫密鑰……</string>
<string name="waiting_challenge_response">等緊Challenge回應……</string>
<string name="waiting_challenge_request">等緊Challenge請求……</string>
<string name="decrypting_db">解密緊資料庫內容……</string>
<string name="database">資料庫</string>
<string name="entry_accessed">存取時間</string>
<string name="entry_cancel">取消</string>
<string name="entry_notes">備註</string>
<string name="otp_type">OTP 類型</string>
<string name="otp_counter">計數器</string>
<string name="number">卡號</string>
<string name="otp_digits">數位</string>
<string name="card_verification_value">安全碼(CVV)</string>
<string name="personal_identification_number">PIN 碼</string>
<string name="id_card">身份證</string>
<string name="name">姓名</string>
<string name="place_of_issue">發行地</string>
<string name="date_of_issue">發行日期</string>
<string name="email">電郵</string>
<string name="ssid">SSID</string>
<string name="public_key">公鑰</string>
<string name="type">類型</string>
<string name="cryptocurrency">加密貨幣錢包</string>
<string name="token">Token</string>
<string name="bank">銀行</string>
<string name="international_bank_account_number">IBAN</string>
<string name="membership">會籍</string>
<string name="private_key">私鑰</string>
<string name="seed">種子</string>
<string name="bank_identifier_code">SWIFT / BIC</string>
<string name="account">帳戶</string>
<string name="bank_name">銀行名稱</string>
<string name="entry_url">網址</string>
<string name="entry_user_name">用戶名</string>
</resources>

View File

@@ -4,10 +4,10 @@
<string name="encryption_algorithm">Алгоритъм за шифроване</string>
<string name="encryption">Шифроване</string>
<string name="security">Сигурност</string>
<string name="master_key">Главен ключ</string>
<string name="master_key">Главна парола</string>
<string name="add_group">Нова група</string>
<string name="edit_entry">Редактиране на запис</string>
<string name="add_entry">Добавяне на запис</string>
<string name="add_entry">Нов запис</string>
<string name="accept">Приемане</string>
<string name="biometric_delete_all_key_title">Изтриване на шифроващите ключове</string>
<string name="digits">Цифри</string>
@@ -22,67 +22,667 @@
<string name="clipboard_timeout_summary">Продължителност на съхранение в клипборда (ако се поддържа от вашето устройство)</string>
<string name="clipboard_error">Някои устройства не позволяват на приложенията да използват клипборда.</string>
<string name="entry_title">Заглавие</string>
<string name="about_description">Android версия на мениджъра на пароли KeePass</string>
<string name="save">Запази</string>
<string name="entry_confpassword">Потвърди парола</string>
<string name="key_derivation_function">Функция за генериране на ключа</string>
<string name="content_description_open_file">Отвори файл</string>
<string name="about_description">Версия за Андроид на приложението за управление на пароли KeePass</string>
<string name="save">Запазване</string>
<string name="entry_confpassword">Потвърждаване на парола</string>
<string name="key_derivation_function">Функция за извличане на ключ</string>
<string name="content_description_open_file">Отваряне на файл</string>
<string name="entry_cancel">Отказ</string>
<string name="custom_data">Персонализирани данни</string>
<string name="tags">Тагове</string>
<string name="clipboard_explanation_summary">Копирайте полетата за въвеждане, като използвате клипборда на вашето устройство</string>
<string name="otp_type">Тип OTP</string>
<string name="entry_url">Линк</string>
<string name="custom_data">Потребителски данни</string>
<string name="tags">Етикети</string>
<string name="clipboard_explanation_summary">Копиране на полета за въвеждане посредством междинната памет на устройството</string>
<string name="otp_type">Вид на OTP</string>
<string name="entry_url">Адрес в интернет</string>
<string name="contribution">Участие</string>
<string name="entry_UUID">UUID</string>
<string name="entry_UUID">Идентификатор</string>
<string name="entry_history">История</string>
<string name="copy_field">Копие на %1$s</string>
<string name="copy_field">Копирано: %1$s</string>
<string name="clipboard_error_title">Грешка в клипборда</string>
<string name="file_manager_install_description">За създаване, отваряне и запазване на файлове на базата данни е необходим файлов мениджър, който приема действието ACTION_CREATE_DOCUMENT и ACTION_OPEN_DOCUMENT.</string>
<string name="content_description_add_entry">Добави запис</string>
<string name="file_manager_install_description">За създаване, отваряне и запазване на файлове на хранилищата е необходимо приложение за управление на файлове, което приема действието ACTION_CREATE_DOCUMENT и ACTION_OPEN_DOCUMENT.</string>
<string name="content_description_add_entry">Нов запис</string>
<string name="clipboard_timeout">Време за изчакване на клипборда</string>
<string name="expired">Изтекъл</string>
<string name="expired">Изтекла давност</string>
<string name="entry_password">Парола</string>
<string name="retrieving_db_key">Ключът на базата данни се извлича</string>
<string name="entry_accessed">Достъп</string>
<string name="retrieving_db_key">Получаване на ключа на хранилището</string>
<string name="entry_accessed">Достъпен</string>
<string name="entry_created">Създаден</string>
<string name="entry_user_name">Потребителско име</string>
<string name="entry_user_name">Потребител</string>
<string name="content_description_background">Фон</string>
<string name="clipboard_error_clear">Не може да се изчисти клипборда</string>
<string name="entry_expires">Изтича</string>
<string name="entry_expires">Изтичаща давност</string>
<string name="entry_attachments">Прикачени файлове</string>
<string name="otp_period">Период (секунди)</string>
<string name="app_timeout_summary">Период на бездействие, след който базата се заключва</string>
<string name="app_timeout_summary">Време без активност преди заключване на хранилището</string>
<string name="otp_digits">Цифри</string>
<string name="extended_ASCII">Разширен ASCII</string>
<string name="extended_ASCII">Разширен набор от ASCII</string>
<string name="entry_otp">OTP</string>
<string name="entry_notes">Бележки</string>
<string name="entry_notes">Бележка</string>
<string name="otp_counter">Брояч</string>
<string name="allow">Позволи</string>
<string name="allow_copy_password_warning">Внимание: Клипбордът се споделя от всички приложения. Ако се копират чувствителни данни, друг софтуер може да ги възстанови.</string>
<string name="allow">Разрешаване</string>
<string name="allow_copy_password_warning">Внимание: Междинната памет се споделя от всички приложения. Ако бъде копирана чувствителна информация, друго приложение може да ги използва.</string>
<string name="entry_modified">Променен</string>
<string name="select_to_copy">Изберете, за да копирате %1$s в клипборда</string>
<string name="otp_secret">Таен ключ</string>
<string name="homepage">Уебсайт</string>
<string name="loading_database">Базата данни се зарежда</string>
<string name="loading_database">Зареждане на хранилището</string>
<string name="password">Парола</string>
<string name="remember_hardware_key_title">Запомни хардуерните ключове</string>
<string name="decrypting_db">Съдържанието на базата данни се декриптира</string>
<string name="unlock">Отключи</string>
<string name="unavailable_feature_hardware">Не може да се намери съответният хардуер.</string>
<string name="remember_hardware_key_title">Запомняне на хардуерните ключове</string>
<string name="decrypting_db">Разшифроване на хранилището</string>
<string name="unlock">Отключване</string>
<string name="unavailable_feature_hardware">Необходимият хардуер не може да бъде намерен.</string>
<string name="hardware_key">Хардуерен ключ</string>
<string name="hide_password_summary">Маскира паролите (***) по подразбиране</string>
<string name="select_database_file">Отвори съществуваща база данни</string>
<string name="content_description_hardware_key_checkbox">Хардуерен ключ отметка</string>
<string name="hide_password_summary">Скриване на паролите (***) по подразбиране</string>
<string name="select_database_file">Отключване на хранилище</string>
<string name="content_description_hardware_key_checkbox">Отметка на поле с хардуерен ключ</string>
<string name="hide_password_title">Скриване на пароли</string>
<string name="hint_pass">Парола</string>
<string name="education_select_database_title">Отвори съществуваща база данни</string>
<string name="content_description_keyfile_checkbox">Файл с ключ отметка</string>
<string name="education_select_database_title">Отворете съществуващо хранилище</string>
<string name="content_description_keyfile_checkbox">Отметка на поле за файл с ключ</string>
<string name="error_hardware_key_unsupported">Хардуерният ключ не се поддържа.</string>
<string name="remember_hardware_key_summary">Пази запис на използваните хардуерни ключове</string>
<string name="error_nokeyfile">Избери файл с ключ.</string>
<string name="remember_hardware_key_summary">Запомняне на използваните хардуерни ключове</string>
<string name="error_nokeyfile">Избиране на файл с ключ.</string>
<string name="entry_keyfile">Файл с ключ</string>
<string name="error_no_hardware_key">Избери хардуерен ключ.</string>
<string name="advanced_unlock_prompt_store_credential_message">Ще трябва да запомните основните си идентификационни данни на базата данни, дори като използвате разпознаване на отключването на устройството.</string>
<string name="create_keepass_file">Създай нова база данни</string>
<string name="error_no_hardware_key">Изберете хардуерен ключ.</string>
<string name="advanced_unlock_prompt_store_credential_message">Въпреки че използвате разпознаване на отключването на устройството ще трябва да запомните главната парола на хранилището.</string>
<string name="create_keepass_file">Ново хранилище</string>
<string name="recycle_bin">Кошче</string>
<string name="default_checkbox">Използване като хранилище по подразбиране</string>
<string name="otp_algorithm">Алгоритъм</string>
<string name="email">Ел. поща</string>
<string name="email_address">Адрес на ел. поща</string>
<string name="personal_identification_number">ПИН</string>
<string name="database">Хранилище</string>
<string name="menu_lock">Заключване на хранилището</string>
<string name="content_description_password_length">Дължина на паролата</string>
<string name="content_description_remove_from_list">Премахване</string>
<string name="content_description_update_from_list">Обновяване</string>
<string name="entry_password_generator">Създаване на парола</string>
<string name="version">Издание</string>
<string name="settings">Настройки</string>
<string name="creating_database">Създаване на хранилището…</string>
<string name="lock">Заключване</string>
<string name="keyboard">Клавиатура</string>
<string name="keyboard_keys_category">Ключове</string>
<string name="number">Номер</string>
<string name="name">Име</string>
<string name="public_key">Публичен ключ</string>
<string name="private_key">Частен ключ</string>
<string name="menu_database_settings">Настройки на хранилището</string>
<string name="menu_app_settings">Настройки на приложението</string>
<string name="discard">Отхвърляне</string>
<string name="entry_add_field">Ниво поле</string>
<string name="application_appearance">Интерфейс</string>
<string name="other">Други</string>
<string name="database_default_username_title">Потребител по подразбиране</string>
<string name="text_appearance">Текст</string>
<string name="download">Изтегляне</string>
<string name="sort_username">Потребител</string>
<string name="menu_save_database">Запазване на данните</string>
<string name="never">Никога</string>
<string name="field_name">Име на полето</string>
<string name="sort_menu">Сортиране</string>
<string name="field_value">Стойност на полето</string>
<string name="hint_group_name">Име на групата</string>
<string name="menu_merge_database">Обединяване на данните</string>
<string name="menu_merge_from">Обединяване с…</string>
<string name="menu_save_copy_to">Запазване на копие в…</string>
<string name="sort_title">Заглавие</string>
<string name="discard_changes">Отхвърляне на промените?</string>
<string name="menu_reload_database">Презареждане на данните</string>
<string name="contribute">Допринасяне</string>
<string name="error_load_database_KDF_memory">Ключът не може да бъде зареден. Пробвайте да намалите използваната памет от функцията за извличане на ключове.</string>
<string name="content_description_passphrase_word_count">Брой думи във фраза за достъп</string>
<string name="search_filters">Филтри за търсене</string>
<string name="current_group">Текуща група</string>
<string name="case_sensitive">Съвпадение на регистъра</string>
<string name="passphrase">Фраза за достъп</string>
<string name="holder">Собственик</string>
<string name="menu_form_filling_settings">Попълване на формуляри</string>
<string name="menu_delete_entry_history">Премахване на история</string>
<string name="menu_restore_entry_history">Възстановяване на история</string>
<string name="minus">Дефис</string>
<string name="no_results">Няма съвпадения</string>
<string name="progress_title">Обработка…</string>
<string name="progress_create">Създаване на хранилище…</string>
<string name="do_not_kill_app">Не затваряйте приложението…</string>
<string name="menu_appearance_settings">Външен вид</string>
<string name="download_finalization">Завършване…</string>
<string name="content_description_database_color">Цвят на хранилище</string>
<string name="entry_not_found">Данни за записа не са намерени.</string>
<string name="seed">Криптографско семе</string>
<string name="account">Профил</string>
<string name="bank">Банка</string>
<string name="bank_name">Наименование на банката</string>
<string name="standard">Стандарт</string>
<string name="template">Шаблон</string>
<string name="menu_move">Преместване</string>
<string name="menu_cancel">Отказ</string>
<string name="menu_hide_password">Скриване на парола</string>
<string name="auto_focus_search_summary">Търсене при отключване на хранилище</string>
<string name="saving_database">Запазване на хранилището…</string>
<string name="command_execution">Изпълнение на команда…</string>
<string name="content_description_keyboard_close_fields">Затваряне на полета</string>
<string name="content_description_otp_information">Информация за еднократна парола</string>
<string name="content_description_repeat_toggle_password_visibility">Превключвател на видимостта на парола на поле за повтаряне на парола</string>
<string name="content_description_entry_icon">Пиктограма на запис</string>
<string name="inherited">Наследено</string>
<string name="menu_empty_recycle_bin">Изпразване на кошчето</string>
<string name="html_about_privacy">&lt;strong&gt;Не се събират никакви потребителски данни&lt;/strong&gt;, приложението не се свързва с никакви сървъри, работи изцяло локално и напълно уважава поверителността на потребителите.</string>
<string name="searchable">Достъпно за търсене</string>
<string name="menu_external_icon">Външна пиктограма</string>
<string name="autofill_select_entry">Избиране на запис…</string>
<string name="enable_education_screens_title">Обучителни подсказки</string>
<string name="entropy_calculate">Ентропия: изчисляване…</string>
<string name="template_group_name">Шаблони</string>
<string name="bank_identifier_code">SWIFT / BIC</string>
<string name="menu_paste">Поставяне</string>
<string name="content_description_nav_header">Заглавка на меню</string>
<string name="auto_type_sequence">Последователност за автом. въвеждане</string>
<string name="id_card">Карта за самоличност</string>
<string name="card_verification_value">CVV</string>
<string name="place_of_issue">Място на издаване</string>
<string name="date_of_issue">Дата на издаване</string>
<string name="ssid">SSID</string>
<string name="type">Вид</string>
<string name="cryptocurrency">Портфейл за криптовалута</string>
<string name="token">Код за достъп</string>
<string name="menu_change_key_settings">Промяна на главната парола</string>
<string name="menu_advanced_unlock_settings">Отключване на устройството</string>
<string name="menu_security_settings">Настройки за сигурност</string>
<string name="menu_donate">Даряване</string>
<string name="menu_edit">Променяне</string>
<string name="menu_copy">Копиране</string>
<string name="menu_file_selection_read_only">Само за четене</string>
<string name="menu_search">Търсене</string>
<string name="menu_showpass">Показване на паролата</string>
<string name="menu_keystore_remove_key">Премахване на ключа за устройството</string>
<string name="menu_url">Посещаване на адреса</string>
<string name="menu_open_file_read_and_write">За четене и запис</string>
<string name="auto_type">Автоматично въвеждане</string>
<string name="content_description_node_children">Дъщерен възел</string>
<string name="content_description_add_node">Нов възел</string>
<string name="content_description_file_information">Информация за файл</string>
<string name="content_description_credentials_information">Информация за самоличност</string>
<string name="content_description_add_item">Нов елемент</string>
<string name="content_description_password_checkbox">Отметка на поле за парола</string>
<string name="content_description_entry_foreground_color">Цвят на шрифта на запис</string>
<string name="navigation_drawer_open">Отваряне на страничното меню</string>
<string name="navigation_drawer_close">Затваряне на страничното меню</string>
<string name="validate">Проверяване</string>
<string name="content_description_remove_field">Премахване на поле</string>
<string name="entry_add_attachment">Нов прикачен файл</string>
<string name="waiting_challenge_request">Изчакване на заявка за предизвикване…</string>
<string name="waiting_challenge_response">Изчакване на отговор на предизвикване…</string>
<string name="entry_setup_otp">Настройка на еднократна парола</string>
<string name="regex">Регулярен израз</string>
<string name="debit_credit_card">Банкова карта</string>
<string name="wireless">Безжична мрежа</string>
<string name="international_bank_account_number">IBAN</string>
<string name="secure_note">Защитена бележка</string>
<string name="membership">Членство</string>
<string name="error_arc4">Поточният шифър Аркфор не се поддържа.</string>
<string name="error_empty_key">Ключът не трябва да е празен.</string>
<string name="keyfile_is_empty">Файлът с ключ е празен.</string>
<string name="length">Дължина</string>
<string name="menu_app_settings_summary">Търсене, заключване, история, настройки</string>
<string name="menu_form_filling_settings_summary">Клавиатура, автовъвеждане, междинна памет</string>
<string name="menu_database_settings_summary">Описателни данни, кошче, шаблони, история</string>
<string name="master_key_settings_summary">Промяна, обновяване</string>
<string name="menu_open">Отключване</string>
<string name="auto_focus_search_title">Бързо търсене</string>
<string name="subdomain_search_title">Търсене на поддомейни</string>
<string name="menu_delete">Изтриване</string>
<string name="menu_appearance_settings_summary">Теми, цветове, атрибути</string>
<string name="download_initialization">Подготвяне…</string>
<string name="content_description_entry_background_color">Цвят на фона на запис</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft е приложение с &lt;strong&gt;отворен код&lt;/strong&gt; и &lt;strong&gt;без реклами&lt;/strong&gt;. \nРазпространява се под лиценза &lt;strong&gt;GPLv3&lt;/strong&gt; без каквато и да е гаранция.</string>
<string name="menu_advanced_unlock_settings_summary">Биометрия, удостоверяване</string>
<string name="menu_security_settings_summary">Шифроване, функция за извличане на ключ</string>
<string name="menu_master_key_settings">Настройки на главната парола</string>
<string name="file_browser">Управление на файлове</string>
<string name="generate_password">Създаване на парола</string>
<string name="autofill_service_name">Услуга за автоматично попълване на KeePassDX</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Изисква смяна на главната парола следващия път (веднъж)</string>
<string name="filter">Филтър</string>
<string name="sort_db">Естествен ред</string>
<string name="sort_recycle_bin_bottom">Кошчето е най-долу</string>
<string name="sort_groups_before">Първо групите</string>
<string name="autofill_preference_title">Настройка на автоматично попълване</string>
<string name="database_custom_color_title">Цвят на хранилището по избор</string>
<string name="keyboard_theme_title">Тема на клавиатурата</string>
<string name="keyboard_auto_go_action_title">Автоматично действие на клавиш</string>
<string name="education_advanced_unlock_title">Отключвайте хранилището заедно с устройството</string>
<string name="education_advanced_unlock_summary">Свържете паролата със сканиране на биометрични данни или удостоверяване на устройството, за да отключвате бързо хранилищата.</string>
<string name="education_entry_new_field_summary">Създайте допълнително поле, добавете стойност и при необходимост я защитете.</string>
<string name="education_unlock_title">Отключете хранилището</string>
<string name="education_sort_title">Сортиране на записи</string>
<string name="education_donation_summary">Допринесете за повишаване на стабилността, сигурността и добавянето на нови възможности.</string>
<string name="show_entry_colors_summary">Шрифта и фона на записите да е цветен</string>
<string name="backspace">Backspace</string>
<string name="keyboard_previous_database_credentials_title">Екран за въвеждане на главната парола</string>
<string name="select_entry">Изберете запис</string>
<string name="education_new_node_title">Добавете елементи към хранилището</string>
<string name="education_generate_password_summary">Създавайте надеждни пароли за записите, задайте лесно изискванията на формуляра и вашите изисквания за сигурност.</string>
<string name="education_add_attachment_summary">За да запазите важни външни данни можете да прикачвате файлове към записите.</string>
<string name="download_progression">Изпълнение: %1$d%%</string>
<string name="download_complete">Готово!</string>
<string name="unit_kibibyte">КиБ</string>
<string name="character_count">Брой знаци: %1$d</string>
<string name="style_brightness_title">Яркост на темата</string>
<string name="style_brightness_summary">Избор между светла и тъмна тема</string>
<string name="icon_section_standard">Стандартен</string>
<string name="icon_section_custom">Потребителски</string>
<string name="custom_fields">Потребителски полета</string>
<string name="back_to_previous_keyboard">Превключва предната клавиатура</string>
<string name="enable_auto_save_database_title">Автоматично запазване на хранилището</string>
<string name="kdf_explanation">При създаване на ключа за алгоритъма за шифроване, главната парола се преобразува с помощта на функция за извличане на ключ и случайна „сол“.</string>
<string name="rounds">Брой преобразувания</string>
<string name="sort_ascending">Възходящо ↓</string>
<string name="delete_entered_password_title">Премахване на парола</string>
<string name="file_not_found_content">Файлът не е намерен. Пробвайте да го отворите от приложението за управление на файлове.</string>
<string name="unit_byte">Б</string>
<string name="search">Търсене</string>
<string name="uppercase">Горен регистър</string>
<string name="warning">Внимание</string>
<string name="lock_database_back_root_summary">Заключва хранилището при докосване на бутона „Назад“ на началния екран</string>
<string name="read_only">Само за четене</string>
<string name="contains_duplicate_uuid">Хранилището съдържа повтарящ се идентификатор.</string>
<string name="biometric">Биометричен ключ</string>
<string name="set_autofill_service_title">Задаване на подразбирана услуга за автоматично попълване</string>
<string name="password_size_title">Дължина на създаваните пароли</string>
<string name="lock_database_back_root_title">Заключване при „Назад“</string>
<string name="content">Съдържание</string>
<string name="advanced_unlock">Отключване на устройството</string>
<string name="settings_database_recommend_changing_master_key_title">Препоръчителна смяна</string>
<string name="settings_database_recommend_changing_master_key_summary">Препоръчване на смяна на главната парола (в дни)</string>
<string name="settings_database_force_changing_master_key_title">Принудителна смяна</string>
<string name="database_name_title">Име на хранилището</string>
<string name="database_description_title">Описание на хранилището</string>
<string name="magic_keyboard_title">Настройки на Magikeyboard</string>
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
<string name="keyboard_entry_category">Запис</string>
<string name="keyboard_appearance_category">Външен вид</string>
<string name="allow_no_password_summary">Разрешава докосване на бутона „Отключване“ без попълнена главна парола</string>
<string name="delete_entered_password_summary">Премахва въведената парола след опит за отключване на хранилище</string>
<string name="reset_education_screens_text">Обучителните подсказки са нулирани</string>
<string name="education_entry_edit_summary">Редактирайте записи с потребителски полета. Можете да правите кръстосани връзки между полетата на различни записи.</string>
<string name="education_generate_password_title">Създавайте надеждни пароли</string>
<string name="education_field_copy_summary">Копираните полета могат да бъдат поставени навсякъде.
\n
\nИзползвайте предпочитания то вас метод за попълване на формуляри.</string>
<string name="exclude_ambiguous_chars">Изключване на еднакво изглеждащите знаци</string>
<string name="at_least_one_char">Най-малко по един символ от всяка група</string>
<string name="education_entry_new_field_title">Добавяйте полета по ваш избор</string>
<string name="icon_pack_choose_title">Пакет с пиктограми</string>
<string name="icon_pack_choose_summary">Използвания в приложението пакет с пиктограми</string>
<string name="import_app_properties_title">Внасяне на настройки</string>
<string name="no_url_handler">Инсталирайте мрежов четец, който да отвори този адрес.</string>
<string name="sort_last_modify_time">Дата на промяна</string>
<string name="autofill_sign_in_prompt">Влизане чрез KeePassDX</string>
<string name="style_choose_title">Тема на приложението</string>
<string name="education_search_title">Търсете елементи</string>
<string name="corrupted_file">Файлът е повреден.</string>
<string name="lowercase">Долен регистър</string>
<string name="protection">Защита</string>
<string name="space">Интервал</string>
<string name="sort_creation_time">Дата на създаване</string>
<string name="sort_last_access_time">Дата на последен достъп</string>
<string name="special">Специални</string>
<string name="underline">Подчертаване</string>
<string name="unsupported_db_version">Неподдържана версия на хранилището.</string>
<string name="database_history">История</string>
<string name="general">Общи</string>
<string name="autofill">Автоматично попълване</string>
<string name="device_credential">Удостоверяване на устройството</string>
<string name="lock_database_show_button_summary">Показва бутон за заключване в интерфейса</string>
<string name="assign_master_key">Задаване на главна парола</string>
<string name="file_name">Име на файла</string>
<string name="path">Път</string>
<string name="settings_database_force_changing_master_key_summary">Изисква смяна на главната парола (в дни)</string>
<string name="settings_database_force_changing_master_key_next_time_title">Принудителна смяна следващия път</string>
<string name="data">Данни</string>
<string name="database_data_compression_title">Компресия на данните</string>
<string name="database_data_compression_summary">Компресията на данните намалява размера на хранилището</string>
<string name="database_version_title">Версия на хранилището</string>
<string name="compression">Компресия</string>
<string name="compression_none">Няма</string>
<string name="compression_gzip">Gzip</string>
<string name="templates">Шаблони</string>
<string name="keyboard_name">Magikeyboard</string>
<string name="keyboard_setting_label">Настройки на Magikeyboard</string>
<string name="keyboard_selection_entry_title">Избор на записи</string>
<string name="allow_no_password_title">Разрешаване без главна парола</string>
<string name="enable_read_only_title">Само за четене</string>
<string name="keyboard_notification_entry_content_text">%1$s</string>
<string name="keyboard_notification_entry_content_title">Записът %1$s е достъпен в Magikeyboard</string>
<string name="keyboard_notification_entry_content_title_text">Запис</string>
<string name="enter">Enter</string>
<string name="autofill_close_database_title">Затваряне на хранилище</string>
<string name="autofill_close_database_summary">Затваряне на хранилището след избор на автоматично попълване</string>
<string name="enable_education_screens_summary">Откроява елементи, с цел да опише как работи приложението</string>
<string name="reset_education_screens_title">Нулиране на обучителни подсказки</string>
<string name="reset_education_screens_summary">Отново показва всички обучителни подсказки</string>
<string name="education_create_database_title">Създайте файла на хранилището</string>
<string name="education_create_database_summary">Създайте своя първи файл за управление на пароли.</string>
<string name="education_select_database_summary">Отворете вече създаден файл на хранилище, за да продължите да го използвате.</string>
<string name="education_entry_edit_title">Променяйте записи</string>
<string name="education_validate_entry_title">Потвърждаване на записа</string>
<string name="education_add_attachment_title">Добавяйте прикачени файлове</string>
<string name="education_read_only_title">Хранилище само за четене</string>
<string name="education_setup_OTP_title">Настройка на OTP</string>
<string name="education_read_only_summary">Променете режима на отваряне за сесията.
\n
\nРежимът „само за четене“ предотвратява нежеланите промени в хранилището.
\nРежимът „за четене и запис“ дава възможност за добавяне, промяна и премахване на елементи.</string>
<string name="education_field_copy_title">Копирайте поле</string>
<string name="education_lock_title">Заключете хранилището</string>
<string name="education_lock_summary">Бързо заключете хранилището. Настройте приложението да се заключва след определено време или при изгасяне на екрана.</string>
<string name="education_sort_summary">Изберете признак за подредбата на записи и групи.</string>
<string name="education_donation_title">Участвайте</string>
<string name="download_attachment">Изтегляне %1$s</string>
<string name="upload_attachment">Изпращане %1$s</string>
<string name="download_canceled">Отказано!</string>
<string name="unit_mebibyte">МиБ</string>
<string name="unit_gibibyte">ГиБ</string>
<string name="entropy">Ентропия: %1$s бита</string>
<string name="entropy_high">Ентропия: висока</string>
<string name="consider_chars_filter">Допълнителни знаци</string>
<string name="word_separator">Разделител</string>
<string name="ignore_chars_filter">Пренебрегнати знаци</string>
<string name="title_case">Всяка Дума</string>
<string name="screenshot_mode_banner_text">Режим екранни снимки</string>
<string name="style_choose_summary">Използваната в приложението тема</string>
<string name="show_entry_colors_title">Оцветяване на записи</string>
<string name="hide_expired_entries_summary">Записите с изтекла давност не се показват</string>
<string name="education_new_node_summary">Елементите дават възможност да управлявате цифрови идентичности.
\n
\nИзползвайте групите (подобно на папки), за да групирате записите в хранилището.</string>
<string name="education_search_summary">Търсете по заглавие, потребител или съдържание на други полета, за да намерите своите пароли.</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="lock_database_show_button_title">Бутон за заключване</string>
<string name="autofill_explanation_summary">Включете услугата за попълване на формуляри в други приложения</string>
<string name="properties">Свойства</string>
<string name="enable_read_only_summary">По подразбиране отваря хранилището само за четене</string>
<string name="education_validate_entry_summary">Не забравяйте да потвърдите записа и да го запазите в хранилището.
\n
\nАко се задейства автоматичното заключване, а сте направили промени, рискувате загуба на данни.</string>
<string name="education_setup_OTP_summary">Настройте управлението на еднократни пароли (HOTP / TOTP) което да създава кодове за достъп за двустепенно удостоверяване (2FA).</string>
<string name="education_unlock_summary">Въведете паролата и/или файла с ключ, за да отключите хранилището.
\n
\nПравете резервно копие на хранилището на сигурно място след всяка промяна.</string>
<string name="lower_case">долен регистър</string>
<string name="upper_case">ГОРЕН РЕГИСТЪР</string>
<string name="hide_expired_entries_title">Скриване на записите без давност</string>
<string name="hint_conf_pass">Потвърждаване на парола</string>
<string name="subdomain_search_summary">Търсене на домейни със зададени поддомейни</string>
<string name="import_app_properties_summary">Изберете резервно копие на настройките</string>
<string name="export_app_properties_summary">Създава резервно копие на настройките</string>
<string name="root">Корен</string>
<string name="show_uuid_title">Идентификатор</string>
<string name="html_text_dev_feature_buy_pro">Купувайки версията &lt;strong&gt;Pro&lt;/strong&gt;,</string>
<string name="html_text_dev_feature_contibute">&lt;strong&gt;Участвайки в проекта&lt;/strong&gt;,</string>
<string name="html_text_dev_feature">Тази възможност е &lt;strong&gt;в разработка&lt;/strong&gt; и изисква вашето &lt;strong&gt;участие&lt;/strong&gt;, за да бъде достъпна скоро.</string>
<string name="html_text_feature_generosity">Тази &lt;strong&gt;тема&lt;/strong&gt; е достъпна, благодарение на вашата щедрост.</string>
<string name="invalid_db_sig">Форматът на хранилището не може да бъде определен.</string>
<string name="list_entries_show_username_summary">Показват се потребителските имена в списъка със записите</string>
<string name="list_entries_show_username_title">Потребители</string>
<string name="list_groups_show_number_entries_title">Брой записи</string>
<string name="list_groups_show_number_entries_summary">Показват се броя записи в група</string>
<string name="list_size_title">Размер на списъка</string>
<string name="contains_duplicate_uuid_procedure">Разрешаване на проблема, чрез създаване на нов идентификатор и продължаване?</string>
<string name="show_uuid_summary">Показва се идентификаторът на даден запис или група</string>
<string name="list_size_summary">Размер на текста на елементите от списъка</string>
<string name="colorize_password_summary">Оцветяване на паролите според вида на знаците</string>
<string name="export_app_properties_title">Изнасяне на настройки</string>
<string name="enable_screenshot_mode_summary">Разрешава на други приложения да записват и правят снимки на екрана</string>
<string name="html_text_dev_feature_thanks">Много благодарим за поддръжката.</string>
<string name="html_text_dev_feature_work_hard">Работим усърдно, за да добавим бързо тази възможност.</string>
<string name="hint_generated_password">Създадена парола</string>
<string name="hint_length">Дължина</string>
<string name="invalid_credentials">Неправилна главна парола или файл с ключ.</string>
<string name="show_otp_token_summary">Показват се кодовете за достъп от OTP в списъка със записите</string>
<string name="show_otp_token_title">Кодове от OTP</string>
<string name="error_can_not_handle_uri">Указаният URI не може да бъде обработен от KeePassDX.</string>
<string name="error_file_not_create">Файлът не може да бъде създаден.</string>
<string name="error_invalid_db">Грешка при четене на хранилището.</string>
<string name="hint_icon_name">Наименование на пиктограмата</string>
<string name="invalid_db_same_uuid">%1$s с идентификатор %2$s вече съществува.</string>
<string name="colorize_password_title">Оцветяване на пароли</string>
<string name="enable_screenshot_mode_title">Режим екранни снимки</string>
<string name="enable_keep_screen_on_title">Екранът винаги включен</string>
<string name="enable_keep_screen_on_summary">Поддържа екрана включен при преглед или промяна на запис</string>
<string name="enable_auto_save_database_summary">Запазва хранилището при важни действия (в режим „четене и запис“)</string>
<string name="html_text_ad_free">За разлика от много други приложения за управление на пароли това е &lt;strong&gt;без реклами&lt;/strong&gt;, &lt;strong&gt;свободно от лицензи&lt;/strong&gt; и не събира лични данни на сървърите си без значение каква версия използвате.</string>
<string name="html_text_dev_feature_upgrade">Не забравяйте да обновявате приложението.</string>
<string name="html_text_dev_feature_encourage">вие поощрявате разработчиците да добавят &lt;strong&gt;нови възможности&lt;/strong&gt; и да &lt;strong&gt;отстраняват дефекти&lt;/strong&gt; според вашите отзиви.</string>
<string name="html_text_buy_pro">Купувайки версията Pro ще имате достъп до тази &lt;strong&gt;тема&lt;/strong&gt; и особено ще помогнете за &lt;strong&gt;изпълнението на проекти на общността&lt;/strong&gt;.</string>
<string name="html_text_donation">Като &lt;strong&gt;допринасяте&lt;/strong&gt; за проекта <i>(финансово, с код или преводи)</i> му помагате да живее и процъвтява, а също получавате процедурата за отключване на &lt;strong&gt;темите&lt;/strong&gt;.</string>
<string name="hint_keyfile">Файл с ключ</string>
<string name="invalid_algorithm">Грешен алгоритъм.</string>
<string name="description_app_properties">Свойства за управление на настройките на KeePassDX</string>
<string name="success_export_app_properties">Настройките на приложението са изнесени</string>
<string name="error_export_app_properties">Грешка при изнасяне на настройки.</string>
<string name="error_invalid_OTP">Неприемлива тайна за OTP.</string>
<string name="error_no_name">Въведете име.</string>
<string name="hide_broken_locations_summary">Скрива вече несъществуващи хранилища от списъка с последно отваряните</string>
<string name="registration_mode">Режим регистрация</string>
<string name="remember_database_locations_title">Запомняне използваните хранилища</string>
<string name="show_recent_files_title">Показване на последните хранилища</string>
<string name="search_mode">Режим търсене</string>
<string name="save_mode">Режим запазване</string>
<string name="selection_mode">Режим избиране</string>
<string name="remember_database_locations_summary">Запазва местоположението на хранилищата</string>
<string name="remember_keyfile_locations_title">Запомняне използваните ключове</string>
<string name="remember_keyfile_locations_summary">Запазва местоположението на ключовете</string>
<string name="show_recent_files_summary">Показва местоположението на последно използваните хранилища</string>
<string name="encryption_explanation">Алгоритъм за шифроване на цялата информация</string>
<string name="memory_usage">Използвана памет</string>
<string name="error_invalid_path">Уверете се, че пътят е правилен.</string>
<string name="error_import_app_properties">Грешка при внасяне на настройки.</string>
<string name="parallelism">Паралелно изпълняване</string>
<string name="success_import_app_properties">Настройките на приложението са внесени</string>
<string name="read_only_warning">В зависимост от приложението за управление на файлове, KeePassDX може да няма права да пише в паметта на устройството.</string>
<string name="hide_broken_locations_title">Скриване на липсващи хранилища</string>
<string name="rounds_explanation">По-големият брой преобразувания дава по-добра устойчивост срещу атаки с груба сила, но може сериозно да забави зареждането изапазването.</string>
<string name="warning_sure_remove_data">Премахване на данните въпреки това?</string>
<string name="build_label">Компилация %1$s</string>
<string name="warning_permanently_delete_nodes">Безвъзвратно премахване на избраните възли?</string>
<string name="warning_database_read_only">Дайте права за писане на файла, за да бъдат запазени промените в хранилището</string>
<string name="warning_database_link_revoked">Достъпът до файла е оттеглен от приложението за управление на файлове</string>
<string name="warning_empty_password">Продължаване без парола за защита на хранилището?</string>
<string name="warning_no_encryption_key">Продължаване без ключ за шифроване?</string>
<string name="warning_empty_keyfile">Не е препоръчително да бъде добавян празен файл с ключ.</string>
<string name="warning_database_revoked">Достъпът до файла е оттеглен от приложението за управление на файлове, отворете хранилището отново.</string>
<string name="version_label">Издание %1$s</string>
<string name="list_password_generator_options_title">Знаци за парола</string>
<string name="lock_database_screen_off_title">Заключване на екрана</string>
<string name="database_data_remove_unlinked_attachments_title">Премахване на несвързани данни</string>
<string name="warning_sure_add_file">Добавяне на файла въпреки това?</string>
<string name="error_unable_merge_database_kdb">Не е възможно обединяване с хранилище във формат KBD.</string>
<string name="memory_usage_explanation">Количество памет, използвана от функцията за извличане на ключове.</string>
<string name="warning_database_already_opened">Има отворено хранилище, затворете го, за да отворите друго</string>
<string name="warning_replace_file">При добавяне на този файл ще бъде заменен вече съществуващ.</string>
<string name="warning_remove_unlinked_attachment">Премахването на несвързаните данни може да намали размера на хранилището, но може да изтрие информация от разширения на KeePass.</string>
<string name="warning_database_info_changed">Информация от хранилището е променена извън приложението.</string>
<string name="warning_database_info_reloaded">При презареждане на хранилището ще бъдат изгубени местните промени.</string>
<string name="merge_success">Обединяването е завършено</string>
<string name="configure">Настройка</string>
<string name="unavailable">Недостъпно</string>
<string name="database_opened">Хранилището е отключено</string>
<string name="ask">Питане</string>
<string name="list_password_generator_options_summary">Задава набора от разрешени знаци за създаване на парола</string>
<string name="later">По-късно</string>
<string name="warning_empty_recycle_bin">Безвъзвратно премахване на всички възли в кошчето?</string>
<string name="parallelism_explanation">Степен на едновременно изпълняване (т.е. брой нишки), използвана от функцията за извличане на ключове.</string>
<string name="warning_password_encoding">Избягвайте да използвате в паролите знаци, които не са от кодировката на текста на хранилището (такива знаци ще бъдат превърнати в една буква).</string>
<string name="warning_file_too_big">Предполага се, че хранилищата на KeePass съдържат само малки служебни файлове (например файлове с ключове на PGP).
\n
\nАко добавите този файл, хранилището ще нарасне много и бързодействието ще намалее.</string>
<string name="database_data_remove_unlinked_attachments_summary">Премахва от хранилището прикачени файлове без връзка със запис</string>
<string name="warning_empty_keyfile_explanation">Съдържанието на файла с ключ не трябва да бъде променяно и най-добре е да съдържа случайна стойност.</string>
<string name="warning_database_info_changed_options">Обединете данните, презапишете външните промени или презаредете хранилището с последните промени.</string>
<string name="temp_advanced_unlock_timeout_summary">Време на живот на съдържанието, което се използва за отключване</string>
<string name="advanced_unlock_delete_all_key_warning">Да бъдат ли премахнати всички ключове за шифроване, свързани с разпознаването на отключване на устройството?</string>
<string name="biometric_delete_all_key_summary">Премахване на всички ключове за шифроване, свързани с разпознаването на отключване на устройството</string>
<string name="unavailable_feature_text">Тази възможност не може да бъде използвана.</string>
<string name="unavailable_feature_version">Устройството разполага с Андроид %1$s, но е необходим %2$s или по-нов.</string>
<string name="templates_group_enable_title">Използване на шаблони</string>
<string name="advanced_unlock_prompt_extract_credential_title">Разпознаване на отключване на устройството</string>
<string name="credential_before_click_advanced_unlock_button">Въведете паролата и докоснете бутона.</string>
<string name="lock_database_screen_off_summary">Заключва хранилището нколко секунди след изключване на екрана</string>
<string name="temp_advanced_unlock_enable_summary">За да се възползвате от отключване на устройството не пазете шифровано съдържание</string>
<string name="temp_advanced_unlock_timeout_title">Време на действие</string>
<string name="advanced_unlock_timeout">Времетраене на отключването на устройството</string>
<string name="recycle_bin_title">Използване на кошчето</string>
<string name="recycle_bin_summary">Премества групите и записите в групата „Кошче“ вместо да ги премахва директно</string>
<string name="advanced_unlock_prompt_store_credential_title">Отключване с устройството</string>
<string name="advanced_unlock_scanning_error">Грешка при отключване на устройството: %1$s</string>
<string name="advanced_unlock_not_recognized">Не може да бъде разпознато кога устройството е отключено</string>
<string name="advanced_unlock_prompt_not_initialized">Заявката за отключване не може да бъде подготвена.</string>
<string name="password_size_summary">Подразбирана дължина на създаваните пароли</string>
<string name="advanced_unlock_tap_delete">Докоснете, за да премахнете ключовете за отключване на устройството</string>
<string name="temp_advanced_unlock_enable_title">Временно отключване на устройството</string>
<string name="advanced_unlock_explanation_summary">За по-лесно отключване на хранилището използвайте отключване на устройството</string>
<string name="recycle_bin_group_title">Група „Кошче“</string>
<string name="templates_group_uuid_title">Група „Шаблони“</string>
<string name="advanced_unlock_prompt_extract_credential_message">Извличане на главната парола на хранилището при отключване на устройството</string>
<string name="advanced_unlock_invalid_key">Ключът за отключване на устройството не може да бъде прочетен. Премахнете го и повторете процедурата по разпознаване.</string>
<string name="advanced_unlock_keystore_warning">Това свойство на приложението ще пази шифровани данни за достъп в защитеното хранилище за ключове на устройството.
\n
\nВ зависимост реализацията на ППИ на операционната система то може да не е пълнофункционално.
\n
\nПроверете съвместимостта и степента на сигурност на хранилището за ключове при производителя на устройството или автора на инсталираната операционната система.</string>
<string name="templates_group_enable_summary">Използване на динамични шаблони за попълване на полетата на записи</string>
<string name="max_history_items_title">Максимален брой записи</string>
<string name="max_history_items_summary">Ограничаване на броя на елементите от историята на запис</string>
<string name="max_history_size_title">Максимален размер</string>
<string name="monospace_font_fields_enable_summary">Полетата използват различен шрифт за по-добра четимост на знаците</string>
<string name="magic_keyboard_explanation_summary">Включете потребителска клавиатура, която да попълва пароли и полета за удостоверяване</string>
<string name="clear_clipboard_notification_title">Изчистване при затваряне</string>
<string name="max_history_size_summary">Ограничаване на размера на историята на всеки запис</string>
<string name="keyboard_notification_entry_summary">Показване на известие, когато има достъпен запис</string>
<string name="monospace_font_fields_enable_title">Отделен шрифт за полетата</string>
<string name="enable">Включване</string>
<string name="disable">Изключване</string>
<string name="notification">Известие</string>
<string name="device_keyboard_setting_title">Настройки на клавиатурата на устройството</string>
<string name="keyboard_selection_entry_summary">При преглед на запис в KeePassDX, стойностите на Magikeyboard да бъдат попълнени с неговите данни</string>
<string name="keyboard_notification_entry_title">Известие за наличие</string>
<string name="error_disallow_no_credentials">Трябва да има зададена най-малко една парола.</string>
<string name="error_pass_match">Паролите се различават.</string>
<string name="error_string_type">Текстът не съвпада с търсения елемент.</string>
<string name="error_registration_read_only">Нов запис не може да бъде добавен в хранилище, отворено само за четене.</string>
<string name="error_start_database_action">Възникна грешка при извършване на действие с хранилището.</string>
<string name="keyboard_entry_timeout_title">Време за изчакване</string>
<string name="autofill_application_id_blocklist_title">Черен списък на приложения</string>
<string name="autofill_read_only_save">В хранилище, отворено само за четене не могат да бъдат запазвани промени.</string>
<string name="error_move_group_here">Група не може да бъде преместена тук.</string>
<string name="keyboard_notification_entry_clear_close_title">Изчистване при затваряне</string>
<string name="autofill_save_search_info_summary">При ръчен избор на запис прави опит за запазване на информация от търсене за по-лесно бъдещо използване</string>
<string name="keyboard_change">Превключване на клавиатури</string>
<string name="autofill_application_id_blocklist_summary">Списък от приложения, в които автоматично попълване да не работи</string>
<string name="autofill_block">Спиране на автоматичното попълване</string>
<string name="keyboard_previous_lock_title">Заключване на хранилище</string>
<string name="error_word_reserved">Тази дума е запазена и не може да бъде използвана.</string>
<string name="error_load_database">Хранилището не може да бъде заредено.</string>
<string name="error_create_database_file">С тази парола и ключ хранилище не може да бъде създадено.</string>
<string name="error_duplicate_file">Файл с тези данни съществува.</string>
<string name="error_file_to_big">Файлът, който изпращате е твърде голям.</string>
<string name="keyboard_save_search_info_title">Запазване на обща информация</string>
<string name="keyboard_notification_entry_clear_close_summary">Затваря хранилището при затваряне на известието</string>
<string name="keyboard_auto_go_action_summary">Действие на бутона „Напред“ след докоснат бутон „Поле“</string>
<string name="keyboard_previous_database_credentials_summary">Автоматично превключва предната клавиатура на екрана за удостоверяване на хранилището</string>
<string name="error_wrong_length">Полето „Дължина“ трябва да има положителна целочислена стойност.</string>
<string name="error_autofill_enable_service">Услугата за автоматично попълване не може да бъде включена.</string>
<string name="error_move_entry_here">Запис не може да бъде преместен тук.</string>
<string name="error_otp_digits">Кодът за достъп трябва да съдържа от %1$d до %2$d цифри.</string>
<string name="keyboard_key_vibrate_title">Тактилна обратна връзка</string>
<string name="error_copy_entry_here">Запис не може да бъде копиран тук.</string>
<string name="error_pass_gen_type">Изберете един или повече вида знаци.</string>
<string name="error_copy_group_here">Група не може да бъде копирана тук.</string>
<string name="error_create_database">Хранилището не може да бъде създадено.</string>
<string name="error_otp_counter">Броячът трябва да бъде в интервала от %1$d до %2$d.</string>
<string name="keyboard_previous_fill_in_title">Превключване назад</string>
<string name="keyboard_previous_search_summary">Автоматично превключва предната клавиатура на екрана за търсене</string>
<string name="keyboard_previous_fill_in_summary">Автоматично превключва предната клавиатура след докосване на бутона за автоматично действие</string>
<string name="autofill_block_restart">Рестартирайте приложението, съдържащо формуляра, за да влезе в сила ограничението.</string>
<string name="autofill_inline_suggestions_keyboard">Предложения за автом. попълване са добавени.</string>
<string name="error_rounds_too_large">Полето „Брой преобразувания“ има твърде голяма стойност. Променена е на 2147483648.</string>
<string name="error_string_key">Всяко поле трябва да има наименование.</string>
<string name="error_label_exists">Такъв етикет вече съществува.</string>
<string name="error_save_database">Хранилището не може да бъде запазено.</string>
<string name="error_otp_period">Периодът трябва да бъде в интервала от %1$d до %2$d секунди.</string>
<string name="autofill_inline_suggestions_summary">Опит за показване предложения за автоматично попълване от съвместимата клавиатура</string>
<string name="keyboard_save_search_info_summary">При ръчен избор на запис прави опит за запазване на обща информация за по-лесно бъдещо използване</string>
<string name="autofill_ask_to_save_data_title">Питане за запазване на данни</string>
<string name="autofill_ask_to_save_data_summary">Искане на разрешение за запазване на информация след попълване на формуляр</string>
<string name="autofill_web_domain_blocklist_title">Черен списък на домейни</string>
<string name="error_response_already_provided">Отговор вече е получен.</string>
<string name="autofill_web_domain_blocklist_summary">Списък от домейни, на които автоматично попълване да не работи</string>
<string name="error_out_of_memory">Недостатъчно памет за работа с хранилището.</string>
<string name="error_XML_malformed">Повреден XML.</string>
<string name="error_otp_secret_key">Тайният ключ трябва да бъде във формат Base32.</string>
<string name="error_field_name_already_exists">Поле с такова име съществува.</string>
<string name="error_no_response_from_challenge">Не може да бъде получен отговор на предизвикването.</string>
<string name="error_challenge_already_requested">Предизвикване вече е заявено.</string>
<string name="permission">Разрешение</string>
<string name="keyboard_entry_timeout_summary">Изчакване, след което записът се изчиства от клавиатурата</string>
<string name="keyboard_key_sound_title">Звукова обратна връзка</string>
<string name="keyboard_previous_search_title">Екран за търсене</string>
<string name="keyboard_previous_lock_summary">Автоматично превключва предната клавиатура след заключване на хранилището</string>
<string name="autofill_inline_suggestions_title">Предложения на място</string>
<string name="autofill_manual_selection_title">Ръчен избор</string>
<string name="autofill_manual_selection_summary">Показване на възможните записи от хранилището, от които потребителят да избере</string>
<string name="autofill_save_search_info_title">Запазване на информация от търсене</string>
<string name="biometric_unlock_enable_title">Биометрично отключване</string>
<string name="biometric_auto_open_prompt_title">Питане при автоматично отключване</string>
<string name="configure_biometric">Не са регистрирани биометрични или други способи за отключване на устройството.</string>
<string name="biometric_security_update_required">Необходимо е обновяване на биометричната система за сигурност.</string>
<string name="encrypted_value_stored">Шифрованата парола е запазена</string>
<string name="keystore_not_accessible">Хранилището за ключове не е подготвено.</string>
<string name="clipboard">Междинна памет</string>
<string name="device_credential_unlock_enable_title">Отключване на устройството</string>
<string name="error_database_uri_null">Идентификаторът на хранилището не може да бъде получен.</string>
<string name="error_remove_file">Грешка при премахване на файла.</string>
<string name="error_upload_file">Грешка при изпращане на файла.</string>
<string name="error_cancel_by_user">Отказано от потребителя.</string>
<string name="error_driver_required">За %1$s е необходим драйвер.</string>
<string name="error_location_unknown">Мястото на хранилището е неизвестно, действието не може да бъде извършено.</string>
<string name="warning_copy_permission">Разрешението е необходимо за показване на известия за междинната памет.</string>
<string name="unlock_and_link_biometric">Настройка отключване с устройството</string>
<string name="clipboard_warning">При неуспешно автоматично изчистване на междинната памет, изчистете историята ѝ ръчно.</string>
<string name="clipboard_notifications_title">Известия от междинната памет</string>
<string name="clipboard_notifications_summary">Известия от междинната памет за копиране на полета при преглед на запис</string>
<string name="biometric_unlock_enable_summary">Дава възможност за отключване на хранилището посредством биометрични данни</string>
<string name="device_credential_unlock_enable_summary">Дава възможност за отключване на хранилището при отключване на устройството</string>
<string name="biometric_auto_open_prompt_summary">Автоматична заявка за отключване на устройството ако хранилището се отключва с устройството</string>
<string name="allow_copy_password_summary">Разрешава копиране на паролите и защитените полета от записите в междинната памет</string>
<string name="error_rebuild_list">Списъкът не може да бъде изграден отново.</string>
<string name="error_otp_type">Формулярът не разпознава този вид OTP и може да не създава правилни кодове за достъп.</string>
<string name="warning_keyfile_integrity">Отпечатъкът от файла не е сигурен, защото Андроид може да променя данните в движение. Променете разширението на файла на .bin, за бъде невредим.</string>
<string name="allow_copy_password_title">Доверяване на междинната памет</string>
<string name="warning_exact_alarm">Приложението няма права за използване на точен будилник. В резултат на това дейностите, които зависят от него няма да се изпълняват на време.</string>
<string name="clear_clipboard_notification_summary">Заключва хранилището при затваряне на известието или изтече времето за изчакване на междинната памет</string>
<string name="warning_database_notification_permission">Разрешението дава възможност за показване на състоянието на хранилището, както и да го заключвате с леснодостъпен бутон.
\n
\nАко не предоставите това разрешение, отвореното във фонов режим хранилище няма да бъде видимо, ако друго приложение се показва в момента.</string>
<string name="style_name_forest">Горска</string>
<string name="style_name_divine">Божествена</string>
<string name="style_name_classic">Класическа</string>
<string name="style_name_simple">Обикновена</string>
<string name="style_name_moon">Лунна</string>
<string name="style_name_sun">Слънчева</string>
<string name="style_name_reply">Отговор</string>
<string name="style_name_kunzite">Авторска</string>
<string name="style_name_follow_system">Като системната</string>
<string name="style_name_light">Светла</string>
<string name="style_name_dark">Тъмна</string>
<string name="warning_database_info_changed_options_read_only">Презаредете последните промени в хранилището.</string>
<string name="generate_keyfile">Създаване на файл с ключ</string>
<string name="nodes">Възли</string>
<string name="recursive_number_entries_summary">Изчислява броя на всички записи в групата</string>
<string name="recursive_number_entries_title">Брой на записите</string>
<string name="warning_large_keyfile">Не се препоръчва използването на голям файл с ключ, защото може да попречи на отварянето на хранилището.</string>
<string name="hide_templates_summary">Шаблоните не се показват</string>
<string name="hide_templates_title">Скриване на шаблоните</string>
</resources>

View File

@@ -155,8 +155,8 @@
<string name="version">সংস্করণ</string>
<string name="error_arc4">আর্কফোর স্ট্রিম সাইফার সমর্থিত নয়।</string>
<string name="error_can_not_handle_uri">KeePassDX-এ এই URI পরিচালনা করা যায়নি।</string>
<string name="error_file_not_create">ফাইল তৈরি করা যায়নি</string>
<string name="error_invalid_db">ডাটাবেস পড়া যায়নি.</string>
<string name="error_file_not_create">ফাইল তৈরি করা যায়নি</string>
<string name="error_invalid_db">ডাটাবেস পড়া যায়নি</string>
<string name="error_invalid_path">পথ সঠিক কিনা নিশ্চিত করুন।</string>
<string name="error_invalid_OTP">অবৈধ OTP গোপন.</string>
<string name="error_no_name">একটি নাম লিখুন।</string>
@@ -169,7 +169,7 @@
<string name="error_copy_entry_here">আপনি এখানে একটি এন্ট্রি কপি করতে পারবেন না.</string>
<string name="error_copy_group_here">আপনি এখানে একটি গ্রুপ অনুলিপি করতে পারবেন না.</string>
<string name="error_create_database">ডাটাবেস ফাইল তৈরি করতে অক্ষম।</string>
<string name="error_create_database_file">এই পাসওয়ার্ড এবং কীফাইল দিয়ে ডাটাবেস তৈরি করতে অক্ষম৷</string>
<string name="error_create_database_file">এই পাসওয়ার্ড এবং কীফাইল দিয়ে ডাটাবেস তৈরি করতে অক্ষম৷</string>
<string name="error_move_group_here">আপনি এখানে একটি গ্রুপ সরাতে পারবেন না.</string>
<string name="error_otp_type">বিদ্যমান OTP প্রকারটি এই ফর্ম দ্বারা স্বীকৃত নয়, এর বৈধতা আর সঠিকভাবে টোকেন তৈরি করতে পারে না।</string>
<string name="error_string_type">এই পাঠ্যটি অনুরোধ করা আইটেমের সাথে মেলে না।</string>
@@ -263,8 +263,8 @@
<string name="error_rebuild_list">সঠিকভাবে তালিকা পুনর্নির্মাণ করতে অক্ষম.</string>
<string name="error_duplicate_file">ফাইল ডেটা ইতিমধ্যেই বিদ্যমান।</string>
<string name="error_response_already_provided">প্রতিক্রিয়া ইতিমধ্যে প্রদান করা হয়েছে.</string>
<string name="error_driver_required">%1$s এর জন্য ড্রাইভার প্রয়োজন৷</string>
<string name="error_unable_merge_database_kdb">একটি ডাটাবেস V1 থেকে মার্জ করতে অক্ষম৷</string>
<string name="error_driver_required">%1$s এর জন্য ড্রাইভার প্রয়োজন৷</string>
<string name="error_unable_merge_database_kdb">একটি ডাটাবেস V1 থেকে মার্জ করতে অক্ষম৷</string>
<string name="error_location_unknown">ডাটাবেস অবস্থান অজানা, ডাটাবেস কর্ম সঞ্চালিত করা যাবে না.</string>
<string name="error_hardware_key_unsupported">হার্ডওয়্যার কী সমর্থিত নয়।</string>
<string name="error_empty_key">কী খালি হতে পারে না।</string>
@@ -337,12 +337,12 @@
<string name="menu_empty_recycle_bin">রিসাইকেল বিন খালি করুন</string>
<string name="menu_restore_entry_history">ইতিহাস পুনরুদ্ধার করুন</string>
<string name="rounds_explanation">অতিরিক্ত এনক্রিপশন রাউন্ডগুলি ব্রুট ফোর্স অ্যাটাকগুলির বিরুদ্ধে উচ্চ সুরক্ষা প্রদান করে, তবে এটি সত্যিই লোড এবং সংরক্ষণকে ধীর করে দিতে পারে।</string>
<string name="error_export_app_properties">অ্যাপ্লিকেশন বৈশিষ্ট্য রপ্তানি সময় ত্রুটি</string>
<string name="error_export_app_properties">অ্যাপ্লিকেশন বৈশিষ্ট্য রপ্তানি সময় ত্রুটি</string>
<string name="command_execution">কমান্ড কার্যকর করা হচ্ছে…</string>
<string name="export_app_properties_title">অ্যাপের বৈশিষ্ট্য রপ্তানি করুন</string>
<string name="export_app_properties_summary">অ্যাপের বৈশিষ্ট্য রপ্তানি করতে একটি ফাইল তৈরি করুন</string>
<string name="description_app_properties">অ্যাপ সেটিংস পরিচালনা করতে KeePassDX বৈশিষ্ট্য</string>
<string name="error_import_app_properties">অ্যাপ বৈশিষ্ট্য আমদানির সময় ত্রুটি</string>
<string name="error_import_app_properties">অ্যাপ বৈশিষ্ট্য আমদানির সময় ত্রুটি</string>
<string name="warning_database_already_opened">একটি ডাটাবেস ইতিমধ্যেই খোলা আছে, নতুনটি খুলতে প্রথমে এটি বন্ধ করুন</string>
<string name="warning_empty_keyfile_explanation">কীফাইলের বিষয়বস্তু কখনই পরিবর্তন করা উচিত নয় এবং সর্বোত্তম ক্ষেত্রে, এলোমেলোভাবে উৎপন্ন ডেটা থাকা উচিত।</string>
<string name="warning_remove_unlinked_attachment">আনলিঙ্ক করা ডেটা মুছে দিলে আপনার ডাটাবেসের আকার কমে যেতে পারে কিন্তু KeePass প্লাগইনগুলির জন্য ব্যবহৃত ডেটাও মুছে যেতে পারে।</string>
@@ -354,14 +354,14 @@
<string name="waiting_challenge_response">চ্যালেঞ্জের প্রতিক্রিয়ার জন্য অপেক্ষা করা হচ্ছে…</string>
<string name="template_group_name">টেমপ্লেট</string>
<string name="save">সংরক্ষণ</string>
<string name="error_remove_file">ফাইল ডেটা সরানোর সময় একটি ত্রুটি ঘটেছে৷</string>
<string name="error_start_database_action">ডাটাবেসে একটি ক্রিয়া সম্পাদন করার সময় একটি ত্রুটি ঘটেছে৷</string>
<string name="error_challenge_already_requested">চ্যালেঞ্জ ইতিমধ্যে অনুরোধ করা হয়েছে</string>
<string name="error_remove_file">ফাইল ডেটা সরানোর সময় একটি ত্রুটি ঘটেছে৷</string>
<string name="error_start_database_action">ডাটাবেসে একটি ক্রিয়া সম্পাদন করার সময় একটি ত্রুটি ঘটেছে৷</string>
<string name="error_challenge_already_requested">চ্যালেঞ্জ ইতিমধ্যে অনুরোধ করা হয়েছে</string>
<string name="error_otp_secret_key">গোপন কী অবশ্যই বেস 32 ফর্ম্যাটে হতে হবে।</string>
<string name="error_otp_counter">কাউন্টার অবশ্যই %1$d এবং %2$d এর মধ্যে হতে হবে।</string>
<string name="error_otp_period">সময়কাল %1$d এবং %2$d সেকেন্ডের মধ্যে হতে হবে।</string>
<string name="error_otp_digits">টোকেনে %1$d থেকে %2$d সংখ্যা থাকতে হবে।</string>
<string name="error_upload_file">ফাইল ডেটা আপলোড করার সময় একটি ত্রুটি ঘটেছে৷</string>
<string name="error_upload_file">ফাইল ডেটা আপলোড করার সময় একটি ত্রুটি ঘটেছে৷</string>
<string name="error_save_database">ডাটাবেস সংরক্ষণ করা যায়নি.</string>
<string name="parallelism_explanation">কী ডেরিভেশন ফাংশন দ্বারা ব্যবহৃত সমান্তরালতার ডিগ্রি (যেমন থ্রেডের সংখ্যা)।</string>
<string name="saving_database">ডাটাবেস সংরক্ষণ করা হচ্ছে…</string>

View File

@@ -30,7 +30,7 @@
<string name="application">Aplicació</string>
<string name="menu_app_settings">Configuració de l\'aplicació</string>
<string name="brackets">Parèntesis</string>
<string name="file_manager_install_description">Es requereix un gestor d\'arxius que accepti les intencions ACTION_CREATE_DOCUMENT i ACTION_OPEN_DOCUMENT per a crear, obrir i desar fitxers de base de dades.</string>
<string name="file_manager_install_description">Cal crear un gestor de fitxers que accepti les accions intencionals ACTION_CREATE_DOCUMENT i ACTION_OPEN_DOCUMENT per crear, obrir i desar fitxers de base de dades.</string>
<string name="clipboard_cleared">Porta-retalls netejat</string>
<string name="clipboard_timeout">Temps d\'espera del porta-retalls</string>
<string name="clipboard_timeout_summary">Temps abans de netejar el porta-retalls (si el teu dispositiu ho suporta)</string>
@@ -42,7 +42,7 @@
<string name="digits">Dígits</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft és &lt;strong&gt; programari lliure &lt;/strong&gt; i &lt;strong&gt;sense anuncis&lt;/strong&gt;.
\nEs proporciona tal com està, sota una llicència &lt;strong&gt;GPLv3&lt;/strong&gt;, sense cap garantia.</string>
<string name="select_database_file">Obri una base de dades existent</string>
<string name="select_database_file">Obre una caixa forta existent</string>
<string name="entry_accessed">Accedida</string>
<string name="entry_cancel">Cancel·la</string>
<string name="entry_notes">Comentaris</string>
@@ -58,7 +58,7 @@
<string name="entry_user_name">Nom dusuari</string>
<string name="error_arc4">No sadmet el xifratge de flux Arcfour.</string>
<string name="error_can_not_handle_uri">El KeePassDX no pot gestionar aquest URI.</string>
<string name="error_file_not_create">No sha pogut crear el fitxer</string>
<string name="error_file_not_create">No sha pogut crear el fitxer.</string>
<string name="error_invalid_db">No sha pogut llegir la base de dades.</string>
<string name="error_invalid_path">Assegureu-vos que el camí és correcte.</string>
<string name="error_no_name">Introduïu-hi un nom.</string>
@@ -98,11 +98,11 @@
<string name="menu_open">Obre</string>
<string name="menu_search">Cerca</string>
<string name="menu_showpass">Mostra la contrasenya</string>
<string name="menu_url">Ves a la URL</string>
<string name="menu_url">Ves a l\'URL</string>
<string name="minus">Menys</string>
<string name="never">Mai</string>
<string name="no_results">Cap resultat de cerca</string>
<string name="no_url_handler">Instal·leu un navegador web per a obri aquesta URL</string>
<string name="no_url_handler">Instal·leu un navegador web per a obrir aquest URL.</string>
<string name="progress_create">Creant nova base de dades…</string>
<string name="progress_title">Treballant…</string>
<string name="content_description_remove_from_list">Elimina</string>
@@ -150,18 +150,18 @@
<string name="recycle_bin_group_title">Grup paperera</string>
<string name="recycle_bin_summary">Mou els grups i les entrades al grup \"paperera\" abans de suprimir-los</string>
<string name="recycle_bin_title">Ús de la paperera</string>
<string name="database_data_compression_summary">La compressió de les dades redueix la mida de la base de dades.</string>
<string name="database_data_compression_summary">La compressió de les dades redueix la mida de la base de dades</string>
<string name="database_data_compression_title">Compressió de les dades</string>
<string name="assign_master_key">Assigna una contrasenya mestra</string>
<string name="path">Camí</string>
<string name="file_name">Nom de fitxer</string>
<string name="unavailable_feature_version">La vostra versió d\'Android (%1$s) no compleix els requeriments; la versió mínima és %2$s.</string>
<string name="unavailable_feature_version">El dispositiu està executant Android %1$s, però es necessita %2$s o superior.</string>
<string name="biometric_delete_all_key_title">Suprimeix les claus de xifrat</string>
<string name="lock_database_show_button_summary">Mostra el botó de blocar en la interfície d\'usuari</string>
<string name="lock_database_show_button_title">Mostra el botó de blocar</string>
<string name="lock_database_back_root_summary">Bloca la base de dades quan l\'usuari toca el botó enrere en la pantalla principal</string>
<string name="lock_database_back_root_title">Premeu \'enrere\' per a blocar</string>
<string name="lock_database_screen_off_summary">Bloca la base de dades quan la pantalla està desactivada</string>
<string name="lock_database_screen_off_summary">Bloqueja la base de dades després d\'uns segons de desactivar la pantalla</string>
<string name="lock">Bloca</string>
<string name="clipboard_warning">Si la supressió automàtica del porta-retalls falla, suprimiu-ne la història manualment.</string>
<string name="clipboard_notifications_title">Notificacions del porta-retalls</string>
@@ -177,7 +177,7 @@
<string name="autofill">Autocompleta</string>
<string name="general">General</string>
<string name="biometric">Biomètric</string>
<string name="menu_appearance_settings">Apariència</string>
<string name="menu_appearance_settings">Aparença</string>
<string name="database_history">Història</string>
<string name="encrypted_value_stored">Contrasenya xifrada desada</string>
<string name="warning_permanently_delete_nodes">Voleu suprimir definitivament els nodes seleccionats\?</string>
@@ -199,7 +199,7 @@
<string name="show_recent_files_summary">Mostra la ubicació de les bases de dades recents</string>
<string name="show_recent_files_title">Mostra els fitxers recents</string>
<string name="remember_keyfile_locations_title">Recorda la ubicació dels fitxers de claus</string>
<string name="remember_database_locations_summary">Recorda la ubicació de les bases de dades</string>
<string name="remember_database_locations_summary">Fes un seguiment d\'on s\'emmagatzemen les bases de dades</string>
<string name="remember_database_locations_title">Recorda l\'ubicació de les bases de dades</string>
<string name="selection_mode">Mode de selecció</string>
<string name="contains_duplicate_uuid_procedure">Voleu resoldre el problema creant nous UUIDs per als duplicats per a continuar\?</string>
@@ -209,13 +209,13 @@
<string name="protection">Protecció</string>
<string name="auto_focus_search_summary">Sol·licita una cerca quan s\'obre una base de dades</string>
<string name="auto_focus_search_title">Cerca ràpida</string>
<string name="create_keepass_file">Crea una nova base de dades</string>
<string name="create_keepass_file">Crea una caixa forta</string>
<string name="menu_delete_entry_history">Suprimeix la història</string>
<string name="menu_restore_entry_history">Restaura la història</string>
<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_save_database">Desa la base de dades</string>
<string name="menu_save_database">Desa les dades</string>
<string name="menu_cancel">Cancel·lar</string>
<string name="menu_paste">Enganxar</string>
<string name="menu_move">Moure</string>
@@ -228,11 +228,11 @@
<string name="creating_database">Es crea la base de dades…</string>
<string name="list_groups_show_number_entries_summary">Mostra el nombre d\'entrades en un grup</string>
<string name="list_groups_show_number_entries_title">Mostra el nombre d\'entades</string>
<string name="list_entries_show_username_summary">Mostra els noms d\'usuari en les llistes d\'entrades</string>
<string name="list_entries_show_username_summary">Mostra els noms d\'usuari a les llistes d\'entrades</string>
<string name="list_entries_show_username_title">Mostra noms d\'usuari</string>
<string name="keyfile_is_empty">El fitxer de clau és buit.</string>
<string name="invalid_algorithm">Algorisme incorrecte.</string>
<string name="file_not_found_content">No s\'ha trobat el fitxer. Mireu de reobrir-lo des de l\'explorador de fitxers.</string>
<string name="file_not_found_content">No s\'ha trobat el fitxer. Mireu de tornar-lo a obrir des de l\'explorador de fitxers.</string>
<string name="field_value">Valor del camp</string>
<string name="field_name">Nom del camp</string>
<string name="error_otp_digits">El testimoni ha de tenir entre %1$d i %2$d dígits.</string>
@@ -283,9 +283,9 @@
<string name="error_rebuild_list">La llista no s\'ha pogut reconstruir correctament.</string>
<string name="error_database_uri_null">No es pot recuperar l\'URI de la base de dades.</string>
<string name="error_field_name_already_exists">El nom del camp ja existeix.</string>
<string name="error_registration_read_only">No es permet desar un element nou en una base de dades de només lectura</string>
<string name="error_registration_read_only">No es permet desar un element nou en una base de dades de només lectura.</string>
<string name="error_string_type">Aquest text no coincideix amb l\'element sol·licitat.</string>
<string name="error_otp_type">L\'OTP existent no està reconegut per aquest formulari, la seva validació ja no pot generar correctament el token.</string>
<string name="error_otp_type">L\'OTP existent no està reconegut per aquest formulari, la seva validació ja no pot generar correctament el testimoni.</string>
<string name="error_create_database_file">No sha pogut crear una base de dades amb aquesta contrasenya i fitxer de clau.</string>
<string name="error_autofill_enable_service">No sha pogut habilitar el servei de compleció automàtica.</string>
<string name="content_description_node_children">Nodes fill</string>
@@ -295,7 +295,7 @@
<string name="warning_sure_add_file">Voleu afegir el fitxer igualment\?</string>
<string name="warning_empty_password">Voleu continuar sense la protecció contra desblocatge amb contrasenya\?</string>
<string name="error_move_group_here">No és possible moure cap grup aquí.</string>
<string name="error_load_database_KDF_memory">No sha pogut carregar la clau. Proveu de reduir l«Ús de memòria» del KDF.</string>
<string name="error_load_database_KDF_memory">No sha pogut carregar la clau. Proveu de reduir l\'«Ús de memòria» del KDF.</string>
<string name="error_word_reserved">Aquesta paraula està reservada i no es pot usar.</string>
<string name="error_invalid_OTP">El secret OTP no és vàlid.</string>
<string name="education_read_only_title">Protecció contra escriptura de la base de dades</string>
@@ -312,7 +312,7 @@
<string name="html_text_feature_generosity">Aquest &lt;strong&gt;estil visual&lt;/strong&gt; és disponible gràcies a la vostra generositat.</string>
<string name="html_text_dev_feature_upgrade">No us oblideu de mantenir laplicació actualitzada instal·lant les versions noves.</string>
<string name="icon_section_standard">Estàndard</string>
<string name="show_uuid_title">Mostra lUUID</string>
<string name="show_uuid_title">Mostra l\'UUID</string>
<string name="hide_expired_entries_summary">No es mostren les entrades expirades</string>
<string name="hide_expired_entries_title">Amaga les entrades expirades</string>
<string name="contribute">Contribuïu-hi</string>
@@ -328,7 +328,7 @@
<string name="icon_pack_choose_title">Paquet dicones</string>
<string name="icon_section_custom">Personalitzat</string>
<string name="template_group_name">Plantilles</string>
<string name="error_unable_merge_database_kdb">No es pot fusionar d\'una base de dades V1.</string>
<string name="error_unable_merge_database_kdb">No es pot fusionar d\'una base de dades V1</string>
<string name="auto_type">Auto-Escriptura</string>
<string name="import_app_properties_title">Importar configuració de l\'aplicació</string>
<string name="card_verification_value">CVV</string>
@@ -365,10 +365,10 @@
<string name="advanced_unlock">Desbloqueja dispositiu</string>
<string name="template">Plantilla</string>
<string name="title_case">Primera Majúscula</string>
<string name="navigation_drawer_open">Obrir calaix de navegació</string>
<string name="navigation_drawer_open">El calaix de navegació està obert</string>
<string name="max_history_size_summary">Limita la mida de l\'historial per entrada</string>
<string name="success_export_app_properties">Configuració de l\'aplicació exportada</string>
<string name="error_export_app_properties">Error a l\'exportar la configuració de l\'aplicació</string>
<string name="error_export_app_properties">Error a l\'exportar la configuració de l\'aplicació.</string>
<string name="type">Tipus</string>
<string name="content_description_hardware_key_checkbox">Casella de clau física</string>
<string name="settings_database_recommend_changing_master_key_title">Recomanar renovació</string>
@@ -380,7 +380,7 @@
<string name="autofill_close_database_summary">Tanca la base de dades després d\'auto-completar</string>
<string name="screenshot_mode_banner_text">Mode captura de pantalla</string>
<string name="application_appearance">Interfície</string>
<string name="error_import_app_properties">Error a l\'importar la configuració de l\'aplicació</string>
<string name="error_import_app_properties">Error a l\'importar la configuració de l\'aplicació.</string>
<string name="case_sensitive">Sensible a majúscules i minúscules</string>
<string name="error_location_unknown">Localització de la base de dades desconeguda, l\'acció no es pot fer.</string>
<string name="membership">Pertinença</string>
@@ -418,7 +418,7 @@
<string name="standard">Estàndard</string>
<string name="error_XML_malformed">XML mal format.</string>
<string name="remember_hardware_key_summary">Recorda les claus físiques que s\'han usat</string>
<string name="token">Token</string>
<string name="token">Testimoni</string>
<string name="debit_credit_card">Targeta de Dèbit / Crèdit</string>
<string name="description_app_properties">Propietats de KeePassDX per administrar la configuració de l\'aplicació</string>
<string name="menu_save_copy_to">Desar còpia a …</string>
@@ -445,4 +445,255 @@
<string name="settings_database_force_changing_master_key_next_time_summary">Requereix canviar la clau mestra el pròxim cop (un cop)</string>
<string name="allow_copy_password_summary">Permet copiar la clau i els camps protegits d\'una entrada al porta-retalls</string>
<string name="success_import_app_properties">Configuració de l\'aplicació importada</string>
<string name="passphrase">Contrasenya</string>
<string name="colorize_password_title">Acoloreix les contrasenyes</string>
<string name="colorize_password_summary">Acoloreix les contrasenyes per tipus</string>
<string name="error_remove_file">S\'ha produït un error en suprimir les dades del fitxer.</string>
<string name="error_start_database_action">S\'ha produït un error en realitzar una acció a la base de dades.</string>
<string name="error_response_already_provided">Ja s\'ha proveït la resposta.</string>
<string name="show_otp_token_title">Mostra el testimoni OTP</string>
<string name="error_no_response_from_challenge">No s\'ha pogut obtenir la resposta del desafiament.</string>
<string name="error_upload_file">S\'ha produït un error en pujar les dades del fitxer.</string>
<string name="error_duplicate_file">Les dades del fitxer ja existeixen.</string>
<string name="hint_icon_name">Nom de la icona</string>
<string name="advanced_unlock_prompt_store_credential_message">Us haureu de recordar de la credencial principal de la caixa forta en el cas que feu servir el reconeixement del dispositiu pel desbloqueig.</string>
<string name="secure_note">Nota segura</string>
<string name="error_file_to_big">El fitxer que esteu intentant pujar és massa gros.</string>
<string name="error_challenge_already_requested">El desafiament ja s\'ha sol·licitat.</string>
<string name="error_cancel_by_user">S\'ha cancel·lat per l\'usuari.</string>
<string name="error_driver_required">Es requereix un controlador per %1$s.</string>
<string name="warning_empty_recycle_bin">Voleu suprimir permanentment tots els nodes de la paperera de reciclatge?</string>
<string name="warning_file_too_big">Se suposa que una base de dades KeePass només conté petits fitxers d\'utilitat (com ara fitxers de claus PGP).
\n
\nAmb aquesta pujada, la base de dades pot ser molt gran i afectar el rendiment.</string>
<string name="biometric_delete_all_key_summary">Suprimeix totes les claus de xifratge relacionades amb el reconeixement de desbloqueig del dispositiu</string>
<string name="database_data_remove_unlinked_attachments_title">Elimina les dades no enllaçades</string>
<string name="menu_database_settings_summary">Metadades, paperera de reciclatge, plantilles, historial</string>
<string name="encryption_explanation">Algorisme de xifratge de la base de dades utilitzat per a totes les dades</string>
<string name="delete_entered_password_summary">Suprimeix la contrasenya introduïda després d\'un intent de connexió a una base de dades</string>
<string name="enable_read_only_title">Protegit contra l\'escriptura</string>
<string name="enable_read_only_summary">Obre la base de dades en mode només de lectura per defecte</string>
<string name="enable_screenshot_mode_summary">Permet que les aplicacions de tercers gravin o facin captures de pantalla de l\'aplicació</string>
<string name="enable_education_screens_summary">Ressalta els elements per saber com funciona l\'aplicació</string>
<string name="reset_education_screens_title">Reinicia els consells educatius</string>
<string name="enable_education_screens_title">Consells educatius</string>
<string name="education_new_node_title">Afegeix elements a la base de dades</string>
<string name="education_search_summary">Introduïu el títol, el nom d\'usuari o el contingut d\'altres camps per recuperar les contrasenyes.</string>
<string name="education_advanced_unlock_title">Desbloqueig de la base de dades dels dispositius</string>
<string name="autofill_save_search_info_title">Desa la informació de cerca</string>
<string name="education_entry_edit_summary">Editeu l\'entrada amb camps personalitzats. Les dades del fons es poden referenciar entre diferents camps d\'entrada.</string>
<string name="education_generate_password_title">Crea una contrasenya forta</string>
<string name="education_generate_password_summary">Genereu una contrasenya forta per associar-la a l\'entrada, definiu-la fàcilment segons els criteris del formulari i no oblideu la contrasenya segura.</string>
<string name="education_entry_new_field_summary">Registreu un camp addicional, afegiu un valor i, opcionalment, protegiu-lo.</string>
<string name="education_add_attachment_summary">Pengeu un adjunt a la vostra entrada per a desar dades externes importants.</string>
<string name="download_initialization">S\'està inicialitzant…</string>
<string name="education_sort_title">Ordenació d\'elements</string>
<string name="education_sort_summary">Trieu com s\'ordenen les entrades i els grups.</string>
<string name="entropy_high">Entropia: alta</string>
<string name="entropy_calculate">Entropia: Calcula…</string>
<string name="warning_database_revoked">S\'ha revocat l\'accés al fitxer pel gestor de fitxers, tanqueu la base de dades i torneu-la a obrir des de la seva ubicació.</string>
<string name="warning_copy_permission">Cal el permís de notificació per a utilitzar la característica de notificació del porta-retalls.</string>
<string name="device_credential">Credencial del dispositiu</string>
<string name="autofill_web_domain_blocklist_summary">Llista que impedeix l\'emplenament automàtic de determinats dominis web</string>
<string name="autofill_block">Bloqueja l\'emplenament automàtic</string>
<string name="biometric_auto_open_prompt_title">Obre la petició automàticament</string>
<string name="keyboard_notification_entry_summary">Mostra una notificació quan hi hagi una entrada disponible</string>
<string name="keyboard_previous_database_credentials_title">Pantalla de credencials de la base de dades</string>
<string name="keyboard_previous_database_credentials_summary">Torna automàticament al teclat anterior a la pantalla de credencials de la base de dades</string>
<string name="back_to_previous_keyboard">Torna al teclat anterior</string>
<string name="autofill_inline_suggestions_summary">Intenta mostrar els suggeriments d\'emplenament automàtic directament des d\'un teclat compatible</string>
<string name="warning_database_already_opened">Ja hi ha oberta una base de dades, tanqueu-la primer abans d\'obrir-ne una de nova</string>
<string name="build_label">Construeix 2%1$s</string>
<string name="advanced_unlock_prompt_extract_credential_title">Reconeixement de desbloqueig del dispositiu</string>
<string name="clipboard_explanation_summary">Copia els camps d\'entrada utilitzant el porta-retalls del dispositiu</string>
<string name="temp_advanced_unlock_enable_title">Desbloqueig temporal del dispositiu</string>
<string name="temp_advanced_unlock_enable_summary">No emmagatzemeu cap contingut xifrat per utilitzar el desbloqueig del dispositiu</string>
<string name="database_data_remove_unlinked_attachments_summary">Elimina els adjunts continguts a la base de dades però no vinculats a una entrada</string>
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
<string name="keyboard_selection_entry_title">Selecció d\'entrada</string>
<string name="keyboard_selection_entry_summary">Quan es visualitzi una entrada a KeePassDX, emplena el Magikeyboard amb aquesta entrada</string>
<string name="keyboard_notification_entry_clear_close_title">Neteja en tancar</string>
<string name="keyboard_entry_timeout_summary">Temps d\'espera per netejar l\'entrada del teclat</string>
<string name="keyboard_keys_category">Tecles</string>
<string name="keyboard_previous_fill_in_title">Torna enrere</string>
<string name="autofill_manual_selection_title">Selecció manual</string>
<string name="autofill_application_id_blocklist_summary">Llista que impedeix l\'emplenament automàtic en determinades aplicacions</string>
<string name="education_search_title">Cerca a través de les entrades</string>
<string name="menu_merge_database">Fusiona les dades</string>
<string name="menu_keystore_remove_key">Suprimeix la clau de desbloqueig del dispositiu</string>
<string name="warning_password_encoding">Eviteu els caràcters de contrasenya fora del format de codificació de text en el fitxer de base de dades (els caràcters no reconeguts es converteixen a la mateixa lletra).</string>
<string name="warning_database_read_only">Concedeix accés d\'escriptura al fitxer per a desar els canvis a la base de dades</string>
<string name="warning_database_info_changed_options">Fusiona les dades, sobreescriu les modificacions externes desant la base de dades o torna-la a carregar amb els últims canvis.</string>
<string name="warning_database_info_reloaded">En tornar a carregar la base de dades se suprimiran les dades modificades localment.</string>
<string name="advanced_unlock_invalid_key">No es pot llegir la clau de desbloqueig del dispositiu. Si us plau, suprimiu-la i repetiu el procediment de reconeixement de desbloqueig.</string>
<string name="advanced_unlock_not_recognized">No s\'ha pogut reconèixer l\'empremta digital per desbloquejar el dispositiu</string>
<string name="autofill_select_entry">Selecciona una entrada…</string>
<string name="advanced_unlock_tap_delete">Toca per suprimir les claus de desbloqueig del dispositiu</string>
<string name="temp_advanced_unlock_timeout_title">Venciment del desbloqueig del dispositiu</string>
<string name="temp_advanced_unlock_timeout_summary">Durada de l\'ús del desbloqueig del dispositiu abans de suprimir el seu contingut</string>
<string name="advanced_unlock_timeout">Temps d\'espera per desbloquejar el dispositiu</string>
<string name="database_custom_color_title">Color personalitzat de la base de dades</string>
<string name="database_version_title">Versió de la base de dades</string>
<string name="text_appearance">Text</string>
<string name="keyboard_notification_entry_clear_close_summary">Tanca la base de dades en tancar la notificació</string>
<string name="keyboard_entry_timeout_title">Temps d\'espera</string>
<string name="keyboard_key_vibrate_title">Vibració del teclat</string>
<string name="autofill_inline_suggestions_title">Suggeriments integrats</string>
<string name="autofill_inline_suggestions_keyboard">S\'han afegit els suggeriments d\'emplenament automàtic.</string>
<string name="allow_no_password_summary">Permet prémer el botó \"Obre\" sense seleccionar cap credencial</string>
<string name="delete_entered_password_title">Suprimeix la contrasenya</string>
<string name="enable_auto_save_database_title">Desa automàticament la base de dades</string>
<string name="enable_auto_save_database_summary">Desa la base de dades després de cada acció important (en el mode «Modificable»)</string>
<string name="enable_keep_screen_on_title">Manté la pantalla activada</string>
<string name="education_create_database_summary">Creeu el vostre primer fitxer de gestió de contrasenyes.</string>
<string name="show_entry_colors_title">Colors de l\'entrada</string>
<string name="keyboard_appearance_category">Aparença</string>
<string name="keyboard_auto_go_action_summary">Acció de la tecla «Ves» després de prémer una tecla «Camp»</string>
<string name="autofill_ask_to_save_data_title">Demana desar les dades</string>
<string name="keyboard_change">Commuta el teclat</string>
<string name="backspace">Retrocés</string>
<string name="enter">Introdueix</string>
<string name="autofill_save_search_info_summary">Això intenta desar la informació de cerca en fer una selecció d\'entrada manual per a usos futurs més fàcils</string>
<string name="autofill_web_domain_blocklist_title">Llista de bloqueig de dominis web</string>
<string name="autofill_block_restart">Reinicieu l\'aplicació que conté el formulari per activar el bloqueig.</string>
<string name="enable_keep_screen_on_summary">Manté la pantalla activada en veure o editar una entrada</string>
<string name="education_create_database_title">Creeu el fitxer de la base de dades</string>
<string name="education_new_node_summary">Les entrades ajuden a gestionar les identitats digitals.
\n
\nEls grups (carpetes) organitzen entrades a la base de dades.</string>
<string name="download_attachment">Baixa %1$s</string>
<string name="download_progression">En curs: %1$d%%</string>
<string name="download_complete">S\'ha completat!</string>
<string name="advanced_unlock_prompt_extract_credential_message">Extreu la credencial de la base de dades amb les dades de desbloqueig del dispositiu</string>
<string name="keyboard">Teclat</string>
<string name="magic_keyboard_title">Magikeyboard</string>
<string name="custom_fields">Camps personalitzats</string>
<string name="advanced_unlock_prompt_store_credential_title">Enllaç al desbloqueig del dispositiu</string>
<string name="education_entry_edit_title">Edita l\'entrada</string>
<string name="filter">Filtra</string>
<string name="keyboard_auto_go_action_title">Acció de la tecla automàtica</string>
<string name="configure_biometric">No hi ha cap credencial biomètrica ni de dispositiu inscrita.</string>
<string name="advanced_unlock_explanation_summary">Utilitza el desbloqueig del dispositiu per obrir una base de dades més fàcilment</string>
<string name="device_credential_unlock_enable_summary">Us permet utilitzar la credencial del dispositiu per obrir la base de dades</string>
<string name="biometric_auto_open_prompt_summary">Sol·licita automàticament el desbloqueig del dispositiu si la base de dades està configurada per utilitzar-lo</string>
<string name="advanced_unlock_delete_all_key_warning">Voleu suprimir totes les claus de xifratge relacionades amb el reconeixement de desbloqueig del dispositiu?</string>
<string name="biometric_unlock_enable_title">Desbloqueig biomètric</string>
<string name="biometric_unlock_enable_summary">Us permet escanejar la vostra biomètrica per obrir la base de dades</string>
<string name="autofill_application_id_blocklist_title">Llista de bloqueig d\'aplicacions</string>
<string name="enable_screenshot_mode_title">Mode captura de pantalla</string>
<string name="search_mode">Mode de cerca</string>
<string name="save_mode">Desa el mode</string>
<string name="keyboard_save_search_info_title">Desa la informació compartida</string>
<string name="keyboard_notification_entry_content_title">%1$s disponbile al Magikeyboard</string>
<string name="warning_empty_keyfile_explanation">El contingut del fitxer clau no s\'ha de canviar mai, i en el millor dels casos, ha de contenir dades generades aleatòriament.</string>
<string name="invalid_db_same_uuid">%1$s amb el mateix UUID %2$s ja existeix.</string>
<string name="menu_external_icon">Icona externa</string>
<string name="remember_keyfile_locations_summary">Fa un seguiment d\'on s\'emmagatzemen els fitxers de claus</string>
<string name="hide_broken_locations_title">Amaga els enllaços trencats de la base de dades</string>
<string name="autofill_manual_selection_summary">Mostra l\'opció de permetre que l\'usuari seleccioni l\'entrada de la base de dades</string>
<string name="download_canceled">S\'ha cancel·lat!</string>
<string name="do_not_kill_app">No matis l\'aplicació…</string>
<string name="lock_database_screen_off_title">Bloqueig de pantalla</string>
<string name="at_least_one_char">Com a mínim un caràcter de cada</string>
<string name="show_entry_colors_summary">Mostra els colors de primer pla i de fons per a una entrada</string>
<string name="keystore_not_accessible">El magatzem de claus no està correctament inicialitzat.</string>
<string name="autofill_service_name">Emplenament automàtic de formularis de KeePassDX</string>
<string name="show_otp_token_summary">Mostra els testimonis OTP a la llista d\'entrades</string>
<string name="show_uuid_summary">Mostra l\'UUID enllaçat a una entrada o un grup</string>
<string name="menu_app_settings_summary">Cerca, bloqueja, historial, propietats</string>
<string name="menu_security_settings_summary">Xifratge, funció de derivació de la clau</string>
<string name="master_key_settings_summary">Canvi, renovació</string>
<string name="subdomain_search_title">Cerca de subdomini</string>
<string name="subdomain_search_summary">Cerca dominis web amb restriccions de subdominis</string>
<string name="warning_replace_file">La pujada d\'aquest fitxer substituirà l\'existent.</string>
<string name="warning_remove_unlinked_attachment">Eliminar les dades desenllaçades pot disminuir la mida de la base de dades, però també pot eliminar les dades utilitzades per als connectors del KeePass.</string>
<string name="warning_sure_remove_data">Voleu suprimir aquestes dades de totes maneres?</string>
<string name="warning_database_info_changed">La informació continguda al fitxer de la base de dades s\'ha modificat fora de l\'aplicació.</string>
<string name="later">Més tard</string>
<string name="configure">Configura</string>
<string name="biometric_security_update_required">Cal actualitzar la seguretat biomètrica.</string>
<string name="unlock_and_link_biometric">Enllaç de desbloqueig del dispositiu</string>
<string name="advanced_unlock_scanning_error">Error en desbloquejar el dispositiu: %1$s</string>
<string name="unavailable">No disponible</string>
<string name="advanced_unlock_prompt_not_initialized">No s\'ha pogut inicialitzar l\'indicador de desbloqueig del dispositiu.</string>
<string name="credential_before_click_advanced_unlock_button">Escriviu la contrasenya i, a continuació, feu clic en aquest botó.</string>
<string name="menu_appearance_settings_summary">Temes, colors, atributs</string>
<string name="clipboard_notifications_summary">Mostra les notificacions del porta-retalls per a copiar camps en visualitzar una entrada</string>
<string name="content">Contingut</string>
<string name="device_credential_unlock_enable_title">Desbloqueig de les credencials del dispositiu</string>
<string name="unavailable_feature_text">No s\'ha pogut iniciar aquesta característica.</string>
<string name="unavailable_feature_hardware">No s\'ha pogut trobar el maquinari corresponent.</string>
<string name="templates_group_enable_title">Ús de plantilles</string>
<string name="templates_group_enable_summary">Utilitza plantilles dinàmiques per omplir els camps d\'una entrada</string>
<string name="templates_group_uuid_title">Grup de plantilles</string>
<string name="max_history_items_summary">Limita el nombre d\'elements de l\'historial per entrada</string>
<string name="recycle_bin">Paperera de reciclatge</string>
<string name="templates">Plantilles</string>
<string name="magic_keyboard_explanation_summary">Activeu un teclat personalitzat que empleni les contrasenyes i tots els camps d\'identitat</string>
<string name="device_keyboard_setting_title">Configuració del teclat del dispositiu</string>
<string name="keyboard_name">Magikeyboard</string>
<string name="keyboard_setting_label">Configuració del Magikeyboard</string>
<string name="keyboard_entry_category">Entrada</string>
<string name="keyboard_notification_entry_title">Informació de la notificació</string>
<string name="keyboard_notification_entry_content_title_text">Entrada</string>
<string name="keyboard_notification_entry_content_text">%1$s</string>
<string name="keyboard_theme_title">Tema del teclat</string>
<string name="keyboard_key_sound_title">Prémer les tecles amb so</string>
<string name="keyboard_save_search_info_summary">Això intenta desar la informació compartida en fer una selecció d\'entrada manual per a usos futurs més fàcils</string>
<string name="keyboard_previous_search_title">Pantalla de cerca</string>
<string name="keyboard_previous_search_summary">Torna automàticament al teclat anterior a la pantalla de cerca</string>
<string name="keyboard_previous_fill_in_summary">Torna automàticament al teclat anterior després d\'executar «Acció de la tecla automàtica»</string>
<string name="keyboard_previous_lock_title">Bloqueja la base de dades</string>
<string name="keyboard_previous_lock_summary">Torna automàticament al teclat anterior després de bloquejar la base de dades</string>
<string name="select_entry">Selecciona una entrada</string>
<string name="autofill_ask_to_save_data_summary">Demana desar les dades quan es completi l\'emplenament d\'un formulari</string>
<string name="autofill_read_only_save">No es permet desar dades en una base de dades oberta en mode només de lectura.</string>
<string name="reset_education_screens_summary">Torna a mostrar tota la informació educativa</string>
<string name="reset_education_screens_text">Reinicialitza els consells educatius</string>
<string name="education_select_database_title">Obre una base de dades existent</string>
<string name="education_select_database_summary">Obriu el fitxer anterior de la base de dades des del navegador de fitxers per a continuar utilitzant-lo.</string>
<string name="education_advanced_unlock_summary">Enllaça la contrasenya a una credencial biomètrica escanejada o de dispositiu per desbloquejar ràpidament la base de dades.</string>
<string name="education_validate_entry_title">Valida l\'entrada</string>
<string name="education_entry_new_field_title">Afegeix camps personalitzats</string>
<string name="education_add_attachment_title">Afegeix un adjunt</string>
<string name="education_setup_OTP_title">Configura l\'OTP</string>
<string name="education_unlock_title">Desbloqueja la base de dades</string>
<string name="education_setup_OTP_summary">Configureu la gestió de contrasenyes d\'un sol ús (HOTP / TOTP) per generar un testimoni sol·licitat per a l\'autenticació de dos factors (2FA).</string>
<string name="education_field_copy_title">Copia un camp</string>
<string name="html_text_donation">Al &lt;strong&gt;contribuir&lt;/strong&gt; al projecte <i>(monetàriament, codi, traducció)</i>, l\'ajudareu a continuar vivint i prosperant, i també podreu optar al procediment de desbloqueig del &lt;strong&gt;tema&lt;/strong&gt;.</string>
<string name="upload_attachment">Puja %1$s</string>
<string name="download_finalization">S\'està finalitzant…</string>
<string name="entropy">Entropia: %1$s bit</string>
<string name="warning_exact_alarm">No heu permès que l\'aplicació utilitzi una alarma exacta. Com a resultat, les característiques que requereixen un temporitzador no es faran amb un temps exacte.</string>
<string name="warning_keyfile_integrity">El hash del fitxer no està garantit perquè Android pot canviar les seves dades al moment. Canvia l\'extensió del fitxer a .bin per a una integritat correcta.</string>
<string name="html_text_ad_free">A diferència de moltes aplicacions de gestió de contrasenyes, aquest un és un &lt;strong&gt;programari sense anuncis&lt;/strong&gt;, &lt;strong&gt; copyleft i lliure&lt;/strong&gt; i no recull dades personals en els seus servidors, no importa quina versió utilitzeu.</string>
<string name="education_field_copy_summary">Els camps copiats es poden enganxar en qualsevol lloc.\n\nUtilitza el mètode d\'emplenament de formularis que prefereixis.</string>
<string name="generate_keyfile">Genera un fitxer de claus</string>
<string name="nodes">Nodes</string>
<string name="recursive_number_entries_summary">Calcula recursivament el nombre d\'entrades d\'un grup</string>
<string name="warning_large_keyfile">No es recomana afegir un fitxer de claus gran, això pot impedir que s\'obri la base de dades.</string>
<string name="education_lock_summary">Bloqueja la base de dades ràpidament, pots configurar l\'aplicació per bloquejar-la al cap d\'un temps, i quan la pantalla s\'apagui.</string>
<string name="recursive_number_entries_title">Nombre recursiu d\'entrades</string>
<string name="advanced_unlock_keystore_warning">Aquesta característica emmagatzemarà dades de credencials encriptades a l\'espai segur KeyStore del vostre dispositiu.\n\nDepenent de la implementació nativa de l\'API del sistema operatiu, pot no ser completament funcional.\n\nComprova la compatibilitat i seguretat de KeyStore amb el fabricant del teu dispositiu i el creador de la ROM que estàs utilitzant.</string>
<string name="kdf_explanation">Per a generar la clau per a l\'algorisme d\'encriptació, la clau mestra es transforma utilitzant una funció de derivació de clau sal aleatòria.</string>
<string name="education_validate_entry_summary">Recordeu validar la vostra entrada i desar la vostra base de dades.\n\nSi s\'activa un bloqueig automàtic i t\'oblides que estaves fent una modificació, t\'arrisques a perdre les teves dades.</string>
<string name="education_read_only_summary">Canvieu el mode inaugural per a la sessió. \n \n\"Escriu-emparat\" impedeix canvis involuntaris a la base de dades. \n\"Modificable\" us permet afegir, eliminar o modificar tots els elements com vulgueu.</string>
<string name="warning_database_info_changed_options_read_only">Torna a carregar la base de dades amb els darrers canvis.</string>
<string name="warning_database_notification_permission">El permís de notificació permet mostrar l\'estat de la base de dades i bloquejar-la amb un botó de fàcil accés.\n\nSi no activeu aquest permís, la base de dades oberta en segon pla no serà visible si hi ha una altra aplicació en primer pla.</string>
<string name="html_text_buy_pro">En comprar la versió pro, tindreu accés a aquest &lt;strong&gt; estil visual&lt;/strong&gt; i sereu ajundant especialment &lt;strong&gt; a la realització de projectes comunitaris.&lt;/strong&gt;</string>
<string name="html_text_dev_feature">Aquesta característica és &lt;strong&gt;en desenvolupament&lt;/strong&gt; i requereix que la vostra &lt;strong&gt;contribució&lt;/strong&gt; estigui disponible aviat.</string>
<string name="style_name_forest">Bosc</string>
<string name="style_name_divine">Divina</string>
<string name="style_name_classic">Clàssic</string>
<string name="style_name_reply">Respondre</string>
<string name="style_name_kunzite">Kunzite</string>
<string name="style_name_follow_system">Seguiu el sistema</string>
<string name="hide_templates_title">Amaga les plantilles</string>
<string name="hide_templates_summary">Les plantilles no són mostrades</string>
<string name="html_text_dev_feature_encourage">esteu animant a qui desenvolupa a crear &lt;strong&gt;noves funcions&lt;/strong&gt; i a &lt;strong&gt;corregir errors&lt;/strong&gt; segons les vostres observacions.</string>
<string name="style_name_simple">Simple</string>
<string name="style_name_moon">Lluna</string>
<string name="style_name_sun">Sol</string>
<string name="style_name_light">Clar</string>
<string name="style_name_dark">Obscur</string>
</resources>

View File

@@ -59,7 +59,7 @@
<string name="entry_user_name">Uživatelské jméno</string>
<string name="error_arc4">Arcfour proudová šifra není podporována.</string>
<string name="error_can_not_handle_uri">KeePassDX nemůže zpracovat toto URI.</string>
<string name="error_file_not_create">Soubor se nepodařilo vytvořit</string>
<string name="error_file_not_create">Soubor se nepodařilo vytvořit.</string>
<string name="error_invalid_db">Databázi se nepodařilo přečíst.</string>
<string name="error_invalid_path">Ujistěte se, že je popis umístění správný.</string>
<string name="error_no_name">Zadejte název.</string>
@@ -266,7 +266,7 @@
<string name="html_text_ad_free">Na rozdíl od mnoha aplikací pro správu hesel je tato &lt;strong&gt;bez reklam&lt;/strong&gt;, je &lt;strong&gt;svobodný software pod copyleft licencí&lt;/strong&gt; a nesbírá žádné osobní údaje na svých serverech bez ohledu na to, jakou verzi používáte.</string>
<string name="html_text_buy_pro">Zakoupením varianty \"pro\" získáte přístup k tomuto &lt;strong&gt;vizuálnímu stylu&lt;/strong&gt; a hlavně pomůžete &lt;strong&gt;uskutečnění komunitních projektů.&lt;/strong&gt;</string>
<string name="html_text_feature_generosity">Tento &lt;strong&gt;vizuální styl&lt;/strong&gt; je k dispozici díky vaší štědrosti.</string>
<string name="html_text_donation">Pro zajištění svobody nás všech a pokračování aktivity počítáme s Vaším &lt;strong&gt;přispěním.&lt;/strong&gt;</string>
<string name="html_text_donation">&lt;strong&gt;Přispěním&lt;/strong&gt; projektu <i>(peněžně, kódem, překlady)</i> mu pomůžete žít a prosperovat a dostanete přístup k postupu odemčení &lt;strong&gt;motivů&lt;/strong&gt;.</string>
<string name="html_text_dev_feature">Tato funkce je &lt;strong&gt;ve vývoji&lt;/strong&gt; a potřebuje Váš &lt;strong&gt;příspěvek&lt;/strong&gt;, aby byla brzy k dispozici.</string>
<string name="html_text_dev_feature_buy_pro">Zakoupením &lt;strong&gt;pro&lt;/strong&gt; varianty,</string>
<string name="html_text_dev_feature_contibute">&lt;strong&gt;Podpořením vývoje&lt;/strong&gt;,</string>
@@ -487,7 +487,7 @@
<string name="save_mode">Uložit</string>
<string name="search_mode">Vyhledávání</string>
<string name="error_field_name_already_exists">Jméno kolonky již existuje.</string>
<string name="error_registration_read_only">Uložení nové položky v režimu databáze pouze pro čtení není dovoleno</string>
<string name="error_registration_read_only">Uložení nové položky v režimu databáze pouze pro čtení není dovoleno.</string>
<string name="enter">Enter</string>
<string name="backspace">Backspace</string>
<string name="select_entry">Vybrat záznam</string>
@@ -539,9 +539,9 @@
<string name="error_file_to_big">Soubor, který se pokoušíte nahrát, je příliš velký.</string>
<string name="content_description_otp_information">Info o jednorázovém heslu</string>
<string name="properties">Vlastnosti</string>
<string name="error_export_app_properties">Během exportu nastavení aplikace došlo k chybě</string>
<string name="error_export_app_properties">Během exportu nastavení aplikace došlo k chybě.</string>
<string name="success_export_app_properties">Nastavení aplikace byla exportována</string>
<string name="error_import_app_properties">Během importu nastavení aplikace došlo k chybě</string>
<string name="error_import_app_properties">Během importu nastavení aplikace došlo k chybě.</string>
<string name="success_import_app_properties">Nastavení aplikace byla importována</string>
<string name="description_app_properties">Vlastnosti KeePassDX pro správu aplikačních nastavení</string>
<string name="export_app_properties_summary">Vytvořte soubor pro export nastavení aplikace</string>
@@ -628,6 +628,7 @@
<string name="advanced_unlock_keystore_warning">Tato funkce uloží přihlašovací údaje v bezpečném úložišti klíčů Vašeho zařízení.
\n
\nV závislosti na implementaci nativního API operačního systému nemusí být plně funkční.
\n
\nOvěřte kompatibilitu a zabezpečení úložiště klíčů u výrobce svého zařízení a dodavatele operačního systému, jejž používáte.</string>
<string name="keyboard_previous_search_title">Panel hledání</string>
<string name="keyboard_previous_search_summary">Automaticky přepnout na předchozí klávesnici v panelu hledání</string>
@@ -648,12 +649,12 @@
<string name="html_about_privacy">&lt;strong&gt;Nenačítají se žádná uživatelská data&lt;/strong&gt;, tato aplikace se nespojuje s žádnými servery, pracuje pouze lokálně a plně respektuje soukromí uživatelů.</string>
<string name="hardware_key">Hardwarový klíč</string>
<string name="error_XML_malformed">XML chybný.</string>
<string name="error_challenge_already_requested">Výzva byla již vyžádána</string>
<string name="error_challenge_already_requested">Výzva byla již vyžádána.</string>
<string name="error_response_already_provided">Odpověď byla již poskytnuta.</string>
<string name="error_no_response_from_challenge">Odezvu nelze z výzvy obdržet.</string>
<string name="error_cancel_by_user">Zrušeno uživatelem.</string>
<string name="error_driver_required">Ovladač pro %1$s je nutný.</string>
<string name="error_unable_merge_database_kdb">Spojení z databáze V1 nelze provést.</string>
<string name="error_unable_merge_database_kdb">Nepodařilo se sloučit s databázovým souborem kdb.</string>
<string name="error_hardware_key_unsupported">Hardwarový klíč není podporován.</string>
<string name="error_empty_key">Klíč nemůže být prázdný.</string>
<string name="enable_screenshot_mode_title">Režim screenshotu</string>
@@ -689,4 +690,23 @@
<string name="education_validate_entry_summary">Nezapomeňte ověřit svůj vstup a uložit databázi.
\n
\nPokud je aktivované automatické uzamčení a zapomenete, že jste něco upravili, riskujete ztrátu dat.</string>
<string name="style_name_forest">Les</string>
<string name="style_name_divine">Božský</string>
<string name="style_name_classic">Klasický</string>
<string name="style_name_simple">Jednoduchý</string>
<string name="style_name_moon">Měsíc</string>
<string name="style_name_sun">Slunce</string>
<string name="style_name_reply">Reply</string>
<string name="style_name_kunzite">Kunzit</string>
<string name="style_name_follow_system">Podle systému</string>
<string name="style_name_light">Světlý</string>
<string name="style_name_dark">Tmavý</string>
<string name="warning_database_info_changed_options_read_only">Znovu načíst databázi s posledními změnami.</string>
<string name="nodes">Uzly</string>
<string name="generate_keyfile">Vygenerovat klíčový soubor</string>
<string name="recursive_number_entries_title">Rekurzivní počet záznamů</string>
<string name="recursive_number_entries_summary">Rekurzivně vypočítá počet záznamů ve skupině</string>
<string name="warning_large_keyfile">Nedoporučuje se přidávat velký klíčový soubor, mohlo by to zabránit otevření databáze.</string>
<string name="hide_templates_title">Skrýt šablony</string>
<string name="hide_templates_summary">Šablony nejsou zobrazeny</string>
</resources>

View File

@@ -42,7 +42,7 @@
<string name="decrypting_db">Dekrypterer databaseindhold…</string>
<string name="default_checkbox">Brug som standarddatabase</string>
<string name="digits">Cifre</string>
<string name="select_database_file">Åbn en eksisterende database</string>
<string name="select_database_file">Åbn eksisterende boks</string>
<string name="entry_accessed">Senest åbnet</string>
<string name="entry_cancel">Annuller</string>
<string name="entry_confpassword">Bekræft adgangskode</string>
@@ -58,7 +58,7 @@
<string name="entry_user_name">Brugernavn</string>
<string name="error_arc4">Arcfour stream cipher er ikke understøttet.</string>
<string name="error_can_not_handle_uri">Kunne ikke håndtere denne URI i KeePassDX.</string>
<string name="error_file_not_create">Kunne ikke oprette fil</string>
<string name="error_file_not_create">Kunne ikke oprette fil.</string>
<string name="error_invalid_db">Kunne ikke læse databasen.</string>
<string name="error_invalid_path">Sørg for, at stien er korrekt.</string>
<string name="error_no_name">Indtast et navn.</string>
@@ -193,18 +193,18 @@
<string name="lock">Lås</string>
<string name="lock_database_screen_off_title">Skærmlås</string>
<string name="lock_database_screen_off_summary">Lås databasen få sekunder efter at skærmen slukkes</string>
<string name="advanced_unlock">Avanceret oplåsning</string>
<string name="advanced_unlock">Enhedsoplåsning</string>
<string name="biometric_unlock_enable_title">Biometrisk oplåsning</string>
<string name="biometric_unlock_enable_summary">Giver mulighed for at scanne dine biometriske data 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 avanceret oplåsningsgenkendelse</string>
<string name="biometric_delete_all_key_summary">Slet alle krypteringsnøgler, der er relateret til oplåsningsgenkendelse</string>
<string name="unavailable_feature_text">Funktionen kunne ikke startes.</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>
<string name="assign_master_key">Tildel en hovednøgle</string>
<string name="create_keepass_file">Opret en ny database</string>
<string name="create_keepass_file">Opret ny boks</string>
<string name="recycle_bin_title">Brug af papirkurven</string>
<string name="recycle_bin_summary">Flyt grupper og poster til \"Papirkurv\" før sletning</string>
<string name="monospace_font_fields_enable_title">Feltskrifttype</string>
@@ -333,10 +333,10 @@
<string name="content_description_update_from_list">Opdater</string>
<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="menu_advanced_unlock_settings">Oplåsning af enhed</string>
<string name="biometric">Biometrisk</string>
<string name="biometric_auto_open_prompt_title">Prompt til automatisk åbning</string>
<string name="biometric_auto_open_prompt_summary">Spørg automatisk efter avanceret oplåsning, hvis databasen er konfigureret til at bruge det</string>
<string name="biometric_auto_open_prompt_summary">Anmod automatisk om oplåsning af enheden, hvis databasen er konfigureret til at bruge den</string>
<string name="enable">Aktivér</string>
<string name="disable">Deaktiver</string>
<string name="master_key">Hovednøgle</string>
@@ -365,7 +365,7 @@
<string name="contains_duplicate_uuid_procedure">Løs problemet ved at generere nye UUID\'er for dubletter og fortsætte\?</string>
<string name="database_opened">Database åbnet</string>
<string name="clipboard_explanation_summary">Kopier indtastningsfelter ved hjælp af enhedens udklipsholder</string>
<string name="advanced_unlock_explanation_summary">Brug avanceret oplåsning for at gøre det lettere at åbne en database</string>
<string name="advanced_unlock_explanation_summary">Brug enhedsoplåsning til at åbne en database nemmere</string>
<string name="database_data_compression_title">Datakomprimering</string>
<string name="database_data_compression_summary">Datakomprimering reducerer databasens størrelse</string>
<string name="max_history_items_title">Maksimalt antal</string>
@@ -441,7 +441,7 @@
<string name="autofill_application_id_blocklist_summary">Blokeringsliste der forhindrer automatisk udfyldning af apps</string>
<string name="autofill_application_id_blocklist_title">Blokeringsliste for applikation</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">Automatisk tastehandling</string>
<string name="keyboard_previous_fill_in_title">Skift tilbage</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">Skærm til databaselegitimationsoplysninger</string>
<string name="keyboard_change">Skift tastatur</string>
@@ -481,7 +481,7 @@
<string name="registration_mode">Registreringstilstand</string>
<string name="save_mode">Gem-tilstand</string>
<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="error_registration_read_only">Det er ikke tilladt at gemme et nyt element i en skrivebeskyttet database.</string>
<string name="content_description_credentials_information">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>
@@ -497,24 +497,24 @@
<string name="unit_kibibyte">KiB</string>
<string name="unit_byte">B</string>
<string name="download_canceled">Annulleret!</string>
<string name="education_advanced_unlock_title">Avanceret database-oplåsning</string>
<string name="education_advanced_unlock_title">Database-oplåsning</string>
<string name="autofill_inline_suggestions_keyboard">Forslag til autofyld tilføjet.</string>
<string name="select_entry">Vælg post</string>
<string name="back_to_previous_keyboard">Tilbage til forrige tastatur</string>
<string name="custom_fields">Brugerdefinerede felter</string>
<string name="advanced_unlock_delete_all_key_warning">Slet alle krypteringsnøgler relateret til avanceret oplåsningsgenkendelse\?</string>
<string name="advanced_unlock_tap_delete">Tryk for at slette avancerede oplåsningsnøgler</string>
<string name="advanced_unlock_delete_all_key_warning">Seletealle krypteringsnøgler relateret til enhedsoplåsningsgenkendelse?</string>
<string name="advanced_unlock_tap_delete">Tryk for at slette enhedens oplåsningsnøgler</string>
<string name="content">Indhold</string>
<string name="credential_before_click_advanced_unlock_button">Indtast adgangskoden, og klik derefter på denne knap.</string>
<string name="advanced_unlock_prompt_not_initialized">Kunne ikke initialisere avanceret oplåsningsprompt.</string>
<string name="advanced_unlock_scanning_error">Fejl ved avanceret oplåsning: %1$s</string>
<string name="advanced_unlock_not_recognized">Kunne ikke genkende aftryk til avanceret oplåsning</string>
<string name="advanced_unlock_invalid_key">Den avancerede oplåsningsnøgle kan ikke læses. Slet den og gentag proceduren for genkendelse af oplåsning.</string>
<string name="advanced_unlock_prompt_extract_credential_title">Åbn database med avanceret oplåsningsgenkendelse</string>
<string name="advanced_unlock_prompt_store_credential_title">Avanceret oplåsningsgenkendelse</string>
<string name="advanced_unlock_prompt_not_initialized">Kunne ikke initialisere oplåsningsprompt.</string>
<string name="advanced_unlock_scanning_error">Fejl ved oplåsning: %1$s</string>
<string name="advanced_unlock_not_recognized">Kunne ikke genkende aftryk til oplåsning</string>
<string name="advanced_unlock_invalid_key">Oplåsningsnøgle kan ikke læses. Slet den og gentag proceduren for genkendelse af oplåsning.</string>
<string name="advanced_unlock_prompt_extract_credential_title">Enhedsoplåsningsgenkendelse</string>
<string name="advanced_unlock_prompt_store_credential_title">Link til enhedsoplåsning</string>
<string name="warning_database_info_changed_options">Flet data, overskriv de eksterne ændringer ved at gemme databasen eller genindlæs den med de seneste ændringer.</string>
<string name="warning_database_info_changed">Oplysningerne i databasefilen er blevet ændret uden for appen.</string>
<string name="menu_keystore_remove_key">Slet avanceret oplåsningsnøgle</string>
<string name="menu_keystore_remove_key">Slet enheds oplåsningsnøgle</string>
<string name="menu_reload_database">Genindlæs data</string>
<string name="error_duplicate_file">Fildataene findes allerede.</string>
<string name="error_upload_file">Der opstod en fejl under overførsel af fildataene.</string>
@@ -522,35 +522,35 @@
<string name="error_rebuild_list">Listen kan ikke genopbygges korrekt.</string>
<string name="error_database_uri_null">Database-URI kan ikke hentes.</string>
<string name="content_description_otp_information">Oplysninger om engangsadgangskode</string>
<string name="advanced_unlock_prompt_extract_credential_message">Udtræk database legitimationsoplysninger med avancerede oplåsningdata</string>
<string name="advanced_unlock_prompt_store_credential_message">Du skal stadig huske din primære legitimationsoplysning, hvis du bruger avanceret oplåsningsgenkendelse.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Udtræk databases legitimationsoplysninger med enheds oplåsningdata</string>
<string name="advanced_unlock_prompt_store_credential_message">Du skal stadig huske din boks primære legitimationsoplysning, hvis du bruger oplåsningsgenkendelse på enheden.</string>
<string name="warning_database_revoked">Adgang til filen tilbagekaldt af filhåndteringsprogrammet, luk databasen og genåbn den fra dens placering.</string>
<string name="error_start_database_action">Der opstod en fejl under udførelsen af en handling på databasen.</string>
<string name="error_remove_file">Der opstod en fejl under fjernelsen af fildata.</string>
<string name="error_otp_type">Den existerende OTP-type kunne ikke genkendes. Det kan være, at dens validering ikke længere genererer token korrekt.</string>
<string name="education_advanced_unlock_summary">Sammenkæd din adgangskode med din scannede biometriske data eller enhedens legitimationsoplysninger for hurtigt at låse din database op.</string>
<string name="enter">Enter</string>
<string name="temp_advanced_unlock_timeout_summary">Varigheden af avanceret oplåsning, før indholdet slettes</string>
<string name="temp_advanced_unlock_timeout_summary">Varigheden af oplåsning, før indholdet slettes</string>
<string name="device_credential_unlock_enable_summary">Giver dig mulighed for at bruge dine enhedsoplysninger til at åbne databasen</string>
<string name="device_credential_unlock_enable_title">Oplåsning via enhedsoplysninger</string>
<string name="autofill_inline_suggestions_summary">Forsøg at vise forslag til automatisk udfyldning direkte fra et kompatibelt tastatur</string>
<string name="autofill_inline_suggestions_title">Indbyggede forslag</string>
<string name="backspace">Tilbagetast</string>
<string name="advanced_unlock_timeout">Tidsudløb for avanceret oplåsning</string>
<string name="temp_advanced_unlock_timeout_title">Udløb af avanceret oplåsning</string>
<string name="temp_advanced_unlock_enable_summary">Gem ikke krypteret indhold for at bruge avanceret oplåsning</string>
<string name="temp_advanced_unlock_enable_title">Midlertidig avanceret oplåsning</string>
<string name="advanced_unlock_timeout">Tidsudløb for oplåsning</string>
<string name="temp_advanced_unlock_timeout_title">Udløb af oplåsning af enhed</string>
<string name="temp_advanced_unlock_enable_summary">Gem ikke krypteret indhold for at bruge enhedsoplåsning</string>
<string name="temp_advanced_unlock_enable_title">Midlertidig oplåsning af enhed</string>
<string name="device_credential">Enhedens legitimation</string>
<string name="properties">Egenskaber</string>
<string name="error_export_app_properties">Fejl under eksport af app-egenskaber</string>
<string name="success_export_app_properties">App-egenskaber eksporteret</string>
<string name="error_import_app_properties">Fejl under importering af app-egenskaber</string>
<string name="success_import_app_properties">App-egenskaber importeret</string>
<string name="error_export_app_properties">Fejl under eksport af app-indstillinger.</string>
<string name="success_export_app_properties">App-indstillinger eksporteret</string>
<string name="error_import_app_properties">Fejl under importering af app-indstillinger.</string>
<string name="success_import_app_properties">App-indstillinger importeret</string>
<string name="description_app_properties">KeePassDX-egenskaber til at administrere app-indstillinger</string>
<string name="export_app_properties_summary">Opret en fil for at eksportere app-egenskaber</string>
<string name="export_app_properties_title">Eksporter app-egenskaber</string>
<string name="import_app_properties_summary">Vælg en fil for at importere app-egenskaber</string>
<string name="import_app_properties_title">Importer app-egenskaber</string>
<string name="export_app_properties_summary">Opret en fil for at eksportere app-indstillinger</string>
<string name="export_app_properties_title">Eksporter app-indstillinger</string>
<string name="import_app_properties_summary">Vælg en fil for at importere app-indstillinger</string>
<string name="import_app_properties_title">Importér app-indstillinger</string>
<string name="error_move_group_here">Du kan ikke flytte en gruppe hertil.</string>
<string name="error_word_reserved">Dette ord er reserveret og kan ikke bruges.</string>
<string name="expired">Udløbet</string>
@@ -591,7 +591,7 @@
<string name="permission">Tilladelse</string>
<string name="templates_group_uuid_title">Skabelongruppe</string>
<string name="autofill_manual_selection_title">Manuelt valg</string>
<string name="enable_keep_screen_on_summary">Hold skærmen tændt, når du ser på posten</string>
<string name="enable_keep_screen_on_summary">Hold skærmen tændt, når du ser eller redigere et indlæg</string>
<string name="enable_keep_screen_on_title">Hold skærmen tændt</string>
<string name="keyboard_previous_search_title">Søgeskærm</string>
<string name="keyboard_previous_search_summary">Skift automatisk tilbage til det tidligere tastatur på søgeskærmen</string>
@@ -610,7 +610,7 @@
<string name="error_location_unknown">Databaseplacering er ukendt, databasehandling kan ikke udføres.</string>
<string name="error_hardware_key_unsupported">Hardwarenøgle er ikke understøttet.</string>
<string name="error_empty_key">Nøglen må ikke være tom.</string>
<string name="error_challenge_already_requested">Der er allerede anmodet om udfordring</string>
<string name="error_challenge_already_requested">Der er allerede anmodet om udfordring.</string>
<string name="error_no_response_from_challenge">Kan ikke få svaret fra udfordringen.</string>
<string name="show_otp_token_title">Vis OTP-token</string>
<string name="remember_hardware_key_title">Husk hardwarenøgler</string>
@@ -645,8 +645,8 @@
<string name="templates_group_enable_summary">Brug dynamiske skabeloner til at udfylde felterne i en post</string>
<string name="advanced_unlock_keystore_warning">Denne funktion gemmer krypterede legitimationsdata i den sikre KeyStore på din enhed.
\n
\nAfhængigt af operativsystemets indbyggede API-implementering er den muligvis ikke fuldt funktionel.
\nKontroller KeyStore\'s kompatibilitet og sikkerhed med producenten af din enhed og skaberen af den ROM, du bruger.</string>
\nAfhængigt af operativsystemets indbyggede API-implementering er funktionen muligvis ikke fuldt funktionsdygtig.
\nKontroller kompatibiliteten og sikkerheden af KeyStore med producenten af din enhed og skaberen af den ROM, du bruger.</string>
<string name="entropy">Entropi: %1$s bit</string>
<string name="consider_chars_filter">Overvej tegn</string>
<string name="html_about_privacy">&lt;strong&gt;Der hentes ingen brugerdata&lt;/strong&gt;, denne applikation opretter ikke forbindelse til nogen server, kører kun lokalt og respekterer fuldt ud brugernes privatliv.</string>
@@ -667,4 +667,38 @@
<string name="bank_identifier_code">SWIFT/BIC</string>
<string name="secure_note">Sikker note</string>
<string name="show_entry_colors_title">Postfarver</string>
<string name="unlock">Lås op</string>
<string name="master_key_settings_summary">Ændring, fornyelse</string>
<string name="info">Info</string>
<string name="ask">Spørg</string>
<string name="menu_form_filling_settings_summary">Tastatur, autofyld, udklipsholder</string>
<string name="configure">Konfigurér</string>
<string name="menu_security_settings_summary">Kryptering, Nøgleafledningsfunktion</string>
<string name="menu_advanced_unlock_settings_summary">Biometri, enhedens legitimation</string>
<string name="warning_database_notification_permission">Meddelelsestilladelsen giver dig mulighed for at vise status for databasen og låse den med en let tilgængelig knap.
\n
\nHvis du ikke aktiverer denne tilladelse, vil den database, der er åben i baggrunden, ikke være synlig, hvis et andet program er i forgrunden.</string>
<string name="unlock_and_link_biometric">Link til oplåsning af enhed</string>
<string name="warning_copy_permission">Meddelelsestilladelsen er nødvendig for at bruge udklipsholderens meddelelsesfunktion.</string>
<string name="menu_database_settings_summary">Metadata, papirkurven, skabeloner, historik</string>
<string name="merge_success">Sammenfletning gennemført</string>
<string name="menu_app_settings_summary">Søg, lås, historik, egenskaber</string>
<string name="later">Senere</string>
<string name="menu_appearance_settings_summary">Temaer, farver, attributter</string>
<string name="style_name_forest">Skov</string>
<string name="style_name_divine">Guddommelig</string>
<string name="style_name_classic">Klassisk</string>
<string name="style_name_light">Lys</string>
<string name="style_name_dark">Mørk</string>
<string name="education_validate_entry_title">Bekræft ændring</string>
<string name="warning_database_info_changed_options_read_only">Genindlæs databasen med de seneste ændringer.</string>
<string name="education_validate_entry_summary">Husk at validere dine indtastede data og sikre, at din database er gemt.
\n
\nHvis en automatisk lås aktiveres uden, at ændringerne er blevet gemt, kan det resultere i tab af data.</string>
<string name="style_name_simple">Simpel</string>
<string name="style_name_moon">Måne</string>
<string name="style_name_sun">Sol</string>
<string name="style_name_reply">Besvar</string>
<string name="style_name_kunzite">Kunzite</string>
<string name="style_name_follow_system">Følg systemets tilstand</string>
</resources>

View File

@@ -23,7 +23,7 @@
--><resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="contact">Kontakt</string>
<string name="contribution">Beiträge</string>
<string name="feedback">Rückmeldung</string>
<string name="feedback">Feedback</string>
<string name="homepage">Webseite</string>
<string name="about_description">Android-Implementierung des Passwortmanagers KeePass</string>
<string name="accept">Akzeptieren</string>
@@ -36,10 +36,10 @@
<string name="menu_app_settings">App-Einstellungen</string>
<string name="brackets">Klammern</string>
<string name="file_manager_install_description">Zum Erstellen, Öffnen und Speichern von Datenbankdateien wird ein Dateimanager benötigt, der die beabsichtigte Aktion ACTION_CREATE_DOCUMENT und ACTION_OPEN_DOCUMENT akzeptiert.</string>
<string name="clipboard_cleared">Zwischenablage geleert</string>
<string name="clipboard_cleared">Zwischenablage gelöscht</string>
<string name="clipboard_error_title">Zwischenablage-Fehler</string>
<string name="clipboard_error">Einige Geräte lassen keine Nutzung der Zwischenablage durch Apps zu.</string>
<string name="clipboard_error_clear">Leeren der Zwischenablage fehlgeschlagen</string>
<string name="clipboard_error_clear">Löschen der Zwischenablage fehlgeschlagen</string>
<string name="clipboard_timeout">Zwischenablage-Inaktivitätszeit</string>
<string name="clipboard_timeout_summary">Speicherdauer in der Zwischenablage (falls vom Gerät unterstützt)</string>
<string name="select_to_copy">%1$s in die Zwischenablage kopieren</string>
@@ -48,12 +48,12 @@
<string name="decrypting_db">Datenbankinhalt wird entschlüsselt </string>
<string name="default_checkbox">Als Standarddatenbank verwenden</string>
<string name="digits">Stellen</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>
<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>
<string name="html_about_contribution">Damit wir &lt;strong&gt;unsere Unabhängigkeit erhalten&lt;/strong&gt;, &lt;strong&gt;Fehler beheben&lt;/strong&gt;, &lt;strong&gt;Funktionen hinzufügen&lt;/strong&gt; und &lt;strong&gt;weiterhin aktiv bleiben&lt;/strong&gt; können, zählen wir auf deinen &lt;strong&gt;Beitrag&lt;/strong&gt;.</string>
<string name="select_database_file">Vorhandene Datenbank öffnen</string>
<string name="entry_accessed">Letzter Zugriff</string>
<string name="entry_cancel">Abbrechen</string>
<string name="entry_notes">Notizen</string>
<string name="entry_notes">Hinweise</string>
<string name="entry_confpassword">Passwort bestätigen</string>
<string name="entry_created">Erstellt</string>
<string name="entry_expires">Gültig bis</string>
@@ -64,12 +64,12 @@
<string name="save">Speichern</string>
<string name="entry_title">Titel</string>
<string name="entry_url">URL</string>
<string name="entry_user_name">Nutzername</string>
<string name="entry_user_name">Benutzername</string>
<string name="error_arc4">Die RC4/Arcfour-Stromverschlüsselung wird nicht unterstützt.</string>
<string name="error_can_not_handle_uri">KeePassDX kann diese URI-Adresse nicht verarbeiten.</string>
<string name="error_file_not_create">Datei konnte nicht erstellt werden</string>
<string name="error_file_not_create">Datei konnte nicht erstellt werden.</string>
<string name="error_invalid_db">Datenbank nicht lesbar.</string>
<string name="error_invalid_path">Stelle sicher, dass der Pfad korrekt ist.</string>
<string name="error_invalid_path">Bitte sicherstellen, dass der Pfad korrekt ist.</string>
<string name="error_no_name">Namen eingeben.</string>
<string name="error_nokeyfile">Schlüsseldatei auswählen.</string>
<string name="error_out_of_memory">Zu wenig Speicher, um die gesamte Datenbank zu laden.</string>
@@ -80,7 +80,7 @@
<string name="error_wrong_length">Gib eine positive ganze Zahl in das Feld „Länge“ ein.</string>
<string name="field_name">Feldname</string>
<string name="field_value">Feldwert</string>
<string name="file_not_found_content">Datei nicht gefunden. Versuche sie über den Dateimanager zu öffnen.</string>
<string name="file_not_found_content">Datei nicht gefunden. Bitte versuchen, sie über den Dateimanager zu öffnen.</string>
<string name="file_browser">Dateimanager</string>
<string name="generate_password">Passwort generieren</string>
<string name="hint_conf_pass">Passwort bestätigen</string>
@@ -124,7 +124,7 @@
<string name="progress_title">Bearbeitung läuft </string>
<string name="protection">Schutz</string>
<string name="read_only">Schreibgeschützt</string>
<string name="read_only_warning">Abhängig von deinem Dateienmanager hat KeePassDX möglicherweise keine Schreibberechtigung.</string>
<string name="read_only_warning">Abhängig vom Dateimanager hat KeePassDX möglicherweise keine Schreibberechtigung.</string>
<string name="content_description_remove_from_list">Entfernen</string>
<string name="root">Start</string>
<string name="rounds">Verschlüsselungsrunden</string>
@@ -174,7 +174,7 @@
<string name="unavailable">Nicht vorhanden</string>
<string name="encryption">Verschlüsselung</string>
<string name="key_derivation_function">Schlüsselableitungsfunktion</string>
<string name="extended_ASCII">Erweiterte ASCII</string>
<string name="extended_ASCII">Erweiterter ASCII</string>
<string name="allow">Erlauben</string>
<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>
@@ -184,20 +184,20 @@
<string name="memory_usage">Arbeitsspeichernutzung</string>
<string name="memory_usage_explanation">Arbeitsspeicher, der für die Schlüsselableitung gebraucht wird.</string>
<string name="parallelism">Parallelisierung</string>
<string name="parallelism_explanation">Grad der Parallelisierung (d.h. Anzahl der Threads), der für die Schlüsselableitung genutzt wird.</string>
<string name="parallelism_explanation">Grad der Parallelisierung (d. h. Anzahl der Threads), der für die Schlüsselableitung genutzt wird.</string>
<string name="sort_menu">Sortieren</string>
<string name="sort_ascending">Aufsteigend ↓</string>
<string name="sort_groups_before">Gruppen oben</string>
<string name="sort_recycle_bin_bottom">Papierkorb unten</string>
<string name="sort_title">Titel</string>
<string name="sort_username">Nutzername</string>
<string name="sort_username">Benutzername</string>
<string name="sort_creation_time">Erstellungsdatum</string>
<string name="sort_last_modify_time">Änderungsdatum</string>
<string name="sort_last_access_time">Zugriffsdatum</string>
<string name="autofill">Automatisches Ausfüllen</string>
<string name="autofill_service_name">KeePassDX Auto-Formularausfüllung</string>
<string name="autofill_sign_in_prompt">Mit KeePassDX anmelden</string>
<string name="set_autofill_service_title">Standard Autofill-Service festlegen</string>
<string name="set_autofill_service_title">Standard-Autofill-Service festlegen</string>
<string name="autofill_explanation_summary">Automatisches Ausfüllen aktivieren, um Formulare in anderen Apps schnell auszufüllen</string>
<string name="autofill_select_entry">Eintrag auswählen </string>
<string name="clipboard">Zwischenablage</string>
@@ -224,19 +224,19 @@
<string name="reset_education_screens_summary">Alle Hilfsinfos nochmal anzeigen</string>
<string name="reset_education_screens_text">Hilfeanzeige zurückgesetzt</string>
<string name="education_create_database_title">Datenbankdatei erstellen</string>
<string name="education_create_database_summary">Erstellt eine erste Datei zur Passwortverwaltung.</string>
<string name="education_create_database_summary">Erste Datei zur Passwortverwaltung erstellen.</string>
<string name="education_select_database_title">Existierende Datenbank öffnen</string>
<string name="education_select_database_summary">Öffnet über den Dateimanager eine früher erstellte Datenbankdatei, um sie weiter zu verwenden.</string>
<string name="education_select_database_summary">Öffnet über den Dateimanager eine früher erstellte Datenbankdatei, um sie weiterzuverwenden.</string>
<string name="education_new_node_title">Datenbankelemente hinzufügen</string>
<string name="education_new_node_summary">Einträge helfen dabei digitale Konten zu verwalten.
<string name="education_new_node_summary">Einträge helfen, digitale Konten zu verwalten.
\n
\nGruppen/Ordner gliedern Einträge in der Datenbank.</string>
<string name="education_search_title">Einträge durchsuchen</string>
<string name="education_search_summary">Titel, Nutzernamen oder Inhalte anderer Felder eingeben, um Passwörter zu finden.</string>
<string name="education_search_summary">Titel, Benutzernamen oder Inhalt anderer Felder eingeben, um Passwörter zu finden.</string>
<string name="education_entry_edit_title">Eintrag bearbeiten</string>
<string name="education_entry_edit_summary">Dem Eintrag eigene Felder hinzufügen. Die Felder können mit Querverweisen aus anderen Einträgen ergänzt werden.</string>
<string name="education_generate_password_title">Ein starkes Passwort erstellen</string>
<string name="education_generate_password_summary">Lassen Sie ein starkes Passwort erstellen, das mit Ihrem Eintrag verbunden wird, legen Sie es einfach anhand von Formularkriterien fest und vergessen Sie nicht Ihr Passwort zu sichern.</string>
<string name="education_generate_password_summary">Ein starkes Passwort, das mit dem Eintrag verbunden wird, kann einfach anhand von Formularkriterien festgelegt werden und bitte nicht vergessen dieses Passwort zu sichern.</string>
<string name="education_entry_new_field_title">Eigene Felder hinzufügen</string>
<string name="education_entry_new_field_summary">Ein zusätzliches Feld einfügen, einen Wert hinzufügen und diesen optional schützen.</string>
<string name="education_unlock_title">Datenbank entsperren</string>
@@ -250,10 +250,10 @@
<string name="education_sort_summary">Wählen, wie Einträge und Gruppen sortiert werden.</string>
<string name="education_donation_title">Mitmachen</string>
<string name="education_donation_summary">Mithelfen, um Stabilität und Sicherheit zu verbessern sowie weitere Funktionen zu ermöglichen.</string>
<string name="html_text_ad_free">Anders als viele Passwortmanager ist dieser &lt;strong&gt;werbefrei&lt;/strong&gt;, &lt;strong&gt;quelloffen&lt;/strong&gt;, &lt;strong&gt;freie Copyleft-Software&lt;/strong&gt; und keine persönlichen Daten werden auf Servern gesammelt, egal welche Version du verwendest.</string>
<string name="html_text_ad_free">Anders als viele Passwortmanager ist dieser &lt;strong&gt;werbefrei&lt;/strong&gt;, &lt;strong&gt;quelloffen&lt;/strong&gt;, &lt;strong&gt;freie Copyleft-Software&lt;/strong&gt; und keine persönlichen Daten werden auf Servern gesammelt, egal welche Version man verwendet.</string>
<string name="html_text_buy_pro">Mit dem Kauf der Pro-Version erhältst du Zugriff auf diesen &lt;strong&gt;visuellen Stil&lt;/strong&gt; und unterstützt 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; ist dank deiner Großzügigkeit verfügbar.</string>
<string name="html_text_donation">Um unsere Freiheit zu erhalten und stets aktiv zu bleiben, zählen wir auf deinen &lt;strong&gt;Beitrag.&lt;/strong&gt;</string>
<string name="html_text_donation">Mit &lt;strong&gt;Beitragen&lt;/strong&gt; zum Projekt <i>(finanziell, Code, Übersetzung)</i> wird sichergestellt, dass es weiterlebt und gedeiht, und außerdem berechtigt das für den Vorgang der &lt;strong&gt;Design&lt;/strong&gt;-Freischaltung.</string>
<string name="html_text_dev_feature">Diese Funktion ist &lt;strong&gt;in Entwicklung&lt;/strong&gt; und erfordert &lt;strong&gt;deinen Beitrag&lt;/strong&gt;, um bald verfügbar zu sein.</string>
<string name="html_text_dev_feature_buy_pro">Durch den Kauf der &lt;strong&gt;Pro-Version&lt;/strong&gt;,</string>
<string name="html_text_dev_feature_contibute">Durch deinen &lt;strong&gt;Beitrag&lt;/strong&gt;,</string>
@@ -286,9 +286,9 @@
\nMit „Änderbar“ lässt sich jedes Element frei bearbeiten, hinzufügen oder löschen.</string>
<string name="edit_entry">Eintrag bearbeiten</string>
<string name="error_load_database">Die Datenbank konnte 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>
<string name="list_entries_show_username_title">Nutzernamen anzeigen</string>
<string name="list_entries_show_username_summary">Nutzernamen in Liste anzeigen</string>
<string name="error_load_database_KDF_memory">Laden des Schlüssels fehlgeschlagen. Bitte versuchen, die „Arbeitsspeichernutzung“ der Schlüsselableitungsfunktion zu verringern.</string>
<string name="list_entries_show_username_title">Benutzernamen anzeigen</string>
<string name="list_entries_show_username_summary">Benutzernamen in Eintragslisten anzeigen</string>
<string name="build_label">Build %1$s</string>
<string name="keyboard_name">Magikeyboard</string>
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
@@ -318,7 +318,7 @@
<string name="hide_broken_locations_title">Defekte Datenbankverknüpfungen ausblenden</string>
<string name="hide_broken_locations_summary">Defekte Verknüpfungen in der Liste der zuletzt verwendeten Datenbanken ausblenden</string>
<string name="do_not_kill_app">App nicht beenden </string>
<string name="lock_database_back_root_summary">Datenbank sperren, wenn im Wurzelordner die Zurück-Taste gedrückt wird</string>
<string name="lock_database_back_root_summary">Datenbank sperren, wenn auf dem Hauptbildschirm die Taste „Zurück“ gedrückt wird</string>
<string name="clear_clipboard_notification_title">Beim Schließen löschen</string>
<string name="recycle_bin">Papierkorb</string>
<string name="keyboard_selection_entry_title">Eintragsauswahl</string>
@@ -382,7 +382,7 @@
<string name="menu_security_settings">Sicherheitseinstellungen</string>
<string name="menu_master_key_settings">Hauptschlüsseleinstellungen</string>
<string name="contains_duplicate_uuid">Die Datenbank enthält doppelte UUIDs.</string>
<string name="contains_duplicate_uuid_procedure">Problem lösen, indem neue UUIDs für Duplikate generiert werden um fortzufahren\?</string>
<string name="contains_duplicate_uuid_procedure">Problem lösen, indem neue UUIDs für Duplikate generiert werden, um fortzufahren?</string>
<string name="database_opened">Datenbank geöffnet</string>
<string name="clipboard_explanation_summary">Eintragsfelder mit der Zwischenablage des Geräts kopieren</string>
<string name="advanced_unlock_explanation_summary">Geräteentsperrung verwenden, um eine Datenbank einfacher zu öffnen</string>
@@ -393,12 +393,12 @@
<string name="max_history_size_title">Maximale Größe</string>
<string name="max_history_size_summary">Verlaufsumfang pro Eintrag begrenzen</string>
<string name="settings_database_recommend_changing_master_key_title">Passwortänderung empfehlen</string>
<string name="settings_database_recommend_changing_master_key_summary">(Nach Tagen) Ändern des Hauptschlüssels empfehlen</string>
<string name="settings_database_recommend_changing_master_key_summary">Ändern des Hauptschlüssels empfehlen (Tage)</string>
<string name="settings_database_force_changing_master_key_title">Passwortänderung erzwingen</string>
<string name="settings_database_force_changing_master_key_summary">Ändern des Hauptschlüssels erforderlich (Tage)</string>
<string name="settings_database_force_changing_master_key_next_time_title">Änderung nächstes Mal erzwingen</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Ändern des Hauptschlüssels beim nächsten Mal erfordern (einmalig)</string>
<string name="database_default_username_title">Standardnutzername</string>
<string name="database_default_username_title">Standardbenutzername</string>
<string name="database_custom_color_title">Eigene Datenbankfarbe</string>
<string name="compression">Komprimierung</string>
<string name="compression_none">Keine</string>
@@ -434,10 +434,10 @@
<string name="style_name_moon">Mond</string>
<string name="style_name_sun">Sonne</string>
<string name="style_name_reply">Antwort</string>
<string name="style_name_kunzite">Kunzite</string>
<string name="style_name_follow_system">System verfolgen</string>
<string name="style_name_kunzite">Kunzit</string>
<string name="style_name_follow_system">System folgen</string>
<string name="warning_database_read_only">Schreibrechte gewähren, um Datenbankänderungen zu speichern</string>
<string name="education_setup_OTP_summary">Einmal-Passwortverwaltung (HOTP/TOTP) einrichten, um Token für Zwei-Faktor-Authentifizierung (2FA) zu generieren.</string>
<string name="education_setup_OTP_summary">Einmal-Passwortverwaltung (HOTP/TOTP) einrichten, um Token für Zwei-Faktor-Authentifizierung (2FA) zu erzeugen.</string>
<string name="education_setup_OTP_title">OTP einrichten</string>
<string name="error_create_database">Die Datenbankdatei kann nicht erstellt werden.</string>
<string name="entry_add_attachment">Anhang hinzufügen</string>
@@ -448,7 +448,7 @@
<string name="autofill_manual_selection_summary">Option zur manuellen Auswahl des Datenbankeintrags anzeigen</string>
<string name="lock_database_show_button_summary">Zeigt die Sperrtaste in der Benutzeroberfläche an</string>
<string name="lock_database_show_button_title">Sperrtaste anzeigen</string>
<string name="autofill_preference_title">Autofüll-Einstellungen</string>
<string name="autofill_preference_title">Einstellungen für automatisches Ausfüllen</string>
<string name="warning_database_link_revoked">Zugriff auf die Datei durch den Dateimanager widerrufen</string>
<string name="error_label_exists">Diese Bezeichnung existiert bereits.</string>
<string name="autofill_block_restart">Die das Formular enthaltende App neu starten, um die Sperrung zu aktivieren.</string>
@@ -463,7 +463,7 @@
<string name="content_description_add_item">Element hinzufügen</string>
<string name="filter">Filter</string>
<string name="keyboard_change">Tastatur wechseln</string>
<string name="keyboard_previous_fill_in_title">Zurück wechseln</string>
<string name="keyboard_previous_fill_in_title">Zurückwechseln</string>
<string name="keyboard_previous_database_credentials_title">Datenbank-Anmeldebildschirm</string>
<string name="keyboard_previous_fill_in_summary">Nach dem Ausführen der automatischen Tastenaktion automatisch zur vorherigen Tastatur wechseln</string>
<string name="keyboard_previous_database_credentials_summary">Auf dem Datenbank-Anmeldebildschirm automatisch zur vorherigen Tastatur wechseln</string>
@@ -476,16 +476,16 @@
<string name="warning_sure_remove_data">Diese Daten trotzdem entfernen\?</string>
<string name="warning_remove_unlinked_attachment">Das Entfernen nicht verknüpfter Daten kann die Größe der Datenbank reduzieren, allerdings auch Daten löschen, die von KeePass-Plugins genutzt werden.</string>
<string name="warning_replace_file">Das Hinzufügen dieser Datei wird die bestehende Datei ersetzen.</string>
<string name="warning_file_too_big">Eine KeePass-Datenbank soll nur kleine Dateien beinhalten (wie z.B. PGP-Schlüsseldateien).
<string name="warning_file_too_big">Eine KeePass-Datenbank soll nur kleine Dateien beinhalten (wie z. B. PGP-Schlüsseldateien).
\n
\nDeine Datenbank könnte mit diesem Anhang sehr groß und leistungsschwach werden.</string>
\nMit diesem Anhang könnte die Datenbank sehr groß werden und damit die Leistung beeinträchtigen.</string>
<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">Datei trotzdem hinzufügen\?</string>
<string name="show_uuid_summary">Zeigt die mit einem Eintrag oder einer Gruppe verknüpfte UUID an</string>
<string name="show_uuid_title">UUID anzeigen</string>
<string name="autofill_read_only_save">Daten speichern ist bei schreibgeschützt geöffneter Datenbank nicht möglich.</string>
<string name="autofill_read_only_save">Das Speichern von Daten ist bei einer schreibgeschützt geöffneten Datenbank nicht möglich.</string>
<string name="autofill_close_database_title">Datenbank schließen</string>
<string name="keyboard_previous_lock_summary">Nach dem Sperren der Datenbank automatisch zur vorherigen Tastatur wechseln</string>
<string name="keyboard_previous_lock_title">Datenbank sperren</string>
@@ -495,8 +495,8 @@
<string name="registration_mode">Registrierungsmodus</string>
<string name="save_mode">Speichermodus</string>
<string name="search_mode">Suchmodus</string>
<string name="error_registration_read_only">Speichern eines neuen Elements in einer schreibgeschützten Datenbank ist unzulässig</string>
<string name="autofill_save_search_info_summary">Bei manueller Eintragsauswahl Suchinformationen speichern, für leichtere zukünftige Verwendung</string>
<string name="error_registration_read_only">Speichern eines neuen Elements in einer schreibgeschützten Datenbank ist unzulässig.</string>
<string name="autofill_save_search_info_summary">Bei manueller Eintragsauswahl Suchinformationen speichern, um sie später leichter verwenden zu können</string>
<string name="autofill_ask_to_save_data_summary">Fragen, ob Daten nach Formularausfüllung gespeichert werden sollen</string>
<string name="autofill_ask_to_save_data_title">Speichern von Daten abfragen</string>
<string name="autofill_save_search_info_title">Suchinformationen speichern</string>
@@ -511,7 +511,7 @@
<string name="education_advanced_unlock_summary">Eigenes Passwort mit Biometrie- oder Geräteanmeldedaten verknüpfen, um die Datenbank schnell zu entsperren.</string>
<string name="education_advanced_unlock_title">Geräteentsperrung der Datenbank</string>
<string name="advanced_unlock_timeout">Zeitlimit für Geräteentsperrung</string>
<string name="temp_advanced_unlock_timeout_summary">Dauer der Geräteentsperrung bis sie zurückgesetzt wird</string>
<string name="temp_advanced_unlock_timeout_summary">Dauer der Geräteentsperrung, bis sie zurückgesetzt wird</string>
<string name="temp_advanced_unlock_timeout_title">Ablauf der Geräteentsperrung</string>
<string name="temp_advanced_unlock_enable_summary">Bei Nutzung der Geräteentsperrung keine verschlüsselten Inhalte speichern</string>
<string name="temp_advanced_unlock_enable_title">Zeitlich begrenzte Geräteentsperrung</string>
@@ -544,12 +544,12 @@
<string name="error_upload_file">Beim Hochladen der Datei ist ein Fehler aufgetreten.</string>
<string name="import_app_properties_title">App-Einstellungen importieren</string>
<string name="error_start_database_action">Beim Ausführen einer Aktion in der Datenbank ist ein Fehler aufgetreten.</string>
<string name="error_otp_type">Der vorhandene OTP-Typ wird von diesem Formular nicht erkannt, seine Validierung erzeugt Token möglicherweise nicht mehr korrekt.</string>
<string name="error_otp_type">Der vorhandene OTP-Typ wird von diesem Formular nicht erkannt, seine Validierung kann Token möglicherweise nicht mehr korrekt erzeugen.</string>
<string name="content_description_otp_information">Informationen zu Einmalpasswörtern</string>
<string name="warning_database_revoked">Auf die Datei kann nicht zugegriffen werden. Schließe die Datenbank und öffne sie von ihrem Speicherort erneut.</string>
<string name="error_export_app_properties">Fehler beim Exportieren der App-Einstellungen</string>
<string name="warning_database_revoked">Auf die Datei kann nicht zugegriffen werden. Bitte die Datenbank schließen und von ihrem Speicherort aus erneut öffnen.</string>
<string name="error_export_app_properties">Fehler beim Exportieren der App-Einstellungen.</string>
<string name="success_export_app_properties">App-Einstellungen exportiert</string>
<string name="error_import_app_properties">Fehler beim Importieren der App-Einstellungen</string>
<string name="error_import_app_properties">Fehler beim Importieren der App-Einstellungen.</string>
<string name="success_import_app_properties">App-Einstellungen importiert</string>
<string name="export_app_properties_summary">Datei zum Exportieren von App-Einstellungen erstellen</string>
<string name="export_app_properties_title">App-Einstellungen exportieren</string>
@@ -566,13 +566,13 @@
<string name="unit_kibibyte">KiB</string>
<string name="unit_byte">B</string>
<string name="download_canceled">Abgebrochen!</string>
<string name="autofill_inline_suggestions_keyboard">Autofüll-Vorschläge hinzugefügt.</string>
<string name="autofill_inline_suggestions_summary">Falls möglich, Autofüll-Vorschläge direkt auf kompatibler Tastatur anzeigen</string>
<string name="autofill_inline_suggestions_keyboard">Vorschläge zum automatischen Ausfüllen hinzugefügt.</string>
<string name="autofill_inline_suggestions_summary">Falls möglich, Vorschläge zum automatischen Ausfüllen direkt auf kompatibler Tastatur anzeigen</string>
<string name="properties">Eigenschaften</string>
<string name="description_app_properties">KeePassDX-Eigenschaften zur Verwaltung der App-Einstellungen</string>
<string name="secure_note">Sicherer Hinweis</string>
<string name="type">Typ</string>
<string name="date_of_issue">Datum</string>
<string name="date_of_issue">Ausstellungsdatum</string>
<string name="place_of_issue">Ausstellungsort</string>
<string name="name">Name</string>
<string name="id_card">Personalausweis</string>
@@ -582,14 +582,14 @@
<string name="templates">Vorlagen</string>
<string name="templates_group_uuid_title">Vorlagengruppe</string>
<string name="templates_group_enable_summary">Dynamische Vorlagen zum Ausfüllen der Felder eines Eintrags verwenden</string>
<string name="templates_group_enable_title">Vorlagen-Verwendung</string>
<string name="templates_group_enable_title">Verwendung von Vorlagen</string>
<string name="version">Version</string>
<string name="template">Vorlage</string>
<string name="standard">Standard</string>
<string name="membership">Mitgliedschaft</string>
<string name="international_bank_account_number">IBAN</string>
<string name="bank_identifier_code">SWIFT/BIC</string>
<string name="bank_name">Bankname</string>
<string name="bank_name">Name der Bank</string>
<string name="bank">Bank</string>
<string name="account">Konto</string>
<string name="seed">Seed</string>
@@ -615,7 +615,7 @@
<string name="tags">Tags</string>
<string name="show_entry_colors_title">Eintragsfarben</string>
<string name="enable_keep_screen_on_title">Bildschirm eingeschaltet lassen</string>
<string name="warning_keyfile_integrity">Der Hash der Datei kann nicht garantiert werden, da Android seine Daten ändern kann. Änder die Dateiendung zu .bin, um die Integrität zu gewährleisten.</string>
<string name="warning_keyfile_integrity">Der Hash der Datei kann nicht garantiert werden, da Android deren Daten ändern kann. Bitte die Dateiendung in .bin ändern, um die Integrität zu gewährleisten.</string>
<string name="enable_keep_screen_on_summary">Bildschirm beim Anzeigen oder Bearbeiten des Eintrags eingeschaltet lassen</string>
<string name="show_entry_colors_summary">Vorder- und Hintergrundfarbe für einen Eintrag anzeigen</string>
<string name="auto_type_sequence">Automatische Eingabefolge</string>
@@ -626,27 +626,28 @@
<string name="search_filters">Suchfilter</string>
<string name="current_group">Aktuelle Gruppe</string>
<string name="case_sensitive">Groß-/Kleinschreibung beachten</string>
<string name="menu_merge_from">Zusammenführen von </string>
<string name="menu_save_copy_to">Kopie speichern unter </string>
<string name="menu_merge_from">Zusammenführen von </string>
<string name="menu_save_copy_to">Kopie speichern unter </string>
<string name="content_description_nav_header">Navigationskopfzeile</string>
<string name="navigation_drawer_close">Navigationsleiste schließen</string>
<string name="navigation_drawer_open">Navigationsleiste öffnen</string>
<string name="expired">Abgelaufen</string>
<string name="warning_database_already_opened">Eine Datenbank ist bereits geöffnet. Schließe sie, um eine neue zu öffnen</string>
<string name="advanced_unlock_keystore_warning">Diese Funktion speichert verschlüsselte Anmeldedaten im sicheren Schlüsselspeicher deines Geräts.
<string name="advanced_unlock_keystore_warning">Diese Funktion speichert verschlüsselte Anmeldedaten im sicheren Schlüsselspeicher dieses Geräts.
\n
\nJe nach der internen API-Implementierung des Betriebssystems kann sie eingeschränkt sein.
\n
\nBitte die Kompatibilität und Sicherheit des Schlüsselspeichers vom Gerätehersteller und vom Ersteller der verwendeten ROM abgleichen.</string>
<string name="content_description_passphrase_word_count">Passphrasen-Wortanzahl</string>
<string name="passphrase">Passphrase</string>
<string name="colorize_password_title">Passwörter kolorieren</string>
<string name="colorize_password_summary">Koloriere Passwortzeichen nach Typ</string>
<string name="colorize_password_title">Passwörter einfärben</string>
<string name="colorize_password_summary">Passwortzeichen nach Typ einfärben</string>
<string name="keyboard_previous_search_title">Suchbildschirm</string>
<string name="keyboard_previous_search_summary">Auf dem Suchbildschirm automatisch zur vorherigen Tastatur wechseln</string>
<string name="entropy">Entropie: %1$s Bit</string>
<string name="entropy_high">Entropie: Hoch</string>
<string name="entropy_calculate">Entropie: Berechnen </string>
<string name="at_least_one_char">Mindestens jedes Zeichen einmal</string>
<string name="at_least_one_char">Mindestens ein Zeichen von jedem</string>
<string name="consider_chars_filter">Zeichen beinhalten</string>
<string name="word_separator">Trennzeichen</string>
<string name="ignore_chars_filter">Zeichen ignorieren</string>
@@ -663,7 +664,7 @@
<string name="waiting_challenge_request">Challenge-Anfrage abwarten </string>
<string name="error_cancel_by_user">Vom Benutzer abgebrochen.</string>
<string name="error_driver_required">Treiber für %1$s ist erforderlich.</string>
<string name="error_unable_merge_database_kdb">Die Zusammenführung aus einer Datenbank V1 ist nicht möglich.</string>
<string name="error_unable_merge_database_kdb">Das Zusammenführen mit einer kdb-Datenbankdatei ist nicht möglich.</string>
<string name="error_location_unknown">Der Speicherort der Datenbank ist unbekannt, Datenbankaktion kann nicht ausgeführt werden.</string>
<string name="error_hardware_key_unsupported">Der Hardwareschlüssel wird nicht unterstützt.</string>
<string name="error_empty_key">Der Schlüssel darf nicht leer sein.</string>
@@ -679,7 +680,7 @@
<string name="auto_type">Automatische Eingabe</string>
<string name="html_about_privacy">&lt;strong&gt;Es werden keine Benutzerdaten ausgelesen&lt;/strong&gt;, diese Anwendung stellt keine Verbindung zu einem Server her, arbeitet nur lokal und respektiert vollständig die Privatsphäre der Benutzer.</string>
<string name="merge_success">Zusammenführung erfolgreich abgeschlossen</string>
<string name="menu_form_filling_settings_summary">Tastatur, Automatisches Ausfüllen, Zwischenablage</string>
<string name="menu_form_filling_settings_summary">Tastatur, automatisches Ausfüllen, Zwischenablage</string>
<string name="menu_advanced_unlock_settings_summary">Biometrie, Geräteanmeldedaten</string>
<string name="menu_database_settings_summary">Metadaten, Papierkorb, Vorlagen, Verlauf</string>
<string name="menu_app_settings_summary">Suche, Sperre, Verlauf, Eigenschaften</string>
@@ -700,4 +701,14 @@
\n
\nWenn ein automatisches Sperren aktiviert ist und vergessen wird, dass Änderungen vorgenommen wurden, besteht die Gefahr von Datenverlust.</string>
<string name="info">Info</string>
<string name="style_name_light">Hell</string>
<string name="style_name_dark">Dunkel</string>
<string name="warning_database_info_changed_options_read_only">Die Datenbank mit den letzten Änderungen neu laden.</string>
<string name="hide_templates_title">Vorlagen ausblenden</string>
<string name="hide_templates_summary">Vorlagen sind ausgeblendet</string>
<string name="nodes">Knoten</string>
<string name="recursive_number_entries_summary">Berechnet rekursiv die Anzahl der Einträge in einer Gruppe</string>
<string name="warning_large_keyfile">Es wird nicht empfohlen, eine große Schlüsseldatei hinzuzufügen, da dies das Öffnen der Datenbank verhindern kann.</string>
<string name="recursive_number_entries_title">Rekursive Anzahl der Einträge</string>
<string name="generate_keyfile">Schlüsseldatei generieren</string>
</resources>

View File

@@ -61,7 +61,7 @@
<string name="entry_user_name">Όνομα χρήστη</string>
<string name="error_arc4">Η ροή κρυπτογράφησης Arcfour δεν υποστηρίζεται.</string>
<string name="error_can_not_handle_uri">Το KeePassDX δε μπορεί να χειριστεί αυτή τη διεύθυνση URI.</string>
<string name="error_file_not_create">Δεν ήταν δυνατή η δημιουργία αρχείου</string>
<string name="error_file_not_create">Δεν ήταν δυνατή η δημιουργία αρχείου.</string>
<string name="error_invalid_db">Δεν ήταν δυνατή η ανάγνωση της βάσης δεδομένων.</string>
<string name="error_invalid_path">Βεβαιωθείτε ότι η διαδρομή είναι σωστή.</string>
<string name="error_no_name">Εισαγάγετε ένα όνομα.</string>
@@ -199,7 +199,7 @@
<string name="application_appearance">Διεπαφή</string>
<string name="other">Άλλα</string>
<string name="keyboard">Πληκτρολόγιο</string>
<string name="magic_keyboard_title">Magikeyboard</string>
<string name="magic_keyboard_title">Magikeybοard</string>
<string name="reset_education_screens_title">Επαναφορά εκπαιδευτικών υποδείξεων</string>
<string name="reset_education_screens_summary">Εμφάνιση όλων των εκπαιδευτικών πληροφοριών ξανά</string>
<string name="reset_education_screens_text">Επαναφορά εκπαιδευτικών υποδείξεων</string>
@@ -233,7 +233,7 @@
<string name="html_text_ad_free">Σε αντίθεση με πολλές άλλες εφαρμογές διαχείρισης κωδικών πρόσβασης, αυτή είναι &lt;strong&gt;χωρίς διαφημίσεις&lt;/strong&gt;, &lt;strong&gt;copylefted libre λογισμικό&lt;/strong&gt; και δεν συλλέγει προσωπικά δεδομένα στους διακομιστές της, ανεξάρτητα από την έκδοση που χρησιμοποιείτε.</string>
<string name="html_text_buy_pro">Με την αγορά της επαγγελματικής έκδοσης, θα έχετε πρόσβαση σε αυτό το &lt;strong&gt;οπτικό στοιχείο&lt;/strong&gt; και θα βοηθήσετε ιδιαίτερα την &lt;strong&gt;υλοποίηση ιδεών της κοινότητας.&lt;/strong&gt;</string>
<string name="html_text_feature_generosity">Αυτό το &lt;strong&gt;οπτικό στυλ&lt;/strong&gt; είναι διαθέσιμο χάρη στη γενναιοδωρία σας.</string>
<string name="html_text_donation">Για να διατηρήσουμε την ελεύθερη έκδοση και να είμαστε πάντα ενεργοί, υπολογίζουμε στην &lt;strong&gt;συνεισφορά σας.&lt;/strong&gt;</string>
<string name="html_text_donation">Με τη &lt;strong&gt;συνεισφορά σας&lt;/strong&gt; στο έργο <i>(χρηματικά, κώδικα, μετάφραση)</i>, θα το βοηθήσετε να συνεχίσει να ζει και να ευδοκιμεί και θα είστε επίσης επιλέξιμοι για τη διαδικασία ξεκλειδώματος &lt;strong&gt;θεμάτων &lt;/strong&gt; .</string>
<string name="html_text_dev_feature">Αυτή η λειτουργία είναι &lt;strong&gt;υπό ανάπτυξη&lt;/strong&gt; και απαιτεί την &lt;strong&gt;συνεισφοράς&lt;/strong&gt; σας για να είναι σύντομα διαθέσιμη.</string>
<string name="html_text_dev_feature_buy_pro">Με την αγορά της έκδοσης &lt;strong&gt;pro&lt;/strong&gt;,</string>
<string name="html_text_dev_feature_contibute">Με την &lt;strong&gt;συνεισφορά&lt;/strong&gt; σας,</string>
@@ -273,8 +273,8 @@
<string name="list_entries_show_username_summary">Εμφάνιση ονομάτων χρηστών σε λίστες καταχώρησης</string>
<string name="clipboard">Πρόχειρο</string>
<string name="build_label">Κατασκευή %1$s</string>
<string name="keyboard_name">Magikeyboard</string>
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
<string name="keyboard_name">Magikeybοard</string>
<string name="keyboard_label">Magikeybοard (KeePassDX)</string>
<string name="keyboard_setting_label">Ρυθμίσεις Magikeyboard</string>
<string name="keyboard_entry_category">Καταχώριση</string>
<string name="keyboard_entry_timeout_title">Τέλος χρόνου</string>
@@ -485,7 +485,7 @@
<string name="registration_mode">Τρόπος εγγραφής</string>
<string name="save_mode">Λειτουργία αποθήκευσης</string>
<string name="search_mode">Λειτουργία αναζήτησης</string>
<string name="error_registration_read_only">Η αποθήκευση ενός νέου αντικειμένου δεν επιτρέπεται σε μια βάση δεδομένων μόνο για ανάγνωση</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>
@@ -540,9 +540,9 @@
<string name="error_remove_file">Παρουσιάστηκε σφάλμα κατά την κατάργηση των δεδομένων αρχείου.</string>
<string name="error_duplicate_file">Τα δεδομένα αρχείου υπάρχουν ήδη.</string>
<string name="properties">Ιδιότητες</string>
<string name="error_export_app_properties">Σφάλμα κατά την εξαγωγή ρυθμίσεων εφαρμογής</string>
<string name="error_export_app_properties">Σφάλμα κατά την εξαγωγή ρυθμίσεων εφαρμογής.</string>
<string name="success_export_app_properties">Έγινε εξαγωγή ρυθμίσεων εφαρμογής</string>
<string name="error_import_app_properties">Σφάλμα κατά την εισαγωγή ρυθμίσεων εφαρμογής</string>
<string name="error_import_app_properties">Σφάλμα κατά την εισαγωγή ρυθμίσεων εφαρμογής.</string>
<string name="success_import_app_properties">Έγινε εισαγωγή ρυθμίσεων εφαρμογής</string>
<string name="description_app_properties">Ιδιότητες KeePassDX για διαχείριση ρυθμίσεων εφαρμογής</string>
<string name="export_app_properties_summary">Δημιουργήστε ένα αρχείο για εξαγωγή ρυθμίσεων εφαρμογής</string>
@@ -624,6 +624,7 @@
<string name="advanced_unlock_keystore_warning">Αυτή η δυνατότητα θα αποθηκεύσει κρυπτογραφημένα δεδομένα διαπιστευτηρίων στο ασφαλές KeyStore της συσκευής σας.
\n
\nΑνάλογα με την εγγενή υλοποίηση API του λειτουργικού συστήματος, ενδέχεται να μην είναι πλήρως λειτουργικό.
\n
\nΕλέγξτε τη συμβατότητα και την ασφάλεια του KeyStore με τον κατασκευαστή της συσκευής σας και τον δημιουργό της ROM που χρησιμοποιείτε.</string>
<string name="passphrase">Συνθηματική φράση</string>
<string name="colorize_password_summary">Χρωματίστε τους χαρακτήρες του κωδικού πρόσβασης ανά τύπο</string>
@@ -658,10 +659,10 @@
<string name="error_no_response_from_challenge">Δεν είναι δυνατή η λήψη της απάντησης από την πρόκληση.</string>
<string name="enable_screenshot_mode_title">Λειτουργία στιγμιότυπου οθόνης</string>
<string name="screenshot_mode_banner_text">Λειτουργία στιγμιότυπου οθόνης</string>
<string name="error_challenge_already_requested">Η πρόκληση έχει ήδη ζητηθεί</string>
<string name="error_challenge_already_requested">Η πρόκληση έχει ήδη ζητηθεί.</string>
<string name="error_response_already_provided">Η απάντηση έχει ήδη δοθεί.</string>
<string name="error_location_unknown">Η θέση της βάσης δεδομένων είναι άγνωστη, η ενέργεια της βάσης δεδομένων δεν μπορεί να εκτελεστεί.</string>
<string name="error_unable_merge_database_kdb">Δεν είναι δυνατή η συγχώνευση από μια βάση δεδομένων V1.</string>
<string name="error_unable_merge_database_kdb">Δεν είναι δυνατή η συγχώνευση με μια βάση δεδομένων kdb.</string>
<string name="error_empty_key">Το κλειδί δεν μπορεί να είναι κενό.</string>
<string name="corrupted_file">Κατεστραμμένο αρχείο.</string>
<string name="html_about_privacy">&lt;strong&gt;Δεν ανακτώνται δεδομένα χρήστη&lt;/strong&gt;, αυτή η εφαρμογή δεν συνδέεται με κανένα διακομιστή, λειτουργεί μόνο τοπικά και σέβεται πλήρως το απόρρητο των χρηστών.</string>
@@ -688,4 +689,23 @@
<string name="education_validate_entry_summary">Θυμηθείτε να επικυρώσετε την καταχώρησή σας και να αποθηκεύσετε τη βάση δεδομένων σας.
\n
\nΕάν ενεργοποιηθεί ένα αυτόματο κλείδωμα και ξεχάσετε ότι κάνετε μια τροποποίηση, κινδυνεύετε να χάσετε τα δεδομένα σας.</string>
<string name="style_name_forest">Δάσος</string>
<string name="style_name_divine">Θείο</string>
<string name="style_name_classic">Κλασσικό</string>
<string name="style_name_simple">Απλό</string>
<string name="style_name_reply">Απάντηση</string>
<string name="style_name_light">Φωτεινό</string>
<string name="style_name_dark">Σκοτεινό</string>
<string name="style_name_moon">Φεγγάρι</string>
<string name="style_name_sun">Ήλιος</string>
<string name="style_name_kunzite">Κουνζίτης</string>
<string name="style_name_follow_system">Όπως το σύστημα</string>
<string name="warning_database_info_changed_options_read_only">Επαναφορτώστε τη βάση δεδομένων με τις τελευταίες αλλαγές.</string>
<string name="recursive_number_entries_summary">Υπολογίζει αναδρομικά τον αριθμό των καταχωρήσεων σε μια ομάδα</string>
<string name="hide_templates_title">Απόκρυψη προτύπων</string>
<string name="generate_keyfile">Δημιουργία αρχείου κλειδιού</string>
<string name="nodes">Κόμβοι</string>
<string name="warning_large_keyfile">Δεν συνιστάται η προσθήκη μεγάλου αρχείου κλειδιού, αυτό μπορεί να εμποδίσει το άνοιγμα της βάσης δεδομένων.</string>
<string name="hide_templates_summary">Τα πρότυπα δεν εμφανίζονται</string>
<string name="recursive_number_entries_title">Αναδρομικός αριθμός καταχωρήσεων</string>
</resources>

View File

@@ -50,4 +50,190 @@
<string name="content_description_add_item">Add item</string>
<string name="content_description_file_information">File info</string>
<string name="content_description_credentials_information">Credentials info</string>
<string name="content_description_hardware_key_checkbox">Hardware key checkbox</string>
<string name="content_description_nav_header">Navigation header</string>
<string name="navigation_drawer_open">Navigation drawer open</string>
<string name="content_description_passphrase_word_count">Passphrase word count</string>
<string name="content_description_remove_from_list">Remove</string>
<string name="info">Info</string>
<string name="clipboard_cleared">Clipboard cleared</string>
<string name="clipboard_error_title">Clipboard error</string>
<string name="clipboard_error">Some devices won\'t let apps use the clipboard.</string>
<string name="clipboard_timeout_summary">Duration of storage in the clipboard (if supported by your device)</string>
<string name="content_description_otp_information">One-time password info</string>
<string name="content_description_keyfile_checkbox">Keyfile checkbox</string>
<string name="content_description_entry_icon">Entry icon</string>
<string name="navigation_drawer_close">Navigation drawer close</string>
<string name="validate">Validate</string>
<string name="discard_changes">Discard changes?</string>
<string name="discard">Discard</string>
<string name="entry_password_generator">Password generator</string>
<string name="content_description_password_length">Password length</string>
<string name="content_description_keyboard_close_fields">Close fields</string>
<string name="retrieving_db_key">Retrieving database key…</string>
<string name="html_about_contribution">In order to &lt;strong&gt;keep our freedom&lt;/strong&gt;, &lt;strong&gt;fix bugs&lt;/strong&gt;, &lt;strong&gt;add features&lt;/strong&gt; and &lt;strong&gt;to be always active&lt;/strong&gt;, we count on your &lt;strong&gt;contribution&lt;/strong&gt;.</string>
<string name="entry_accessed">Accessed</string>
<string name="entry_confpassword">Confirm password</string>
<string name="clipboard_error_clear">Could not clear clipboard</string>
<string name="clipboard_timeout">Clipboard timeout</string>
<string name="content_description_password_checkbox">Password checkbox</string>
<string name="content_description_repeat_toggle_password_visibility">Repeat toggle password visibility</string>
<string name="waiting_challenge_request">Waiting for the challenge request…</string>
<string name="waiting_challenge_response">Waiting for the challenge response…</string>
<string name="database">Database</string>
<string name="template_group_name">Templates</string>
<string name="decrypting_db">Decrypting database content…</string>
<string name="default_checkbox">Use as default database</string>
<string name="digits">Digits</string>
<string name="entry_add_field">Add field</string>
<string name="entry_add_attachment">Add attachment</string>
<string name="content_description_remove_field">Remove field</string>
<string name="content_description_update_from_list">Update</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft is &lt;strong&gt;open source&lt;/strong&gt; and &lt;strong&gt;without advertising&lt;/strong&gt;. \nIt is provided as is, under &lt;strong&gt;GPLv3&lt;/strong&gt; license, without any warranty.</string>
<string name="html_about_privacy">&lt;strong&gt;No user data is retrieved&lt;/strong&gt;, this application does not connect to any server, works only locally and fully respects the privacy of users.</string>
<string name="entry_cancel">Cancel</string>
<string name="entry_notes">Notes</string>
<string name="entry_created">Created</string>
<string name="otp_type">OTP type</string>
<string name="otp_secret">Secret</string>
<string name="otp_period">Period (seconds)</string>
<string name="entry_user_name">Username</string>
<string name="error_arc4">The Arcfour stream cipher is not supported.</string>
<string name="error_file_not_create">Could not create file.</string>
<string name="error_load_database_KDF_memory">Could not load the key. Try to lower the KDF \"Memory Usage\".</string>
<string name="entry_expires">Expires</string>
<string name="expired">Expired</string>
<string name="entry_UUID">UUID</string>
<string name="entry_history">History</string>
<string name="entry_attachments">Attachments</string>
<string name="entry_keyfile">Keyfile</string>
<string name="hardware_key">Hardware key</string>
<string name="entry_modified">Modified</string>
<string name="personal_identification_number">PIN</string>
<string name="id_card">ID Card</string>
<string name="name">Name</string>
<string name="place_of_issue">Place of issue</string>
<string name="date_of_issue">Date of issue</string>
<string name="email">Email</string>
<string name="error_invalid_db">Could not read the database.</string>
<string name="error_invalid_path">Make sure the path is correct.</string>
<string name="error_invalid_OTP">Invalid OTP secret.</string>
<string name="error_no_name">Enter a name.</string>
<string name="error_word_reserved">This word is reserved and cannot be used.</string>
<string name="error_nokeyfile">Select a keyfile.</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="select_to_copy">Select to copy %1$s to clipboard</string>
<string name="searchable">Searchable</string>
<string name="inherited">Inherit</string>
<string name="auto_type">Auto-Type</string>
<string name="auto_type_sequence">Auto-Type sequence</string>
<string name="entry_not_found">Could not find entry data.</string>
<string name="entry_password">Password</string>
<string name="tags">Tags</string>
<string name="custom_data">Custom data</string>
<string name="save">Save</string>
<string name="entry_title">Title</string>
<string name="entry_setup_otp">Set up one-time password</string>
<string name="otp_counter">Counter</string>
<string name="otp_digits">Digits</string>
<string name="search_filters">Search filters</string>
<string name="otp_algorithm">Algorithm</string>
<string name="current_group">Current group</string>
<string name="case_sensitive">Case sensitive</string>
<string name="regex">Regular expression</string>
<string name="debit_credit_card">Debit / Credit Card</string>
<string name="holder">Holder</string>
<string name="number">Number</string>
<string name="card_verification_value">CVV</string>
<string name="email_address">Email address</string>
<string name="wireless">Wi-Fi</string>
<string name="ssid">SSID</string>
<string name="type">Type</string>
<string name="cryptocurrency">Cryptocurrency wallet</string>
<string name="token">Token</string>
<string name="public_key">Public key</string>
<string name="private_key">Private key</string>
<string name="seed">Seed</string>
<string name="account">Account</string>
<string name="bank">Bank</string>
<string name="bank_name">Bank name</string>
<string name="bank_identifier_code">SWIFT / BIC</string>
<string name="international_bank_account_number">IBAN</string>
<string name="secure_note">Secure Note</string>
<string name="membership">Membership</string>
<string name="standard">Standard</string>
<string name="template">Template</string>
<string name="version">Version</string>
<string name="entry_otp">OTP</string>
<string name="entry_url">URL</string>
<string name="error_can_not_handle_uri">Could not handle this URI in KeePassDX.</string>
<string name="error_no_hardware_key">Select a hardware key.</string>
<string name="error_out_of_memory">No memory to load your entire database.</string>
<string name="error_XML_malformed">XML malformed.</string>
<string name="error_load_database">Could not load the database.</string>
<string name="error_pass_gen_type">At least one password generation type must be selected.</string>
<string name="error_disallow_no_credentials">At least one credential must be set.</string>
<string name="error_pass_match">The passwords do not match.</string>
<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_challenge_already_requested">Challenge already requested.</string>
<string name="error_response_already_provided">Response already provided.</string>
<string name="error_no_response_from_challenge">Unable to get the response from the challenge.</string>
<string name="error_cancel_by_user">Cancelled by user.</string>
<string name="length">Length</string>
<string name="hint_pass">Password</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_group_here">You cannot move a group here.</string>
<string name="error_move_entry_here">You cannot move an entry here.</string>
<string name="error_copy_entry_here">You cannot copy an entry 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 the database.</string>
<string name="error_otp_secret_key">Secret key must be in Base32 format.</string>
<string name="error_otp_counter">Counter must be between %1$d and %2$d.</string>
<string name="error_duplicate_file">The file data already exists.</string>
<string name="error_remove_file">An error occurred while removing the file data.</string>
<string name="error_start_database_action">An error occurred while performing an action on the database.</string>
<string name="error_driver_required">Driver for %1$s is required.</string>
<string name="error_unable_merge_database_kdb">Unable to merge from a database V1.</string>
<string name="error_hardware_key_unsupported">Hardware key is not supported.</string>
<string name="error_empty_key">Key cannot be empty.</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>
<string name="corrupted_file">Corrupted file.</string>
<string name="file_browser">File manager</string>
<string name="generate_password">Generate password</string>
<string name="hint_conf_pass">Confirm password</string>
<string name="hint_generated_password">Generated password</string>
<string name="hint_group_name">Group name</string>
<string name="hint_icon_name">Icon name</string>
<string name="hint_keyfile">Keyfile</string>
<string name="hint_length">Length</string>
<string name="password">Password</string>
<string name="passphrase">Passphrase</string>
<string name="invalid_credentials">Could not read credentials.</string>
<string name="invalid_algorithm">Wrong algorithm.</string>
<string name="invalid_db_same_uuid">%1$s with the same UUID %2$s already exists.</string>
<string name="keyfile_is_empty">The keyfile is empty.</string>
<string name="hide_password_title">Hide passwords</string>
<string name="list_entries_show_username_title">Show usernames</string>
<string name="error_otp_period">Period must be between %1$d and %2$d seconds.</string>
<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_otp_digits">Token must contain %1$d to %2$d digits.</string>
<string name="error_database_uri_null">Database URI cannot be retrieved.</string>
<string name="error_field_name_already_exists">The field name already exists.</string>
<string name="error_rebuild_list">Unable to properly rebuild the list.</string>
<string name="error_file_to_big">The file you are trying to upload is too big.</string>
<string name="error_upload_file">An error occurred while uploading the file data.</string>
<string name="error_location_unknown">Database location is unknown, database action cannot be performed.</string>
<string name="hide_password_summary">Mask passwords (***) by default</string>
<string name="list_entries_show_username_summary">Displays usernames in entry lists</string>
<string name="list_groups_show_number_entries_title">Show number of entries</string>
<string name="show_otp_token_summary">Displays OTP tokens in the list of entries</string>
<string name="show_otp_token_title">Show OTP Token</string>
</resources>

View File

@@ -88,7 +88,7 @@
<string name="error_no_name">Tajpu nomon.</string>
<string name="error_invalid_path">Certigu ke la vojo estas ĝusta.</string>
<string name="error_invalid_db">Ne povas legi datumbazon.</string>
<string name="error_file_not_create">Ne povas krei dosieron</string>
<string name="error_file_not_create">Ne povas krei dosieron.</string>
<string name="entry_user_name">Uzantnomo</string>
<string name="entry_url">Retadreso</string>
<string name="entry_title">Titolo</string>

View File

@@ -23,7 +23,7 @@
<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="accept">Aceptar</string>
<string name="add_entry">Añadir entrada</string>
<string name="add_entry">Añadir apunte</string>
<string name="add_group">Añadir grupo</string>
<string name="encryption_algorithm">Algoritmo de cifrado</string>
<string name="app_timeout">Tiempo de espera superado</string>
@@ -41,8 +41,7 @@
<string name="decrypting_db">Descifrando contenido de la base de datos…</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 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="html_about_licence">KeePassDX © %1$d Kunzisoft is &lt;strong&gt;código abierto&lt;/strong&gt; y &lt;strong&gt;without advertising&lt;/strong&gt;. \nIt is provided as is, under &lt;strong&gt;GPLv3&lt;/strong&gt; licencia, sin ninguna garantía.</string>
<string name="select_database_file">Abrir la caja fuerte existente</string>
<string name="entry_accessed">Accedido</string>
<string name="entry_cancel">Cancelar</string>
@@ -50,31 +49,31 @@
<string name="entry_confpassword">Confirmar contraseña</string>
<string name="entry_created">Creado</string>
<string name="entry_expires">Caduca</string>
<string name="entry_keyfile">Archivo clave</string>
<string name="entry_keyfile">Cerrojo</string>
<string name="entry_modified">Modificada</string>
<string name="entry_password">Contraseña</string>
<string name="save">Guardar</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="entry_user_name">Nombre usuario</string>
<string name="error_arc4">No se admite el cifrador de flujo Arcfour.</string>
<string name="error_can_not_handle_uri">KeePassDX no puede manejar este URI.</string>
<string name="error_file_not_create">No se ha podido crear el archivo</string>
<string name="error_can_not_handle_uri">No se ha podido gestionar este URI en KeePassDX.</string>
<string name="error_file_not_create">No se ha podido crear el archivo.</string>
<string name="error_invalid_db">No se ha podido leer la base de datos.</string>
<string name="error_invalid_path">Asegúrese de que la ruta es correcta.</string>
<string name="error_no_name">Proporcione un nombre.</string>
<string name="error_nokeyfile">Seleccione un archivo clave.</string>
<string name="error_invalid_path">Asegúrese que la ruta es correcta.</string>
<string name="error_no_name">Introduzca un nombre.</string>
<string name="error_nokeyfile">Seleccione un archivo de claves.</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 seleccionarse 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">Rondas de transformación demasiado altas. Establecidas a a 2147483648.</string>
<string name="error_rounds_too_large">\"Rondas de transformación\" demasiado altas. Ajuste a 2147483648.</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>
<string name="hint_generated_password">Contraseña generada</string>
<string name="hint_group_name">Nombre del grupo</string>
<string name="hint_keyfile">Archivo clave</string>
<string name="hint_keyfile">Cerrojo</string>
<string name="hint_length">Longitud</string>
<string name="password">Contraseña</string>
<string name="hint_pass">Contraseña</string>
@@ -86,12 +85,12 @@
<string name="loading_database">Cargando base de datos…</string>
<string name="lowercase">Minúsculas</string>
<string name="hide_password_title">Ocultar contraseñas</string>
<string name="hide_password_summary">Ocultar contraseñas (***) por defecto</string>
<string name="hide_password_summary">Oculta contraseñas (***) por defecto</string>
<string name="about">Acerca de</string>
<string name="menu_change_key_settings">Cambiar contraseña maestra</string>
<string name="settings">Configuración</string>
<string name="menu_database_settings">Configuración de base de datos</string>
<string name="menu_delete">Borrar</string>
<string name="menu_delete">Eliminar</string>
<string name="menu_donate">Donar</string>
<string name="menu_edit">Editar</string>
<string name="menu_hide_password">Ocultar contraseña</string>
@@ -109,19 +108,17 @@
<string name="content_description_remove_from_list">Quitar</string>
<string name="root">Raíz</string>
<string name="rounds">Rondas de transformación</string>
<string name="rounds_explanation">Un alto número de pasadas de cifrado proporciona protección adicional contra ataques de fuerza bruta, pero puede ralentizar mucho el cargado y el guardado.</string>
<string name="rounds_explanation">Las rondas de cifrado adicionales proporcionan una mayor protección contra los ataques de fuerza bruta, pero pueden ralentizar mucho el cargado y el guardado.</string>
<string name="saving_database">Guardando base de datos…</string>
<string name="space">Espacio</string>
<string name="sort_db">Orden natural</string>
<string name="special">Especial</string>
<string name="search">Búsqueda</string>
<string name="underline">Subrayado</string>
<string name="unsupported_db_version">No se admite esta versión de la base de datos.</string>
<string name="unsupported_db_version">Versión de base de datos incompatible.</string>
<string name="uppercase">Mayúsculas</string>
<string name="version_label">Versión %1$s</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 name="education_unlock_summary">Introduzca la contraseña y/o el cerrojo para desbloquear su base de datos.\n\nRespalde su base de datos en un lugar seguro tras cada cambio.</string>
<string-array name="list_size_options">
<item>Pequeño</item>
<item>Mediano</item>
@@ -140,14 +137,14 @@
<string name="field_value">Valor del campo</string>
<string name="file_not_found_content">No se ha podido encontrar el archivo. Intente volver a abrirlo en el explorador de archivos.</string>
<string name="invalid_algorithm">Algoritmo incorrecto.</string>
<string name="keyfile_is_empty">El archivo clave está vacío.</string>
<string name="keyfile_is_empty">El cerrojo está vacío.</string>
<string name="copy_field">Copia de %1$s</string>
<string name="menu_form_filling_settings">Rellenado de formularios</string>
<string name="protection">Protección</string>
<string name="read_only">Protegida contra escritura</string>
<string name="read_only_warning">Dependiendo del administrador de archivos, puede que KeePassDX no permita escribir en su almacenamiento.</string>
<string name="read_only_warning">Dependiendo del administrador de archivos, KeePassDX puede no permitir escribir en tu almacenamiento.</string>
<string name="encryption_explanation">Algoritmo de cifrado de la base de datos usado 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="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 sal aleatoria.</string>
<string name="memory_usage">Uso de memoria</string>
<string name="memory_usage_explanation">Cantidad de memoria que usará la función de derivación de clave.</string>
<string name="parallelism">Paralelismo</string>
@@ -161,49 +158,49 @@
<string name="sort_creation_time">Creación</string>
<string name="sort_last_modify_time">Modificación</string>
<string name="sort_last_access_time">Acceso</string>
<string name="warning">Atención</string>
<string name="entry_not_found">No se han podido encontrar los datos de la 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">Advertencia</string>
<string name="entry_not_found">No se han podido encontrar los datos del apunte.</string>
<string name="warning_password_encoding">Evita caracteres de contraseña fuera del formato de codificación de texto en el archivo de base de datos (los caracteres no reconocidos se convierten a la misma letra).</string>
<string name="warning_empty_password">¿Continuar sin protección de desbloqueo por contraseña?</string>
<string name="warning_no_encryption_key">¿Continuar sin clave de cifrado\?</string>
<string name="encrypted_value_stored">Contraseña cifrada almacenada</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="autofill_explanation_summary">Habilite el servicio para rellenar formularios fácilmente desde otras aplicaciones</string>
<string name="unavailable">No disponible</string>
<string name="menu_appearance_settings">Apariencia</string>
<string name="general">General</string>
<string name="autofill">Autocompletado</string>
<string name="autofill_service_name">Autocompletado de formularios de KeePassDX</string>
<string name="autofill_sign_in_prompt">Acceder con KeePassDX</string>
<string name="autofill_sign_in_prompt">Iniciar sesión con KeePassDX</string>
<string name="set_autofill_service_title">Establecer servicio de autocompletado por defecto</string>
<string name="password_size_title">Tamaño de la contraseña generada</string>
<string name="password_size_summary">Establece el tamaño predeterminado de las contraseñas generadas</string>
<string name="list_password_generator_options_title">Caracteres de contraseña</string>
<string name="list_password_generator_options_summary">Establecer los caracteres permitidos del generador de contraseñas</string>
<string name="list_password_generator_options_summary">Establece 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 las notificaciones del portapapeles para copiar campos al examinar una entrada</string>
<string name="clipboard_notifications_summary">Muestra notificaciones del portapapeles para copiar campos al examinar un apunte</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 después de unos segundos cuando la pantalla esté apagada</string>
<string name="advanced_unlock">Desbloqueo del dispositivo</string>
<string name="biometric_unlock_enable_title">Desbloqueo biométrico</string>
<string name="biometric_unlock_enable_summary">Le permite escanear sus datos biométricos para abrir la base de datos</string>
<string name="biometric_unlock_enable_summary">Le permite analizar 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">Borrar todas las claves de cifrado relacionadas con el reconocimiento de desbloqueo del dispositivo</string>
<string name="biometric_delete_all_key_summary">Borra todas las claves de cifrado relacionadas con el reconocimiento de desbloqueo del dispositivo</string>
<string name="unavailable_feature_text">No se pudo iniciar esta funcionalidad.</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 una nueva caja fuerte</string>
<string name="create_keepass_file">Crear una nueva bóveda</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">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="monospace_font_fields_enable_summary">Cambia la tipografía usada en 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>
<string name="allow_copy_password_summary">Permitir copiar la contraseña de apunte y los campos protegidos al portapapeles</string>
<string name="database_name_title">Nombre de la base de datos</string>
<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>
@@ -211,9 +208,9 @@
<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="reset_education_screens_title">Restablecer sugerencias didácticas</string>
<string name="magic_keyboard_title">Magikeyboard</string>
<string name="magic_keyboard_explanation_summary">Activar un teclado personalizado que rellene sus contraseñas y todos los campos de identidad</string>
<string name="reset_education_screens_title">Restablecer consejos educativos</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>
<string name="education_create_database_title">Cree su archivo de base de datos</string>
@@ -221,48 +218,44 @@
<string name="education_select_database_title">Abrir una base de datos existente</string>
<string name="education_select_database_summary">Abra su archivo de base de datos anterior desde el explorador de archivos para seguir utilizándolo.</string>
<string name="education_new_node_title">Añada elementos a su base de datos</string>
<string name="education_new_node_summary">Las entradas ayudan a administrar sus identidades digitales.
\n
\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_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_new_node_summary">Los apuntes ayudan a gestionar tus identidades digitales.\n\nLos grupos (~carpetas) organizan las entradas en tu base de datos.</string>
<string name="education_search_title">Buscar por apuntes</string>
<string name="education_search_summary">Introduzca título, usuario o contenido de otros campos para recuperar sus contraseñas.</string>
<string name="education_entry_edit_title">Editar el apunte</string>
<string name="education_entry_edit_summary">Edita el apunte con campos personalizados. Los datos pueden estar referenciados entre diferentes campos del apunte.</string>
<string name="education_generate_password_title">Crear una contraseña segura</string>
<string name="education_generate_password_summary">Genere una contraseña segura para asociarla con su entrada. Defínala fácilmente según los criterios del formulario y no olvides una contraseña poner una contraseña difícil y segura.</string>
<string name="education_entry_new_field_title">Agregar campos personalizados</string>
<string name="education_entry_new_field_summary">Registre un campo adicional, añada un valor y, opcionalmente, protéjalo.</string>
<string name="education_generate_password_summary">Genera una contraseña fuerte para asociarla con su apunte, defínalo fácilmente de acuerdo con el criterio del formulario y no olvide una contraseña segura.</string>
<string name="education_entry_new_field_title">Añadir campos personalizados</string>
<string name="education_entry_new_field_summary">Registra un campo adicional, añada un valor y, opcionalmente, protégelo.</string>
<string name="education_unlock_title">Desbloquee su base de datos</string>
<string name="education_field_copy_title">Copia un campo</string>
<string name="education_field_copy_summary">Los campos copiados pueden pegarse en cualquier sitio.
\n
\nUtilice el método de relleno de formularios que prefiera.</string>
<string name="education_field_copy_summary">Los campos copiados pueden pegarse en cualquier sitio.\n\nUtilice el método de relleno de formularios que prefiera.</string>
<string name="education_lock_title">Bloquear la base de datos</string>
<string name="education_lock_summary">Bloquee su base de datos rápidamente, puede parametrizar la aplicación para bloquearla después de un tiempo o cuando la pantalla se apague.</string>
<string name="education_sort_title">Ordenar elementos</string>
<string name="education_sort_summary">Ordenar registros y grupos de acuerdo a parámetros específicos.</string>
<string name="education_sort_summary">Elija como son ordenados los apuntes y grupos.</string>
<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 gestión de contraseñas, esta &lt;strong&gt;no tiene publicidad&lt;/strong&gt;, es &lt;strong&gt;libre, con licencia «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 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="education_donation_summary">Ayuda a mejorar la estabilidad, la seguridad y a añadir 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 anuncios&lt;/strong&gt;, &lt;strong&gt;software libre de copylefted&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 este &lt;strong&gt;estilo visual&lt;/strong&gt; y ayudará especialmente &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 su 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_donation">Al &lt;strong&gt;colaborar&lt;/strong&gt; en el proyecto <i>(monetariamente, código, traducción)</i>, ayudará a que siga existiendo y prosperando, y también será la elección para el procedimiento de desbloqueo del &lt;strong&gt;tema&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_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">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_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 observaciones.</string>
<string name="html_text_dev_feature_thanks">Muchas gracias por su 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">Recuerde mantener su aplicación actualizada instalando nuevas versiones.</string>
<string name="download">Descargar</string>
<string name="contribute">Contribuir</string>
<string name="style_choose_title">Tema de la 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>
<string name="icon_pack_choose_summary">Cambiar el paquete de iconos en la aplicación</string>
<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 ha podido cargar la clave. Intente disminuir el uso de memoria de KDF.</string>
<string name="style_choose_summary">Tema usado en la aplicación</string>
<string name="icon_pack_choose_title">Seleccionar un paquete de iconos</string>
<string name="icon_pack_choose_summary">Paquete de iconos usado en la aplicación</string>
<string name="edit_entry">Editar apunte</string>
<string name="error_load_database">No se ha podido cargar la base de datos.</string>
<string name="error_load_database_KDF_memory">No se ha podido cargar la clave. Intente reducir el \"Uso de memoria\" del KDF.</string>
<string name="list_entries_show_username_title">Mostrar nombres de usuario</string>
<string name="list_entries_show_username_summary">Muestra los nombres de usuario en las listas de entrada</string>
<string name="menu_copy">Copiar</string>
@@ -272,103 +265,100 @@
<string name="menu_file_selection_read_only">Protegido contra escritura</string>
<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">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">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="clipboard_warning">Si la eliminación del cortapapeles falla, borre su historial manualmente.</string>
<string name="allow_copy_password_warning">Aviso: el portapapeles es compartido por todas las aplicaciones. Si se copian datos confidenciales, otros programas pueden recuperarlos.</string>
<string name="allow_no_password_title">Permitir sin clave maestra</string>
<string name="allow_no_password_summary">Permite pulsar el botón \"Abrir\" si no son seleccionadas las credenciales</string>
<string name="enable_education_screens_title">Consejos educativos</string>
<string name="enable_education_screens_summary">Destaca los 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 la base de datos de solo lectura por defecto</string>
<string name="enable_read_only_summary">Abre la base de datos como 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>
<string name="keyboard_setting_label">Configuración del Teclado mágico</string>
<string name="keyboard_name">Magikeyboard</string>
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
<string name="keyboard_setting_label">Configuración de Magikeyboard</string>
<string name="keyboard_entry_category">Entrada</string>
<string name="keyboard_entry_timeout_title">Tiempo límite</string>
<string name="keyboard_entry_timeout_summary">Tiempo límite para vaciar la entrada del teclado</string>
<string name="keyboard_notification_entry_title">Información sobre notificación</string>
<string name="keyboard_notification_entry_summary">Mostrar una notificación cuando esté disponible una entrada</string>
<string name="keyboard_notification_entry_summary">Muestra una notificación cuando esté disponible un apunte</string>
<string name="keyboard_notification_entry_content_title_text">Entrada</string>
<string name="keyboard_notification_entry_content_title">%1$s disponible en Teclado mágico</string>
<string name="keyboard_notification_entry_content_title">%1$s disponible en Magikeyboard</string>
<string name="keyboard_notification_entry_content_text">%1$s</string>
<string name="keyboard_notification_entry_clear_close_title">Vaciar al cerrar</string>
<string name="keyboard_notification_entry_clear_close_summary">Cerrar la base de datos al cerrar la notificación</string>
<string name="keyboard_notification_entry_clear_close_summary">Cierra la base de datos al cerrar la notificación</string>
<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 tecla</string>
<string name="keyboard_key_sound_title">Sonar al pulsar tecla</string>
<string name="keyboard_key_vibrate_title">Vibrar al pulsar las teclas</string>
<string name="keyboard_key_sound_title">Sonar al pulsar las teclas</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 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 expire la duración del portapapeles o cuando se cierre la notificación después de empezar a utilizarla</string>
<string name="clear_clipboard_notification_summary">Bloquea la base de datos cuando caduque la duración del portapapeles o se cierre la notificación tras 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">Al ver una entrada en KeePassDX, rellenar con esta el teclado mágico</string>
<string name="keyboard_selection_entry_summary">Al visualizar un apunte en KeePassDX, rellena Magikeyboard con ese apunte</string>
<string name="delete_entered_password_title">Eliminar contraseña</string>
<string name="delete_entered_password_summary">Elimina la contraseña introducida tras un intento de conexión a una base de datos</string>
<string name="content_description_open_file">Abrir archivo</string>
<string name="content_description_node_children">Nodo heredado</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_entry">Añadir apunte</string>
<string name="content_description_add_group">Añadir grupo</string>
<string name="content_description_file_information">Información del archivo</string>
<string name="content_description_password_checkbox">Casilla de contraseña</string>
<string name="content_description_keyfile_checkbox">Casilla del archivo clave</string>
<string name="content_description_entry_icon">Icono de entrada</string>
<string name="content_description_keyfile_checkbox">Casilla del cerrojo</string>
<string name="content_description_entry_icon">Icono de apunte</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="entry_UUID">UUID</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="error_move_entry_here">No puede mover un apunte aquí.</string>
<string name="error_copy_entry_here">No puede copiar un apunte aquí.</string>
<string name="list_groups_show_number_entries_title">Mostrar número de entradas</string>
<string name="list_groups_show_number_entries_summary">Muestra el número de entradas de 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 clave.</string>
<string name="error_create_database_file">No se puede crear la base de datos con esta contraseña y este cerrojo.</string>
<string name="menu_advanced_unlock_settings">Desbloqueo de dispositivos</string>
<string name="biometric">Biometría</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 del dispositivo si la base de datos está configurada para utilizarlo</string>
<string name="biometric_auto_open_prompt_title">Abrir solicitud automáticamente</string>
<string name="biometric_auto_open_prompt_summary">Solicita auto-desbloqueo del dispositivo 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 como desee.</string>
<string name="lock_database_back_root_title">Presione \'Atrás\' para bloquear</string>
<string name="education_read_only_summary">Cambiar el modo de inicio de la sesión. \n \n\"Protegido contra escritura\" evita cambios involuntarios en la base de datos. \n\"Modificable\" le permite añadir, eliminar o modificar todos los elementos que desee.</string>
<string name="lock_database_back_root_title">Presione Atrás para bloquear</string>
<string name="content_description_repeat_toggle_password_visibility">Repetir conmutación de visibilidad de contraseña</string>
<string name="master_key">Clave maestra</string>
<string name="security">Seguridad</string>
<string name="entry_history">Historial</string>
<string name="entry_setup_otp">Establecer contraseña de un solo uso</string>
<string name="entry_setup_otp">Fijar 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_secret">Secreta</string>
<string name="otp_period">Período (segundos)</string>
<string name="otp_counter">Contador</string>
<string name="otp_digits">Dígitos</string>
<string name="otp_algorithm">Algoritmo</string>
<string name="entry_otp">Contraseña de un solo uso</string>
<string name="error_invalid_OTP">Secreto de contraseña de un solo uso inválida.</string>
<string name="entry_otp">Contraseña de un solo uso (OTP)</string>
<string name="error_invalid_OTP">Secreto de un solo uso no válido.</string>
<string name="error_disallow_no_credentials">Se debe establecer al menos una credencial.</string>
<string name="error_otp_secret_key">La clave secreta debe estar en formato Base32.</string>
<string name="error_otp_counter">El 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 coincide con el elemento requerido.</string>
<string name="error_create_database">No se puede crear el archivo de la 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;añadir funciones&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="html_about_contribution">Con el fin de &lt;strong&gt;mantener nuestra libertad&lt;/strong&gt;, &lt;strong&gt;corregir errores&lt;/strong&gt;, &lt;strong&gt;añadir características&lt;/strong&gt; y &lt;strong&gt; para estar siempre activo&lt;/strong&gt;, contamos con su &lt;strong&gt;contribución&lt;/strong&gt;.</string>
<string name="content_description_add_item">Añadir elemento</string>
<string name="download_complete">¡Completado!</string>
<string name="download_finalization">Finalizando…</string>
<string name="download_progression">En curso: %1$d %%</string>
<string name="download_progression">En curso: %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 después de cada acción importante (en modo \"Modificable\")</string>
<string name="enable_auto_save_database_summary">Guarda 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>
@@ -377,21 +367,21 @@
<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 vez)</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Requiere cambiar la clave 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 la contraseña maestra (días)</string>
<string name="settings_database_force_changing_master_key_summary">Requiere cambiar la clave 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">Utiliza el desbloqueo de dispositivos 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="advanced_unlock_explanation_summary">Utiliza el desbloqueo del dispositivo 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 de usuario</string>
<string name="lock_database_show_button_title">Mostrar botón de bloqueo</string>
<string name="autofill_preference_title">Configuración de autocompletado</string>
<string name="menu_master_key_settings">Configuración de contraseña maestra</string>
<string name="menu_security_settings">Configuración de seguridad</string>
<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="warning_database_read_only">Conceder acceso de escritura al archivo para guardar los cambios en la base de datos</string>
<string name="show_recent_files_summary">Muestra las ubicaciones de las bases de datos recientes</string>
<string name="show_recent_files_title">Mostrar archivos recientes</string>
<string name="remember_database_locations_summary">Lleva un registro de dónde se almacenan las bases de datos</string>
<string name="remember_database_locations_summary">Realiza un seguimiento de dónde se almacenan las bases de datos</string>
<string name="remember_database_locations_title">Recordar ubicaciones de 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>
@@ -409,118 +399,116 @@
<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>
<string name="warning_empty_keyfile">No se recomienda agregar un cerrojo vacío.</string>
<string name="warning_sure_remove_data">¿Eliminar estos datos de todos modos\?</string>
<string name="warning_sure_add_file">¿Agregar el archivo de todos modos\?</string>
<string name="warning_replace_file">Al cargar este archivo reemplazará el existente.</string>
<string name="warning_replace_file">Al cargar este archivo, se 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="warning_database_link_revoked">Acceso al archivo revocado por el administrador de archivos</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_summary">Oculta los enlaces rotos en la lista de bases de datos recientes</string>
<string name="hide_broken_locations_title">Ocultar enlaces rotos de la base de datos</string>
<string name="remember_keyfile_locations_summary">Lleva un registro de dónde se almacenan los archivos clave</string>
<string name="remember_keyfile_locations_title">Recordar ubicaciones de archivos clave</string>
<string name="subdomain_search_summary">Buscar dominios web con restricciones de subdominios</string>
<string name="remember_keyfile_locations_summary">Mantiene seguimiento de dónde los cerrojos son almacenados</string>
<string name="remember_keyfile_locations_title">Recordar las ubicaciones de los archivos clave</string>
<string name="subdomain_search_summary">Busca 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">Eliminar historial</string>
<string name="error_otp_digits">El token debe contener de %1$d a %2$d dígitos.</string>
<string name="error_otp_digits">El código debe contener entre %1$d y %2$d dígitos.</string>
<string name="entry_attachments">Adjuntos</string>
<string name="entry_add_attachment">Añadir 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>
<string name="education_add_attachment_summary">Cargue un archivo adjunto a la entrada para guardar datos externos importantes.</string>
<string name="education_add_attachment_summary">Suba un archivo adjunto a su apunte para guardar datos externos importantes.</string>
<string name="hide_expired_entries_summary">No se muestran las entradas caducadas</string>
<string name="warning_remove_unlinked_attachment">La eliminación de datos no vinculados puede disminuir el tamaño de su base de datos, pero también puede eliminar los datos usados por los complementos de KeePass.</string>
<string name="warning_file_too_big">Una base de datos de KeePass está pensada para contener solamente archivos utilitarios pequeños (como las claves de PGP).
\n
\nSi procede con esta carga, la base de datos podría crecer mucho y afectar el rendimiento.</string>
<string name="warning_remove_unlinked_attachment">La eliminación de datos no vinculados puede reducir el tamaño de tu base de datos, pero también puede eliminar los datos usados por los complementos de KeePass.</string>
<string name="warning_file_too_big">Se supone que una base de datos de KeePass solo contiene pequeños archivos de utilidades (como archivos de claves PGP).\n\nTu base de datos puede llegar a ser muy grande y reducir el rendimiento con esta carga.</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="database_data_remove_unlinked_attachments_summary">Elimina los adjuntos contenidos en la base de datos pero no vinculados a un apunte</string>
<string name="database_data_remove_unlinked_attachments_title">Eliminar datos no vinculados</string>
<string name="data">Datos</string>
<string name="advanced_unlock_delete_all_key_warning">¿Borrar todas las claves de cifrado relacionadas con el reconocimiento del desbloqueo del dispositivo\?</string>
<string name="advanced_unlock_delete_all_key_warning">¿Borrar todas las claves de cifrado relacionadas con el reconocimiento de desbloqueo avanzado?</string>
<string name="advanced_unlock_timeout">Tiempo de espera de desbloqueo del dispositivo</string>
<string name="temp_advanced_unlock_timeout_summary">Duración del uso del desbloqueo del dispositivo antes de borrar su contenido</string>
<string name="temp_advanced_unlock_timeout_title">Caducidad del desbloqueo del dispositivo</string>
<string name="temp_advanced_unlock_enable_summary">No almacenes ningún contenido cifrado para utilizar el desbloqueo del dispositivo</string>
<string name="temp_advanced_unlock_enable_summary">No almacenar ningún contenido cifrado para usar el desbloqueo avanzado</string>
<string name="temp_advanced_unlock_enable_title">Desbloqueo temporal de los dispositivos</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">Pulsa para eliminar las claves de desbloqueo del dispositivo</string>
<string name="device_credential_unlock_enable_title">Desbloqueo de credenciales del dispositivo</string>
<string name="advanced_unlock_tap_delete">Pulsa para eliminar las teclas de desbloqueo avanzado</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="clipboard_explanation_summary">Copia los campos del apunte 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 este botón.</string>
<string name="advanced_unlock_prompt_not_initialized">No se ha podido inicializar el aviso de desbloqueo del dispositivo.</string>
<string name="credential_before_click_advanced_unlock_button">Teclee la contraseña y luego pulse sobre este botón.</string>
<string name="advanced_unlock_prompt_not_initialized">No se puede inicializar el aviso de desbloqueo avanzado.</string>
<string name="advanced_unlock_scanning_error">Error de desbloqueo del dispositivo: %1$s</string>
<string name="advanced_unlock_not_recognized">No se reconoció la huella digital para desbloquear el dispositivo</string>
<string name="advanced_unlock_not_recognized">No se ha podido reconocer la impresión de desbloqueo avanzado</string>
<string name="advanced_unlock_invalid_key">No se puede leer la clave de desbloqueo del dispositivo. Por favor, bórrala y repite el procedimiento de reconocimiento del desbloqueo.</string>
<string name="advanced_unlock_prompt_extract_credential_message">Extraer la credencial de la base de datos con los datos de desbloqueo del dispositivo</string>
<string name="advanced_unlock_prompt_extract_credential_title">Reconocimiento de desbloqueo de los dispositivos</string>
<string name="advanced_unlock_prompt_extract_credential_title">Reconocimiento de desbloqueo del dispositivo</string>
<string name="advanced_unlock_prompt_store_credential_message">Aún debes recordar la credencial principal de tu caja fuerte si usas el reconocimiento para el desbloqueo del dispositivo.</string>
<string name="advanced_unlock_prompt_store_credential_title">Enlace para el desbloqueo del dispositivo</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="biometric_security_update_required">Se requiere actualización de 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_keyfile_explanation">El contenido del cerrojo 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 del dispositivo</string>
<string name="contains_duplicate_uuid_procedure">¿Solucionar el problema generando nuevos UUID para que los duplicados continúen?</string>
<string name="menu_keystore_remove_key">Eliminar la clave de desbloqueo del dispositivo</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 por entrada</string>
<string name="max_history_items_summary">Limitar el número de elementos del historial por entrada</string>
<string name="settings_database_recommend_changing_master_key_title">Recomendar renovación</string>
<string name="max_history_size_summary">Limitar el tamaño del historial por apunte</string>
<string name="max_history_items_summary">Limitar el número de elementos del historial por apunte</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="settings_database_recommend_changing_master_key_summary">Recomienda cambiar la clave maestra (días)</string>
<string name="notification">Notificación</string>
<string name="hide_expired_entries_title">Ocultar las entradas expiradas</string>
<string name="upload_attachment">Cargar %1$s</string>
<string name="education_setup_OTP_summary">Configurar la gestión de contraseñas de un solo uso (HOTP / TOTP) para generar un token solicitado para la autenticación de dos factores (2FA).</string>
<string name="education_setup_OTP_title">Establecer la contraseña de un solo uso</string>
<string name="hide_expired_entries_title">Ocultar entradas caducadas</string>
<string name="upload_attachment">Subir %1$s</string>
<string name="education_setup_OTP_summary">Configura la gestión de contraseñas de un solo uso (HOTP / TOTP) para generar un testigo solicitado para la autenticación de dos factores (2FA).</string>
<string name="education_setup_OTP_title">Establecer contraseñ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 de la base de datos de los dispositivos</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">Solicitar datos de guardado al completar el llenado de 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">Trate de guardar la información de búsqueda al hacer una selección de entrada manual para facilitar los usos futuros</string>
<string name="autofill_save_search_info_title">Guardar la información de la búsqueda</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="autofill_read_only_save">No se permite guardar datos en una base de datos abierta como de solo lectura.</string>
<string name="autofill_block_restart">Reinicia la aplicación que contiene el formulario para activar el bloqueo.</string>
<string name="autofill_web_domain_blocklist_summary">Lista de dominios web en los que se impide el autocompletado</string>
<string name="autofill_web_domain_blocklist_title">Lista de bloqueo de dominios web</string>
<string name="autofill_application_id_blocklist_summary">Lista de aplicaciones en las que se impide el autocompletado</string>
<string name="autofill_application_id_blocklist_title">Lista de bloqueo de aplicaciones</string>
<string name="autofill_ask_to_save_data_summary">Solicita guardar datos cuando está completado el relleno de un formulario</string>
<string name="autofill_ask_to_save_data_title">Preguntar para guardar los datos</string>
<string name="autofill_save_search_info_summary">Intenta guardar la información de búsqueda al seleccionar manualmente un apunte para facilitar su uso en el futuro</string>
<string name="autofill_save_search_info_title">Guardar información de la búsqueda</string>
<string name="autofill_close_database_summary">Cierra la base de datos tras una selección de auto-completado</string>
<string name="autofill_close_database_title">Cerrar base de datos</string>
<string name="enter">Entrar</string>
<string name="backspace">Retroceder</string>
<string name="select_entry">Seleccionar la entrada</string>
<string name="select_entry">Seleccionar apunte</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_lock_summary">Auto-volver al teclado anterior tras bloquear la base de datos</string>
<string name="keyboard_previous_lock_title">Bloquear base de datos</string>
<string name="keyboard_previous_fill_in_summary">Cambiar automáticamente al teclado anterior tras ejecutar \"Acción de la tecla automática\"</string>
<string name="keyboard_previous_fill_in_title">Volver atrás</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_summary">Autovolver 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">Intente guardar la información compartida para su uso en el futuro cuando seleccione entradas manualmente</string>
<string name="keyboard_auto_go_action_title">Acción automática de la tecla</string>
<string name="keyboard_save_search_info_summary">Intente guardar información compartida cuando realice una selección manual de apunte para utilizar más fácil en el futuro</string>
<string name="keyboard_save_search_info_title">Guardar información compartida</string>
<string name="show_uuid_summary">Muestra el UUID vinculado a una entrada o a un grupo</string>
<string name="show_uuid_title">Mostrar UUID</string>
<string name="error_rebuild_list">No se puede reconstruir correctamente la lista.</string>
<string name="error_database_uri_null">No se puede recuperar la URI de la base de datos.</string>
<string name="autofill_inline_suggestions_summary">Intenta mostrar sugerencias de autocompletado directamente desde un teclado compatible</string>
<string name="autofill_inline_suggestions_keyboard">Añadidas sugerencias de autocompletado.</string>
<string name="autofill_inline_suggestions_keyboard">Sugerencias de autocompletado añadidas.</string>
<string name="warning_database_revoked">Acceso al archivo revocado por el administrador de archivos, cierra la base de datos y vuelva a abrirla desde su ubicación.</string>
<string name="unit_gibibyte">GiB</string>
<string name="unit_mebibyte">MiB</string>
@@ -530,7 +518,7 @@
<string name="warning_database_info_changed_options">Fusionar los datos, sobrescribir las modificaciones externas guardando la base de datos o recargarla con los últimos cambios.</string>
<string name="warning_database_info_changed">La información contenida en su archivo de base de datos ha sido modificada fuera de la aplicación.</string>
<string name="menu_reload_database">Recargar datos</string>
<string name="error_otp_type">El tipo de OTP existente no es reconocido por este formulario, su validación ya no puede generar correctamente el token.</string>
<string name="error_otp_type">El tipo de OTP existente no es reconocido por este formulario, es posible que su validación ya no genere correctamente el código.</string>
<string name="download_canceled">¡Cancelado!</string>
<string name="error_duplicate_file">Los datos del archivo ya existen.</string>
<string name="error_upload_file">Se ha producido un error al cargar los datos del archivo.</string>
@@ -538,16 +526,16 @@
<string name="content_description_otp_information">Información de contraseña de un solo uso</string>
<string name="icon_section_custom">Personalizado</string>
<string name="icon_section_standard">Estándar</string>
<string name="style_brightness_summary">Seleccionar temas oscuros o claros</string>
<string name="style_brightness_summary">Selecciona temas oscuros o claros</string>
<string name="style_brightness_title">Brillo del tema</string>
<string name="properties">Propiedades</string>
<string name="error_import_app_properties">Error al importar la configuración de la aplicación</string>
<string name="error_export_app_properties">Error al exportar la configuración de la aplicación</string>
<string name="error_import_app_properties">Error al importar la configuración de la aplicación.</string>
<string name="error_export_app_properties">Error al exportar la configuración de la aplicación.</string>
<string name="success_export_app_properties">Exportada la configuración de la aplicación</string>
<string name="success_import_app_properties">Importada la configuración de la aplicación</string>
<string name="export_app_properties_summary">Crear un archivo para exportar la configuración de la aplicación</string>
<string name="export_app_properties_summary">Crea un archivo para exportar las propiedades de la aplicación</string>
<string name="export_app_properties_title">Exportar la configuración de la aplicación</string>
<string name="import_app_properties_summary">Selecciona un archivo para importar la configuración de la aplicación</string>
<string name="import_app_properties_summary">Selecciona un archivo para importar las propiedades de la aplicación</string>
<string name="import_app_properties_title">Importar la configuración de la aplicación</string>
<string name="error_start_database_action">Se ha producido un error al realizar una acción en la base de datos.</string>
<string name="error_remove_file">Se ha producido un error al eliminar los datos del archivo.</string>
@@ -572,41 +560,41 @@
<string name="cryptocurrency">Cartera de criptomonedas</string>
<string name="type">Tipo</string>
<string name="wireless">Wi-Fi</string>
<string name="email_address">Dirección de correo electrónico</string>
<string name="email">Correo electrónico</string>
<string name="email_address">Dirección de correo-e</string>
<string name="email">Correo-e</string>
<string name="date_of_issue">Fecha de emisión</string>
<string name="place_of_issue">Lugar de emisión</string>
<string name="name">Nombre</string>
<string name="id_card">Documento de identidad</string>
<string name="id_card">Tarjeta de identidad</string>
<string name="number">Número</string>
<string name="holder">Titular</string>
<string name="debit_credit_card">Tarjeta de Crédito / Débito</string>
<string name="template_group_name">Plantillas</string>
<string name="international_bank_account_number">IBAN</string>
<string name="bank_identifier_code">SWIFT / BIC</string>
<string name="token">Token</string>
<string name="token">Testigo</string>
<string name="ssid">SSID</string>
<string name="personal_identification_number">PIN</string>
<string name="card_verification_value">CVV</string>
<string name="show_otp_token_summary">Muestra los tokens OTP en la lista de entradas</string>
<string name="show_otp_token_title">Mostrar token OTP</string>
<string name="show_otp_token_summary">Muestra los códigos OTP en la lista de entradas</string>
<string name="show_otp_token_title">Mostrar código OTP</string>
<string name="menu_external_icon">Icono externo</string>
<string name="autofill_manual_selection_summary">Mostrar opción para permitir al usuario seleccionar la entrada de la base de datos</string>
<string name="autofill_manual_selection_summary">Muestra la opción para permitir al usuario seleccionar la entrada de la base de datos</string>
<string name="autofill_manual_selection_title">Selección manual</string>
<string name="autofill_select_entry">Seleccionar entrada…</string>
<string name="hint_icon_name">Nombre del icono</string>
<string name="warning_exact_alarm">No ha permitido que la app use una alarma exacta. Como resultado, las funciones que requieren un temporizador no se harán con una hora exacta.</string>
<string name="permission">Permiso</string>
<string name="content_description_database_color">Color de la base de datos</string>
<string name="content_description_entry_foreground_color">Color de primer plano de la entrada</string>
<string name="content_description_entry_background_color">Color de fondo de la entrada</string>
<string name="content_description_entry_foreground_color">Color de primer plano del apunte</string>
<string name="content_description_entry_background_color">Color de fondo del apunte</string>
<string name="tags">Etiquetas</string>
<string name="warning_database_info_reloaded">La recarga de la base de datos borrará los datos modificados localmente.</string>
<string name="warning_keyfile_integrity">El hash del archivo no está garantizado porque Android puede cambiar sus datos sobre la marcha. Cambia la extensión del archivo a .bin para una correcta integridad.</string>
<string name="enable_keep_screen_on_title">Mantener la pantalla encendida</string>
<string name="enable_keep_screen_on_summary">Mantén la pantalla encendida cuando veas o edites una entrada</string>
<string name="warning_keyfile_integrity">El hash del archivo no está garantizado porque Android puede cambiar sus datos sobre la marcha. Cambia la extensión del archivo a .bin para una integridad correcta.</string>
<string name="enable_keep_screen_on_title">Mantener pantalla encendida</string>
<string name="enable_keep_screen_on_summary">Mantiene la pantalla encendida cuando se visualiza la entrada</string>
<string name="enable_screenshot_mode_title">Modo captura de pantalla</string>
<string name="enable_screenshot_mode_summary">Permitir que otras aplicaciones graben o tomen capturas de pantalla de la aplicación</string>
<string name="enable_screenshot_mode_summary">Permite que aplicaciones de terceros graben o tomen pantallazos de la aplicación</string>
<string name="show_entry_colors_summary">Muestra los colores de primer y segundo plano de una entrada</string>
<string name="show_entry_colors_title">Colores de entrada</string>
<string name="menu_merge_database">Fusionar datos</string>
@@ -615,52 +603,53 @@
<string name="regex">Expresión regular</string>
<string name="content_description_nav_header">Cabecera de navegación</string>
<string name="navigation_drawer_open">Cajón de navegación abierto</string>
<string name="case_sensitive">Sensible a mayúsculas y minúsculas</string>
<string name="auto_type_sequence">Secuencia de autocompletado</string>
<string name="case_sensitive">Sensible a MAYÚS/minús</string>
<string name="auto_type_sequence">Secuencia auto-tecleada</string>
<string name="custom_data">Datos personalizados</string>
<string name="current_group">Grupo actual</string>
<string name="search_filters">Filtros de búsqueda</string>
<string name="menu_merge_from">Fusionar desde </string>
<string name="menu_merge_from">Fusionar desde…</string>
<string name="menu_save_copy_to">Guardar una copia en…</string>
<string name="inherited">Heredar</string>
<string name="expired">Caducada</string>
<string name="colorize_password_summary">Colorear caracteres de contraseña por tipo</string>
<string name="warning_database_already_opened">Ya hay abierta una base de datos, ciérrela antes de abrir otra</string>
<string name="exclude_ambiguous_chars">Excluya caracteres ambiguos</string>
<string name="consider_chars_filter">Considere caracteres</string>
<string name="entropy_calculate">Entropía: calcular…</string>
<string name="colorize_password_summary">Colorea los caracteres de contraseña por tipo</string>
<string name="warning_database_already_opened">Ya hay abierta una base de datos, ciérrala antes de abrir la nueva</string>
<string name="exclude_ambiguous_chars">Excluir caracteres ambiguos</string>
<string name="consider_chars_filter">Considerar caracteres</string>
<string name="entropy_calculate">Entropía: Calcular…</string>
<string name="word_separator">Separador</string>
<string name="advanced_unlock_keystore_warning">Esta característica almacenará credenciales cifradas en el almacenaje seguro KeyStore de su dispositivo.
<string name="advanced_unlock_keystore_warning">Esta función almacenará datos de credenciales cifrados en el almacén de claves seguro del dispositivo.
\n
\nDependiendo de la implementación del API nativo del sistema operativo, tal vez no sea completamente funcional.
\nCompruebe la compatibilidad y garantía del almacenaje KeyStore con el fabricante de su dispositivo y el creadas de la ROM que está utilizando.</string>
<string name="content_description_passphrase_word_count">Recuento de palabras de la frase de paso</string>
\nDependiendo de la implementación de la API nativa del sistema operativo, puede que no sea totalmente funcional.
\n
\nComprueba la compatibilidad y seguridad del KeyStore con el fabricante de tu dispositivo y el creador de la ROM que estés utilizando.</string>
<string name="content_description_passphrase_word_count">Recuento de palabras de la frase de acceso</string>
<string name="passphrase">Frase de acceso</string>
<string name="colorize_password_title">Colorear contraseñas</string>
<string name="keyboard_previous_search_title">Pantalla de búsqueda</string>
<string name="keyboard_previous_search_summary">Volver automáticamente al teclado anterior en la pantalla de búsqueda</string>
<string name="keyboard_previous_search_summary">Vuelve automáticamente al teclado anterior en la pantalla de búsqueda</string>
<string name="entropy">Entropía: %1$s bit</string>
<string name="entropy_high">Entropía: Alta</string>
<string name="at_least_one_char">Al menos un carácter desde cada</string>
<string name="ignore_chars_filter">Descartar caracteres</string>
<string name="at_least_one_char">Al menos un carácter de cada</string>
<string name="ignore_chars_filter">Ignorar caracteres</string>
<string name="lower_case">minúsculas</string>
<string name="upper_case">MAYÚSCULAS</string>
<string name="title_case">Tipo Titular</string>
<string name="character_count">Conteo de caracteres: %1$d</string>
<string name="screenshot_mode_banner_text">Modo captura de pantalla</string>
<string name="error_hardware_key_unsupported">La llave física no está soportada.</string>
<string name="html_about_privacy">&lt;strong&gt;No se recuperan datos del usuario&lt;/strong&gt;, esta aplicación no se conecta a ningún servidor, funciona solo localmente y respeta completamente la privacidad del usuario.</string>
<string name="error_unable_merge_database_kdb">Imposible fusionar desde una base de datos V1.</string>
<string name="title_case">1ª letra en mayúscula</string>
<string name="character_count">Recuento de caracteres: %1$d</string>
<string name="screenshot_mode_banner_text">Modo de captura de pantalla</string>
<string name="error_hardware_key_unsupported">La llave por hardware no es compatible.</string>
<string name="html_about_privacy">&lt;strong&gt;No se recupera ningún dato del usuario&lt;/strong&gt;, esta aplicación no se conecta a ningún servidor y funciona solo localmente y respeta plenamente la privacidad de los usuarios.</string>
<string name="error_unable_merge_database_kdb">No se puede fusionar con un archivo de base de datos kdb</string>
<string name="error_cancel_by_user">Cancelado por el usuario.</string>
<string name="error_no_response_from_challenge">Imposible obtener la respuesta del desafío.</string>
<string name="auto_type">Autocompletar</string>
<string name="error_no_response_from_challenge">No se puede obtener la respuesta del desafío.</string>
<string name="auto_type">Auto-teclear</string>
<string name="hardware_key">Llave física</string>
<string name="error_no_hardware_key">Seleccione una llave física.</string>
<string name="error_XML_malformed">Error en la sintaxis XML.</string>
<string name="error_challenge_already_requested">Desafío ya solicitado</string>
<string name="error_XML_malformed">XML incorrecto.</string>
<string name="error_challenge_already_requested">Desafío ya solicitado.</string>
<string name="error_response_already_provided">Respuesta ya recibida.</string>
<string name="error_driver_required">Se necesita un controlador para %1$s.</string>
<string name="error_location_unknown">La ubicación de la base de datos es desconocida, la acción de la base de datos no se puede realizar.</string>
<string name="error_location_unknown">Se desconoce la ubicación de la base de datos, no puede realizar la acción de base de datos.</string>
<string name="error_empty_key">La clave no puede estar vacía.</string>
<string name="corrupted_file">Archivo dañado.</string>
<string name="remember_hardware_key_title">Recordar llaves físicas</string>
@@ -668,7 +657,7 @@
<string name="content_description_hardware_key_checkbox">Casilla de llave física</string>
<string name="waiting_challenge_request">Esperando solicitud de desafío…</string>
<string name="waiting_challenge_response">Esperando respuesta al desafío…</string>
<string name="merge_success">Fusión finalizada con éxito</string>
<string name="merge_success">Fusión correctamente realizada</string>
<string name="info">Información</string>
<string name="menu_app_settings_summary">Buscar, bloquear, historial, propiedades</string>
<string name="menu_form_filling_settings_summary">Teclado, autocompletar, portapapeles</string>
@@ -676,9 +665,7 @@
<string name="menu_advanced_unlock_settings_summary">Biometría, credencial del dispositivo</string>
<string name="menu_security_settings_summary">Cifrado, función de derivación de las claves</string>
<string name="master_key_settings_summary">Cambio, renovación</string>
<string name="warning_database_notification_permission">El permiso de notificación te permite mostrar el estado de la base de datos y bloquearla con un botón de fácil acceso.
\n
\nSi no activas este permiso, la base de datos abierta en segundo plano no será visible si hay otra aplicación en primer plano.</string>
<string name="warning_database_notification_permission">El permiso de notificación te permite mostrar el estado de la base de datos y bloquearla con un botón de fácil acceso.\n\nSi no activas este permiso, la base de datos abierta en segundo plano no será visible si hay otra aplicación en primer plano.</string>
<string name="warning_copy_permission">El permiso de notificación es necesario para utilizar la función de notificaciones para el portapapeles.</string>
<string name="later">Más tarde</string>
<string name="ask">Preguntar</string>
@@ -687,7 +674,24 @@
<string name="menu_appearance_settings_summary">Temas, colores, atributos</string>
<string name="unlock">Desbloquear</string>
<string name="education_validate_entry_title">Validar la entrada</string>
<string name="education_validate_entry_summary">No olvides validar tu entrada y guardar tu base de datos.
\n
\nSi se activa un bloqueo automático y olvidas que estabas haciendo una modificación, corres el riesgo de perder tus datos.</string>
<string name="education_validate_entry_summary">No olvide validar tu inicio de sesión y guardar tu base de datos.\n\nSi se activa un bloqueo automático y olvidas que estabas haciendo una modificación, corres el riesgo de perder tus datos.</string>
<string name="style_name_classic">Clásico</string>
<string name="style_name_divine">Divino</string>
<string name="style_name_forest">Bosque</string>
<string name="style_name_simple">Simple</string>
<string name="style_name_moon">Luna</string>
<string name="style_name_sun">Sol</string>
<string name="style_name_reply">Responder</string>
<string name="style_name_kunzite">Kunzite</string>
<string name="style_name_follow_system">Seguir el sistema</string>
<string name="style_name_light">Claro</string>
<string name="style_name_dark">Oscuro</string>
<string name="warning_database_info_changed_options_read_only">Recargue la base de datos con los últimos cambios.</string>
<string name="nodes">Nodos</string>
<string name="recursive_number_entries_summary">Calcula recursivamente el número de entradas en un grupo</string>
<string name="warning_large_keyfile">No se recomienda agregar un archivo de clave grande , esto puede impedir que se abra la base de datos.</string>
<string name="hide_templates_title">Ocultar plantillas</string>
<string name="generate_keyfile">Generar archivo de claves</string>
<string name="recursive_number_entries_title">Número recursivo de entradas</string>
<string name="hide_templates_summary">Las plantillas no se muestran</string>
</resources>

View File

@@ -0,0 +1,669 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="homepage">Meie veebisait</string>
<string name="about_description">KeePassi salasõnahalduri Androidi variant</string>
<string name="contact">Meie kontaktid</string>
<string name="info">Teave</string>
<string name="accept">Nõustu</string>
<string name="add_group">Lisa grupp</string>
<string name="master_key">Peavõti</string>
<string name="security">Turvalisus</string>
<string name="encryption">Krüptimine</string>
<string name="encryption_algorithm">Krüptoalgoritm</string>
<string name="key_derivation_function">Võtmetuletusfunktsioon</string>
<string name="app_timeout_summary">Ooteaeg enne andmebaasi lukustamist</string>
<string name="application">Rakendus</string>
<string name="feedback">Tagasiside</string>
<string name="contribution">Toeta meid</string>
<string name="add_entry">Lisa kirje</string>
<string name="edit_entry">Muuda kirjet</string>
<string name="app_timeout">Aegumine</string>
<string name="brackets">Sulud</string>
<string name="allow">Luba</string>
<string name="clipboard_cleared">Lõikelaud on tühjendatud</string>
<string name="content_description_background">Taust</string>
<string name="content_description_open_file">Ava fail</string>
<string name="content_description_add_entry">Lisa kirje</string>
<string name="content_description_add_group">Lisa grupp</string>
<string name="content_description_otp_information">Ühekordse salasõna teave</string>
<string name="content_description_entry_icon">Kirje ikoon</string>
<string name="content_description_database_color">Andmebaasi värv</string>
<string name="validate">Valideeri</string>
<string name="discard_changes">Kas loobud muudatustest?</string>
<string name="discard">Loobu</string>
<string name="entry_password_generator">Salasõna generaator</string>
<string name="content_description_password_length">Salasõna pikkus</string>
<string name="content_description_entry_foreground_color">Kirje esiplaani värv</string>
<string name="content_description_entry_background_color">Kirje taustavärv</string>
<string name="entry_add_field">Lisa väli</string>
<string name="entry_add_attachment">Lisa manus</string>
<string name="content_description_remove_field">Eemalda väli</string>
<string name="content_description_update_from_list">Uuenda</string>
<string name="content_description_remove_from_list">Kustuta</string>
<string name="select_to_copy">Vali %1$s kopeerimaks ta lõikelauale</string>
<string name="database">Andmebaas</string>
<string name="template_group_name">Mallid</string>
<string name="decrypting_db">Dekrüpteerime andmebaasi sisu…</string>
<string name="digits">Numbrid</string>
<string name="entry_cancel">Katkesta</string>
<string name="entry_notes">Märkmed</string>
<string name="entry_confpassword">Korda salasõna</string>
<string name="entry_created">Loodud</string>
<string name="entry_expires">Aegub</string>
<string name="expired">Aegunud</string>
<string name="entry_UUID">UUID</string>
<string name="entry_history">Ajalugu</string>
<string name="entry_attachments">Manused</string>
<string name="entry_keyfile">Võtmefail</string>
<string name="entry_modified">Muudetud</string>
<string name="searchable">Otsitav</string>
<string name="entry_not_found">Ei leidnud kirje sisu.</string>
<string name="entry_password">Salasõna</string>
<string name="save">Salvesta</string>
<string name="entry_title">Pealkiri</string>
<string name="otp_period">Kestus (sekundites)</string>
<string name="otp_type">Ühekordse salasõna tüüp</string>
<string name="otp_digits">Numbrid</string>
<string name="search_filters">Otsingufiltrid</string>
<string name="current_group">Praegune grupp</string>
<string name="otp_algorithm">Algoritm</string>
<string name="debit_credit_card">Debeet- / Krediitkaart</string>
<string name="version">Versioon</string>
<string name="entry_user_name">Kasutajanimi</string>
<string name="clipboard_error_title">Lõikelaua viga</string>
<string name="clipboard_error">Mõned seadmed ei luba rakendustel kasutada lõikelauda.</string>
<string name="content_description_add_node">Lisa sõlm</string>
<string name="content_description_node_children">Sõlme järglassõlmed</string>
<string name="content_description_file_information">Faili teave</string>
<string name="extended_ASCII">Laiendatud ASCII</string>
<string name="clipboard_timeout">Lõikelaua sisu aegumine</string>
<string name="clipboard_error_clear">Ei saanud tühjendada lõikelauda</string>
<string name="content_description_add_item">Lisa üksikasi</string>
<string name="content_description_password_checkbox">Salasõna märkeruut</string>
<string name="content_description_keyfile_checkbox">Võtmefaili märekruut</string>
<string name="content_description_hardware_key_checkbox">Füüsilise võtme märkruut</string>
<string name="content_description_credentials_information">Mandaatide info</string>
<string name="content_description_nav_header">Navigatsiooni päis</string>
<string name="retrieving_db_key">Laadime andmebaasi võtme…</string>
<string name="content_description_passphrase_word_count">Sõnu salafraasis</string>
<string name="default_checkbox">Kasuta vaikeandmebaasina</string>
<string name="entry_accessed">Viimati kasutatud</string>
<string name="waiting_challenge_request">Ootame pretensioonipäringut…</string>
<string name="waiting_challenge_response">Ootame pretensioonivastust…</string>
<string name="number">Kaardinumber</string>
<string name="card_verification_value">CVV</string>
<string name="personal_identification_number">PIN</string>
<string name="id_card">ID kaart</string>
<string name="name">Nimi</string>
<string name="email">E-post</string>
<string name="email_address">E-posti aadress</string>
<string name="wireless">WiFi</string>
<string name="ssid">SSID</string>
<string name="type">Tüüp</string>
<string name="cryptocurrency">Krüptoraha rahakott</string>
<string name="seed">Seeme</string>
<string name="account">Konto</string>
<string name="bank">Pank</string>
<string name="bank_name">Panga nimi</string>
<string name="hardware_key">Füüsiline võti</string>
<string name="regex">Regulaaravaldis</string>
<string name="holder">Kaardiomanik</string>
<string name="place_of_issue">Väljastamise asukoht</string>
<string name="date_of_issue">Väljastamise päev</string>
<string name="auto_type">Automaatne sisestus</string>
<string name="auto_type_sequence">Automaatse sisestuse järjestus</string>
<string name="public_key">Avalik võti</string>
<string name="private_key">Privaatvõti</string>
<string name="tags">Sildid</string>
<string name="custom_data">Kohandatud andmed</string>
<string name="entry_setup_otp">Võta kasutusele ühekordne salasõna</string>
<string name="otp_secret">Saladus</string>
<string name="otp_counter">Loendur</string>
<string name="bank_identifier_code">SWIFT / BIC</string>
<string name="international_bank_account_number">IBAN</string>
<string name="standard">Standard</string>
<string name="template">Mall</string>
<string name="error_invalid_db">Andmebaasi lugemine ei õnnestunud.</string>
<string name="error_no_name">Sisesta nimi.</string>
<string name="error_nokeyfile">Vali võtmefail.</string>
<string name="error_pass_match">Salasõnad ei klapi.</string>
<string name="error_create_database">Andmebaasifaili loomine ei õnnestunud.</string>
<string name="entry_url">URL</string>
<string name="error_file_not_create">Faili loomine ei õnnestunud</string>
<string name="entry_otp">Ühekordne salasõna</string>
<string name="clipboard_timeout_summary">Lõikelauale kopeeritud andmete hoidmise aeg (kui sinu seade sellist võimalust toetab)</string>
<string name="content_description_keyboard_close_fields">Sulge väljad</string>
<string name="case_sensitive">Tõstutundlik</string>
<string name="error_no_hardware_key">Vali raudvaraline võti.</string>
<string name="error_out_of_memory">Pole piisavat mälu kogu sinu andmebaasi laadimiseks.</string>
<string name="error_XML_malformed">Vigane XML.</string>
<string name="error_load_database">Andmebaasi laadimine ei õnnestunud.</string>
<string name="error_label_exists">Selline silt on juba olemas.</string>
<string name="secure_note">Turvaline märge</string>
<string name="membership">Liikmelisus</string>
<string name="error_can_not_handle_uri">KeePassDX ei oska töödelda seda võrguaadressi.</string>
<string name="error_invalid_path">Palun kontrolli, et asukoht on õige.</string>
<string name="error_move_entry_here">Kirjet ei saa siia tõsta.</string>
<string name="error_copy_entry_here">Kirjet ei saa siia kopeerida.</string>
<string name="error_copy_group_here">Gruppi ei saa siia kopeerida.</string>
<string name="error_create_database_file">Selle salasõna ja võtmefailiga ei saa andmebaasi luua.</string>
<string name="error_save_database">Andmebaasi salvestamine ei õnnestunud.</string>
<string name="passphrase">Salafraas</string>
<string name="error_field_name_already_exists">Selline väljanimi on juba olemas.</string>
<string name="error_file_to_big">Fail, mida sa proovid üles laadida, on liiga suur.</string>
<string name="error_upload_file">Faili andmete üleslaadimisel tekkis viga.</string>
<string name="error_duplicate_file">Faili andmed on juba olemas.</string>
<string name="error_remove_file">Faili andmete eemaldamisel tekkis viga.</string>
<string name="error_start_database_action">Andmebaasiga toimingu tegemisel tekkis viga.</string>
<string name="error_hardware_key_unsupported">Raudvaraline võti pole toetatud.</string>
<string name="field_name">Välja nimi</string>
<string name="field_value">Välja väärtus</string>
<string name="file_not_found_content">Faili ei õnnestunud leida. Proovi teda avada failihalduriga.</string>
<string name="file_browser">Failihaldur</string>
<string name="generate_password">Loo salasõna</string>
<string name="hint_conf_pass">Kinnita salasõna</string>
<string name="hint_generated_password">Loodud salasõna</string>
<string name="error_empty_key">Võti ei tohi olla tühi.</string>
<string name="error_invalid_OTP">Vigane OTP salasõna.</string>
<string name="error_move_group_here">Gruppi ei saa siia tõsta.</string>
<string name="error_word_reserved">See sõna on reserveeritud muuks kasutuseks ning sa ei saa teda pruukida.</string>
<string name="rounds">Iteratsioonide kordi</string>
<string name="error_otp_period">Ajavahemik peab jääma %1$d ja %2$d vahele.</string>
<string name="length">Pikkus</string>
<string name="token">Tunnusluba</string>
<string name="corrupted_file">Vigane või katkine fail.</string>
<string name="hint_pass">Salasõna</string>
<string name="education_generate_password_title">Loo tugev salasõna</string>
<string name="content_description_repeat_toggle_password_visibility">Lülita salasõna nähtavus korduvalt sisse/välja</string>
<string name="build_label">Kompileerimise viide: %1$s</string>
<string name="error_load_database_KDF_memory">Võtit ei leidunud. Proovi vähendada seadistust KDFi „Mälukasutus“.</string>
<string name="file_manager_install_description">Andmebaasifailide loomiseks, avamiseks ja salvestamiseks on vajalik failihalduri olemasolu, mis oskaks kasutada ACTION_CREATE_DOCUMENT ja ACTION_OPEN_DOCUMENT päringuid.</string>
<string name="navigation_drawer_open">Menüü on avatud</string>
<string name="navigation_drawer_close">Menüü on suletud</string>
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft on &lt;strong&gt;avatud lähtekoodiga&lt;/strong&gt; ja &lt;strong&gt;reklaamivaba&lt;/strong&gt;. \nSeda programmi levitatakse ilma igasuguse garantiita ning ta on litsentseeritud &lt;strong&gt;GPLv3&lt;/strong&gt; alusel.</string>
<string name="html_about_privacy">&lt;strong&gt;See rakendus ei laadi kasutajate andmeid&lt;/strong&gt;, ei loo ühendust ühegi serveriga, töötab nutiseadmes ainult kohalikus režiimis ja täies mahus austab kasutajate privaatsust.</string>
<string name="html_about_contribution">&lt;strong&gt;Meie vabaduse säilitamiseks&lt;/strong&gt;, &lt;strong&gt;vigade parandamiseks&lt;/strong&gt;, &lt;strong&gt;uue funktsionaalsuse lisamiseks&lt;/strong&gt; ning &lt;strong&gt;et olla alati tänapäevane&lt;/strong&gt;, me tõsiselt arvestame sinu &lt;strong&gt;kaastöö ja osalemisega&lt;/strong&gt;.</string>
<string name="inherited">Päri</string>
<string name="error_arc4">Arcfouri jadašiffer pole toetatud.</string>
<string name="error_wrong_length">Väljale „Pikkus“ sisesta positiivne täisarv.</string>
<string name="error_pass_gen_type">Vähemalt üks salasõna loomise tüüp peab olema valitud.</string>
<string name="error_rounds_too_large">Iteratsioonide kordade arv on liiga suur. Muudame väärtuseks 2147483648.</string>
<string name="error_string_key">Igal tekstil peab olema väljanimi.</string>
<string name="error_otp_secret_key">Salavõti peab olema base32 vormingus.</string>
<string name="error_otp_counter">Loendur peab olema vahemikus %1$d kuni %2$d.</string>
<string name="error_otp_digits">Tunnusloas peab olema %1$d kuni %2$d numbrit.</string>
<string name="hint_group_name">Grupi nimi</string>
<string name="hint_icon_name">Ikooni nimi</string>
<string name="hint_keyfile">Võtmefail</string>
<string name="hint_length">Pikkus</string>
<string name="password">Salasõna</string>
<string name="hide_password_title">Peida salasõnad</string>
<string name="hide_password_summary">Vakimisi peida salasõnad (***) maski taha</string>
<string name="colorize_password_title">Värvi salasõnad</string>
<string name="error_registration_read_only">Uue kirje salvestamine pole võimalik andmebaasis, milles on vaid lugemisõigus.</string>
<string name="error_database_uri_null">Andmebaasi ühtset ressursiidentifikaatorit ei õnnestu laadida.</string>
<string name="error_rebuild_list">Loendi korrektne uuesti loomine ei õnnestu.</string>
<string name="invalid_algorithm">Vale algoritm.</string>
<string name="invalid_db_same_uuid">%1$s sama UUIDga %2$s on juba olemas.</string>
<string name="invalid_db_sig">Andmebaasi vormingut ei õnnestu tuvastada.</string>
<string name="keyfile_is_empty">Võtmefail on tühi.</string>
<string name="colorize_password_summary">Värvi salasõnas leiduvad tähed ja märgid tüübi alusel</string>
<string name="list_entries_show_username_title">Näita kasutajanimesid</string>
<string name="list_entries_show_username_summary">Kasutajanimede kuvamine sisendiloendites</string>
<string name="list_groups_show_number_entries_title">Näita kirjete arvu</string>
<string name="show_uuid_title">Näita UUID\'d</string>
<string name="show_uuid_summary">Näita kirje või grupiga seotud UUID\'d</string>
<string name="menu_hide_password">Peida salasõna</string>
<string name="menu_showpass">Näita salasõna</string>
<string name="error_cancel_by_user">Katkestatud kasutaja poolt.</string>
<string name="error_driver_required">%1$s draiver on vajalik.</string>
<string name="generate_keyfile">Loo võtmefail</string>
<string name="nodes">Sõlmed</string>
<string name="list_groups_show_number_entries_summary">Näita kirjete arvu grupis</string>
<string name="recursive_number_entries_title">Rekursiivne kirjete arv</string>
<string name="recursive_number_entries_summary">Näita kirjete arvu grupis ja alamgruppides rekursiivselt</string>
<string name="menu_edit">Muuda</string>
<string name="menu_copy">Kopeeri</string>
<string name="menu_move">Teisalda</string>
<string name="menu_lock">Lukusta andmebaas</string>
<string name="menu_save_database">Salvesta andmed</string>
<string name="menu_merge_database">Mesti andmed</string>
<string name="menu_open">Ava</string>
<string name="menu_search">Otsi</string>
<string name="menu_reload_database">Laadi andmed uuesti</string>
<string name="menu_delete">Kustuta</string>
<string name="menu_paste">Aseta</string>
<string name="menu_cancel">Katkesta</string>
<string name="error_unable_merge_database_kdb">Mestimine teise kdb andmebaasifailiga ei õnnestu</string>
<string name="error_location_unknown">Andmebaasi asukoht pole teada ja toimingut andmebaasiga ei saa teha.</string>
<string name="menu_empty_recycle_bin">Tühjenda prügikast</string>
<string name="menu_restore_entry_history">Taasta ajalugu</string>
<string name="menu_delete_entry_history">Kustuta ajalugu</string>
<string name="menu_external_icon">Väline ikoon</string>
<string name="minus">Miinus</string>
<string name="export_app_properties_summary">Rakenduse seadistuste importimiseks loo fail</string>
<string name="list_size_title">Loendite suurus</string>
<string name="list_size_summary">Teksti suurus loendites</string>
<string name="creating_database">Loome salasõnade andmebaasi…</string>
<string name="loading_database">Laadime salasõnade andmebaasi…</string>
<string name="lowercase">väiketähed</string>
<string name="about">Rakenduse teave</string>
<string name="menu_change_key_settings">Muuda peavõtit</string>
<string name="copy_field">%1$s koopia</string>
<string name="settings">Seadistused</string>
<string name="menu_app_settings">Rakenduse seadistused</string>
<string name="menu_app_settings_summary">Otsing, lukustus, ajalugu, omadused</string>
<string name="menu_form_filling_settings">Vormide täitmine</string>
<string name="menu_form_filling_settings_summary">Klahvistik, automaattäide, lõikelaud</string>
<string name="menu_advanced_unlock_settings">Seadme lukustuse eemaldamine</string>
<string name="menu_advanced_unlock_settings_summary">Biomeetriline, nutiseadme reeglitega</string>
<string name="menu_database_settings">Andmebaasi seadistused</string>
<string name="menu_database_settings_summary">Metateave, prügikast, mallid, ajalugu</string>
<string name="menu_security_settings">Turvalisuse seadistused</string>
<string name="menu_security_settings_summary">Krüptimine, võtmetuletuse funktsioon</string>
<string name="master_key_settings_summary">Muutmine, uuendamine</string>
<string name="menu_donate">Toeta meid rahaliselt</string>
<string name="menu_url">Ava võrguaadress</string>
<string name="menu_file_selection_read_only">Kirjutuskaitstud</string>
<string name="menu_open_file_read_and_write">Muudetav</string>
<string name="never">Ei iialgi</string>
<string name="no_results">Otsingul pole tulemusi</string>
<string name="no_url_handler">Selle võrguaadressi avamiseks paigalda veebibrauser.</string>
<string name="auto_focus_search_title">Kiirotsing</string>
<string name="import_app_properties_title">Impordi rakenduse seadistused</string>
<string name="import_app_properties_summary">Rakenduse seadistuste importimiseks vali fail</string>
<string name="export_app_properties_title">Ekspordi rakenduse seadistused</string>
<string name="success_export_app_properties">Rakenduse seadistused on eksporditud</string>
<string name="error_export_app_properties">Rakenduse seadistuste eksportimisel tekkis viga</string>
<string name="root">Juurkaust</string>
<string name="memory_usage">Mälukasutus</string>
<string name="error_string_type">See tekst ei vasta päringule.</string>
<string name="menu_master_key_settings">Peavõtme seadistused</string>
<string name="menu_merge_from">Mesti siit…</string>
<string name="menu_save_copy_to">Salvesta koopia siia…</string>
<string name="menu_keystore_remove_key">Kustuta seadmelukustuse eemaldamise võti</string>
<string name="select_database_file">Ava olemasolev salasõnalaegas</string>
<string name="create_keepass_file">Loo uus salasõnalaegas</string>
<string name="remember_database_locations_title">Jäta meelde andmebaaside asukohad</string>
<string name="remember_database_locations_summary">Selle eelistusega jäetakse meelde kasutatud andmebaaside asukohad</string>
<string name="remember_keyfile_locations_title">Jäta meelde võtmefailide asukohad</string>
<string name="remember_keyfile_locations_summary">Selle eelistusega jäetakse meelde kasutatud võtmefailide asukohad</string>
<string name="remember_hardware_key_title">Jäta raudvaralised võtmed meelde</string>
<string name="remember_hardware_key_summary">Selle eelistusega peetakse arvet kasutatud raudvaraliste võtmete osas</string>
<string name="show_recent_files_title">Näita hiljutisi faile</string>
<string name="show_recent_files_summary">Näita hiljuti kasutatud andmebaaside asukohti</string>
<string name="hide_broken_locations_title">Peida katkised andmebaaside lingid</string>
<string name="hide_broken_locations_summary">Peida hiljutikasutatud andmebaaside loendist need kirjed, mille lingid enam ei toimi</string>
<string name="success_import_app_properties">Rakenduse seadistused on imporditud</string>
<string name="error_import_app_properties">Viga rakenduse seadistuste importimisel</string>
<string name="description_app_properties">KeePassDX võimalused rakenduse seadistuste haldamiseks</string>
<string name="encryption_explanation">Salasõnalaeka andmebaasi puhul kasutatud krüptoalgoritm</string>
<string name="kdf_explanation">Krüptoalgoritmi jaoks võtme loomisel peavõtit muudetakse võtetuletusfunktsiooniga, mis kasutab juhuslikke soolaterakesi.</string>
<string name="memory_usage_explanation">Võtmetuletusfunktsiooni poolt kasutatud mälumaht.</string>
<string name="parallelism">Rööpsus</string>
<string name="saving_database">Salvestan andmebaasi…</string>
<string name="command_execution">Käivitan käsku…</string>
<string name="do_not_kill_app">Palun ära sulge rakendust…</string>
<string name="space">Ruum</string>
<string name="sort_ascending">Kasvavalt ↓</string>
<string name="sort_groups_before">Grupid esmalt</string>
<string name="sort_recycle_bin_bottom">Prügikast viimasena</string>
<string name="sort_title">Pealkirja alusel</string>
<string name="sort_creation_time">Loomise aja alusel</string>
<string name="sort_last_modify_time">Muutmise aja alusel</string>
<string name="sort_last_access_time">Viimati kasutamise aja alusel</string>
<string name="version_label">Versioon: %1$s</string>
<string name="configure">Seadista</string>
<string name="advanced_unlock_prompt_store_credential_message">Sa pead igal juhul oma salasõnalaeka salasõna meeles pidama - seda ka siis, kui kasutad muid seadmes leiduvaid lukustuse eemaldamise võimalusi.</string>
<string name="file_name">Failinimi</string>
<string name="path">Asukoht</string>
<string name="assign_master_key">Seadista peavõti</string>
<string name="data">Andmed</string>
<string name="database_data_compression_title">Andmete pakkimine</string>
<string name="database_data_compression_summary">Andmete pakkimine vähendab andmebaasi suurust ja andmeruumi kasutust</string>
<string name="database_data_remove_unlinked_attachments_title">Eemalda linkimata andmed</string>
<string name="database_data_remove_unlinked_attachments_summary">Sellega eemaldad andmebaasis leiduvad andmed, mis pole seotud ühegi kirjega</string>
<string name="download">Laadi alla</string>
<string name="download_complete">Allalaaditud!</string>
<string name="download_canceled">Katkestatud!</string>
<string name="unit_byte">B</string>
<string name="unit_kibibyte">KiB</string>
<string name="unit_mebibyte">MiB</string>
<string name="unit_gibibyte">GiB</string>
<string name="entropy">Entroopia: %1$s bitti</string>
<string name="entropy_high">Entroopia: kõrge</string>
<string name="entropy_calculate">Entroopia: arvutame…</string>
<string name="style_choose_title">Rakenduse kujundus</string>
<string name="style_choose_summary">Rakenduses kasutatav valmiskujundus</string>
<string name="style_name_forest">Mets</string>
<string name="style_name_divine">Jumalik</string>
<string name="style_name_classic">Klassikaline</string>
<string name="style_name_simple">Lihtne</string>
<string name="style_name_moon">Kuu</string>
<string name="style_name_sun">Päike</string>
<string name="style_name_reply">Vastus</string>
<string name="style_name_kunzite">Kunzite</string>
<string name="style_name_follow_system">Kasuta süsteemi kujundust</string>
<string name="style_brightness_title">Kujunduse eredus</string>
<string name="style_brightness_summary">Vali heleda või tumeda kujunduse vahel</string>
<string name="style_name_light">Hele kujundus</string>
<string name="icon_section_standard">Standardne</string>
<string name="icon_section_custom">Sinu valitud</string>
<string name="icon_pack_choose_title">Ikoonikomplekt</string>
<string name="icon_pack_choose_summary">Vali rakenduses kasutatav ikoonikomplekt</string>
<string name="hide_templates_title">Peida mallid</string>
<string name="hide_templates_summary">Mallid jäävad näitamata</string>
<string name="error_autofill_enable_service">Automaattäite teenuse sisselülitamine ei õnnestunud.</string>
<string name="rounds_explanation">Täiendavad iteratsioonid parandavad kaitset võimaliku jõuründe korral, kuid aeglustavad märgatavalt salasõnalaeka andmebaasi laadimist ja salvestamist.</string>
<string name="sort_username">Kasutajanime alusel</string>
<string name="parallelism_explanation">Rööpsuse määr (ehk protsessorilõimede arv), mida võtmetuletusfunktsioon kasutab.</string>
<string name="style_name_dark">Tume kujundus</string>
<string name="filter">Filter</string>
<string name="sort_menu">Järjesta</string>
<string name="sort_db">Loomulikus järjekorras</string>
<string name="contribute">Osale</string>
<string name="download_attachment">Laadi %1$s alla</string>
<string name="upload_attachment">Laadi %1$s üles</string>
<string name="download_initialization">Alustan allalaadimist…</string>
<string name="download_progression">Allalaadimise kulg: %1$d%%</string>
<string name="download_finalization">Lõpetan allalaadimist…</string>
<string name="show_entry_colors_title">Värvid sisestamisel</string>
<string name="show_entry_colors_summary">Tausta- ja esiplaani värvid andmete sisestamise ajal</string>
<string name="hide_expired_entries_title">Peida aegunud kirjed</string>
<string name="hide_expired_entries_summary">Andmebaasis leiduvad aegunud kirjed jäävad näitamata</string>
<string name="auto_focus_search_summary">Andmebaasi avamisel alusta otsinguga</string>
<string name="subdomain_search_title">Alamdomeeni otsing</string>
<string name="subdomain_search_summary">Otsi võrgudomeene alamdomeeni piiranguga</string>
<string name="progress_create">Loome uue salasõnade andmebaasi…</string>
<string name="progress_title">Töötlen…</string>
<string name="read_only">Kirjutuskaitstud</string>
<string name="read_only_warning">Sõltuvalt sinu kasutatavast failihaldurist ei pruugi KeePassDXl olla õigust andmeruumis salvestada.</string>
<string name="contains_duplicate_uuid">Salasõnade andmebaasis on topelt-UUIDsd.</string>
<string name="contains_duplicate_uuid_procedure">Selle vea saad lahendada luues topelt-UUIDde asemele uued väärtused. Kas jätkame?</string>
<string name="search_mode">Otsinguviis</string>
<string name="save_mode">Salvestusviis</string>
<string name="selection_mode">Valikuviis</string>
<string name="registration_mode">Registreerimisviis</string>
<string name="invalid_credentials">Salasõna või võtmefaili ei õnnestunud lugeda.</string>
<string name="protection">Kaitse</string>
<string name="underline">Allajoonitud</string>
<string name="search">Otsi</string>
<string name="unsupported_db_version">Mittetoetatud andmebaasi versioon.</string>
<string name="uppercase">Suurtähed</string>
<string name="warning">Hoiatus</string>
<string name="warning_password_encoding">Väldi tähemärke, mis pole kasutusel andmebaasifaili kooditabelis (tundmatud tähemärgid muudetakse samaks täheks).</string>
<string name="warning_database_read_only">Andmebaasimuudatuste salvestamiseks luba kirjutusõigused</string>
<string name="warning_database_link_revoked">Failihaldur keelas ligipääsu failile</string>
<string name="warning_database_already_opened">Üks andmebaas on juba avatud, enne uue avamist esmalt sulge eelmine andmebaas</string>
<string name="warning_no_encryption_key">Kas jätkame ilma krüptivõtmeta?</string>
<string name="warning_empty_recycle_bin">Kas kustutame kõik prügikastis asuvad sõlmed jäädavalt?</string>
<string name="warning_sure_add_file">Kas ikkagi lisame faili?</string>
<string name="warning_replace_file">Selle faili üleslaadimine asendab olemasoleva faili.</string>
<string name="warning_database_info_changed_options_read_only">Laadi andmebaas uuesti koos viimaste muudatustega.</string>
<string name="warning_database_info_reloaded">Andmebaasi uuesti laadimine kustutab võimalikud kohalikud muudatused.</string>
<string name="database_history">Ajalugu</string>
<string name="properties">Omadused</string>
<string name="menu_appearance_settings">Välimus</string>
<string name="menu_appearance_settings_summary">Välimus, värvid, omadused</string>
<string name="html_text_dev_feature_upgrade">Ära unusta paigaldada viimaseid versioone ja tagada, et rakendus on alati uuendatud.</string>
<string name="at_least_one_char">Vähemalt üks tähemärk igast</string>
<string name="exclude_ambiguous_chars">Välista mitmetähenduslikud tähemärgid</string>
<string name="consider_chars_filter">Arvesta tähemärkidega</string>
<string name="word_separator">Eraldaja</string>
<string name="ignore_chars_filter">Eira tähemärke</string>
<string name="lower_case">väiketähed</string>
<string name="upper_case">SUURTÄHED</string>
<string name="title_case">Esimesed Suurtähed</string>
<string name="character_count">Tähemärkide arv: %1$d</string>
<string name="screenshot_mode_banner_text">Ekraanitõmmise režiim</string>
<string name="error_disallow_no_credentials">Vähemalt üks autentimise vahend peab olema sisestatud.</string>
<string name="warning_permanently_delete_nodes">Kas kustutame valitud sõlmed jäädavalt?</string>
<string name="show_otp_token_title">Näita ühekordse salasõna tunnusluba</string>
<string name="show_otp_token_summary">Näita ühekordse salasõna tunnuslube kirjete loendis</string>
<string name="compression">Pakkimine</string>
<string name="compression_gzip">Gzip</string>
<string name="recycle_bin">Prügikast</string>
<string name="templates">Mallid</string>
<string name="keyboard">Klahvistik</string>
<string name="select_entry">Vali kirje</string>
<string name="education_setup_OTP_summary">Ühekordsete salasõnade (HOTP / TOTP) kasutuselevõtmine tunnuslubade loomiseks kaksikautentimise (2FA) jaoks.</string>
<string name="error_otp_type">See vorm ei suuda korrektselt tuvastada ühekordse salasõna tüüpi ja seetõttu ja seetõttu ka korrektse tunnusloa loomine ei toimi.</string>
<string name="compression_none">Puudub</string>
<string name="warning_empty_password">Kas soovid jätkata ilma salasõna-põhise lukustuse eemaldamise kaitseta?</string>
<string name="warning_sure_remove_data">Kas eemaldame need andmed ikkagi?</string>
<string name="warning_empty_keyfile">Tühja võtmefaili lisamine pole turvakaalutlustel hea mõte.</string>
<string name="warning_large_keyfile">Liiga suure võtmefaili lisamine pole hea mõte - see võib tekitada olukorra, kus andmebaasi ei saa avada.</string>
<string name="warning_empty_keyfile_explanation">Võtmefaili sisu ei tohiks kunagi muutuda ning ideaalis peaks ta koosnema juhuslikult loodud andmetest.</string>
<string name="warning_database_info_changed">Sinu andmebaasis leiduvat teavet on muutnud väline rakendus.</string>
<string name="warning_copy_permission">Selleks, et lõikelauaga seotud teavitused toimiks, peavad rakendusel olema teavituste saatmise õigused.</string>
<string name="ask">Küsi</string>
<string name="merge_success">Mestimine õnnestus</string>
<string name="biometric_security_update_required">Vajalik on biomeetrilise turvalisuse uuendus.</string>
<string name="encrypted_value_stored">Krüptitud salasõna on salvestatud</string>
<string name="advanced_unlock_scanning_error">Viga seadme lukustuse eemaldamisel: %1$s</string>
<string name="advanced_unlock_not_recognized">Ei õnnestunud tuvastada lukustuse eemaldamiseks vajalikku tunnust</string>
<string name="advanced_unlock_prompt_not_initialized">Seadme lukustuse eemaldamise päringu käivitamine ei õnnestu.</string>
<string name="biometric">Biomeetriline</string>
<string name="device_credential">Seadme autentimine</string>
<string name="autofill">Automaattäide</string>
<string name="general">Üldist</string>
<string name="password_size_title">Loodud salasõna suurus</string>
<string name="password_size_summary">Määratle loodavate salasõnade vaikimisi suuruse</string>
<string name="list_password_generator_options_summary">Määratle loodavates salasõnades lubatud tähemärgid</string>
<string name="lock_database_screen_off_title">Ekraanilukustus</string>
<string name="lock_database_screen_off_summary">Mõni sekund peale ekraani väljalülitumist lukusta andmebaas</string>
<string name="lock_database_back_root_title">Vajuta nuppu „Tagasi“</string>
<string name="lock_database_show_button_title">Näita lukustuse nuppu</string>
<string name="lock_database_back_root_summary">Lukusta andmebaas peale juurkaustas „Tagasi“ nupu klõpsimist</string>
<string name="allow_copy_password_title">Lõikelaua usaldamine</string>
<string name="allow_copy_password_summary">Luba sisestatud salasõna ja kaitstud väljade kopeerimise lõikelauale</string>
<string name="education_unlock_title">Eemalda oma andmebaasi lukustus</string>
<string name="education_unlock_summary">Oma andmebaasi lukustuse eemaldamiseks sisesta oma salasõna ja/või lukufail.\n\nPeale iga muudatust tee andmebaasifailist varukoopia mõnda turvalisse kohta.</string>
<string name="education_read_only_title">Lisa oma andmebaasile kirjutuskaitse</string>
<string name="html_text_dev_feature_thanks">Suur tänu kaastöö eest.</string>
<string name="permission">Õigused</string>
<string name="configure_biometric">Ühtegi biomeetrilist ega seadmekohast autentimist pole kasutusel.</string>
<string name="warning_database_info_changed_options">Sa võid kas andmed mestida, kirjutada välised muudatused üle või laadida viimased välised muudatused.</string>
<string name="unlock_and_link_biometric">Seadme lukustuse eemaldamise link</string>
<string name="later">Hiljem</string>
<string name="credential_before_click_advanced_unlock_button">Sisesta salasõna ja siis klõpsi seda nuppu.</string>
<string name="html_text_dev_feature_work_hard">Me näeme hoolega vaeva, et see funktsionaalsus leiduks üsna pea mõnes rakenduse järgmises versioonis.</string>
<string name="list_password_generator_options_title">Tähemärgid salasõnas</string>
<string name="allow_copy_password_warning">Hoiatus: süsteemiülene lõikelaud on kõikide rakenduste kasutuses. Kui sa kopeerid sinna delikaatseid andmeid, siis muu tarkvara võib seda seal näha. Kui sa kasutad KDE Connecti või muud lõikelaua jagamise teenust, siis sõltuvalt seadistustest võivad need delikaatsed andmed olla nähtavad ka muudes seadmetes.</string>
<string name="warning_database_revoked">Failihaldur on blokeerinud ligipääsu failile. Sulge andmebaas ja ava ta uuesti oma asukohast.</string>
<string name="autofill_sign_in_prompt">Logi sisse KeePassDX abil</string>
<string name="autofill_service_name">KeePassDXi automaattäite teenus</string>
<string name="autofill_explanation_summary">Täitmaks andmevorme teistes rakenduses, luba automaattäite teenus</string>
<string name="autofill_select_entry">Vali kirje…</string>
<string name="set_autofill_service_title">Vali vaikimisi kasutatav automaattäite teenus</string>
<string name="autofill_preference_title">Automaattäite teenuse seadistused</string>
<string name="database_opened">Andmebaas on avatud</string>
<string name="clipboard">Lõikelaud</string>
<string name="clipboard_explanation_summary">Kopeeri kirjeid kasutades oma nutiseadme lõikelauda</string>
<string name="clipboard_notifications_title">Lõikelaua teavitused</string>
<string name="clipboard_notifications_summary">Kirje vatamisel näita väljade kopeerimiseks lõikelaua teavitusi</string>
<string name="lock">Lukk</string>
<string name="clipboard_warning">Kui lõikelaua automaatne kustutamine ei toimi, siis palun kustuta tema sisu käsitsi.</string>
<string name="lock_database_show_button_summary">Liideses kuvame luku ikooni</string>
<string name="content">Sisu</string>
<string name="unavailable_feature_hardware">Vastavat riistavara ei leidunud.</string>
<string name="unavailable_feature_version">Nutiseadmes on operatsioonisüsteemiks Android %1$s, aga vaja oleks versiooni %2$s või hilisemat.</string>
<string name="recycle_bin_title">Prügikasti kasutus</string>
<string name="recycle_bin_summary">Enne kustutamist viska kõik grupid ja kirjed gruppi nimega „Prügikast“</string>
<string name="recycle_bin_group_title">Grupp Prügikast</string>
<string name="templates_group_enable_title">Mallide kasutus</string>
<string name="templates_group_enable_summary">Kirje väljade täitmisel kasuta dünaamilisi malle</string>
<string name="templates_group_uuid_title">Mallide grupp</string>
<string name="max_history_items_title">Suurim ajalookirjete arv</string>
<string name="max_history_size_title">Suurim ajalookirjete maht</string>
<string name="max_history_size_summary">Piira kirjekohast ajalookirjete mahtu</string>
<string name="settings_database_recommend_changing_master_key_title">Soovitatav uuendus</string>
<string name="max_history_items_summary">Piira kirjekohast ajalookirjete arvu</string>
<string name="settings_database_recommend_changing_master_key_summary">Soovita üldsalasõna muutmist (näidatud päevade järel)</string>
<string name="settings_database_force_changing_master_key_summary">Sunni üldsalasõna muutmist (näidatud päevade järel)</string>
<string name="settings_database_force_changing_master_key_title">Sunnitud uuendus</string>
<string name="settings_database_force_changing_master_key_next_time_title">Sunnitud uuendus järgmisel korral</string>
<string name="settings_database_force_changing_master_key_next_time_summary">Sunni üldsalasõna muutmist järgmisel kasutuskorral (üks kord)</string>
<string name="monospace_font_fields_enable_title">Väljade kirjetüüp</string>
<string name="enable">Võta kasutusele</string>
<string name="disable">Eemalda kasutuselt</string>
<string name="notification">Teavitus</string>
<string name="clear_clipboard_notification_title">Kustuta sulgemisel</string>
<string name="database_name_title">Salasõnade andmebaasi nimi</string>
<string name="database_description_title">Salasõnade andmebaasi kirjeldus</string>
<string name="clear_clipboard_notification_summary">Kui lõikelaua jaoks lubatud kestus aegub või sulged teavituse kasutamiseks, siis lukusta andmebaas</string>
<string name="database_default_username_title">Vakimisi kasutajanimi</string>
<string name="database_custom_color_title">Sinu valitud värv aalasõnade andmebaasile</string>
<string name="database_version_title">Salasõnade andmebaasi versioon</string>
<string name="text_appearance">Tekst</string>
<string name="application_appearance">Kasutajaliides</string>
<string name="other">Muud</string>
<string name="monospace_font_fields_enable_summary">Parema loetavuse huvides muuda väljadel kasutatavat kirjatüüpi</string>
<string name="education_lock_title">Lukusta andmebaas</string>
<string name="education_lock_summary">Võid seadistada andmebaasi automaatse lukustuse mingi aja möödumisel või ekraanilukustuse käivitumisel ning lihtsalt teha seda vastvast ikoonist.</string>
<string name="education_sort_title">Objektide järjestus</string>
<string name="warning_exact_alarm">Kuna sa pole lubanud rakendusel kasutada täpset äratust, siis kõik äratustest sõltuvad ajalised funktsionaalsused saavad toimuma ebatäpselt.</string>
<string name="unavailable_feature_text">Seda funktsionaalsust ei õnnestunud käivitada.</string>
<string name="autofill_application_id_blocklist_summary">Selles loendis olevad rakendused ei tohi kasutada automaattäite teenust</string>
<string name="autofill_block">Keela automaattäite teenus</string>
<string name="autofill_ask_to_save_data_summary">Küsi peale sisestusvormi täitmist, kas vormi andmed peaks salvestama</string>
<string name="autofill_application_id_blocklist_title">Keelatud rakenduste loend</string>
<string name="autofill_block_restart">Keelamise jõustamiseks käivita antud sisendvormiga rakendus uuesti.</string>
<string name="autofill_inline_suggestions_keyboard">Automaattäite soovitused on lisatud.</string>
<string name="autofill_read_only_save">Kui andmebaas on avatud ainult lugemiseks, siis andmete salvestamine pole võimalik.</string>
<string name="delete_entered_password_summary">Kustutab salasõna, mis oli kasutusel andmebaasiga ühenduse loomise ajal</string>
<string name="enable_read_only_summary">Vaikimisi ava andmebaas vaid lugemiseks</string>
<string name="enable_screenshot_mode_summary">Luba teistel rakendusel teha sellest rakendusest ekraanitõmmist või salvestada tema ekraanivaadet</string>
<string name="autofill_close_database_title">Sulge andmebaas</string>
<string name="autofill_close_database_summary">Peale automaattäite kasutamist sulega andmebaas</string>
<string name="autofill_inline_suggestions_title">Otsetäite soovitused</string>
<string name="autofill_inline_suggestions_summary">Proovi kuvada automaattäite soovitusi, kui klahvistik sellist võimalust toetab</string>
<string name="autofill_manual_selection_title">Käsitsi valik</string>
<string name="autofill_manual_selection_summary">Võimalda kasutaval käsitsi valida andmebaasi kirjet</string>
<string name="autofill_save_search_info_title">Salvesta otsingud</string>
<string name="autofill_save_search_info_summary">Hilisema mugavama kasutamise nimel proovi käsitsi valiku puhul salvestada otsinguteavet</string>
<string name="autofill_ask_to_save_data_title">Küsi, kas salvestada andmeid</string>
<string name="autofill_web_domain_blocklist_title">Keelatud veebidomeenide loend</string>
<string name="autofill_web_domain_blocklist_summary">Selles loendis olevad domeenid ei tohi kasutada automaattäite teenust</string>
<string name="allow_no_password_title">Ära kasuta peavõtit</string>
<string name="allow_no_password_summary">Kui kasutajanimi või salasõna pole valitud, siis võimaldab klõpsida „Ava“ nuppu</string>
<string name="delete_entered_password_title">Kustuta salasõna</string>
<string name="enable_read_only_title">Kirjutuskaitstud</string>
<string name="enable_screenshot_mode_title">Ekraanitõmmiste lubamine</string>
<string name="enable_education_screens_title">Koolitusvihjed</string>
<string name="enable_education_screens_summary">Õppimaks, kuidas rakendus toimib, tõsta esile kasutajaliidese elemente</string>
<string name="reset_education_screens_title">Lähtesta koolitusvihjed</string>
<string name="reset_education_screens_summary">Luba näidata kogu koolitusteavet uuesti</string>
<string name="reset_education_screens_text">Koolitusvihjed on lähtestatud</string>
<string name="enable_auto_save_database_title">Salvesta andmebaas automaatselt</string>
<string name="enable_auto_save_database_summary">Salvesta andmebaas automaatselt peale iga olulist tegevust (kui „Muudetav“ režiim on kasutusel)</string>
<string name="enable_keep_screen_on_title">Hoia ekraan sisselülitatuna</string>
<string name="enable_keep_screen_on_summary">Kirje vaatamisel või muutmisel hoia ekraan sisselülitatuna</string>
<string name="education_create_database_title">Loo oma salasõnade andmebaas</string>
<string name="education_select_database_title">Ava olemasolev salasõnade andmebaas</string>
<string name="education_new_node_summary">Sinu digitaalsed identiteedid on vormistatud kirjetena.\n\nÜlevaatlikkuse mõttes saad neid rühmitada gruppidena (kaustadena).</string>
<string name="education_create_database_summary">Loo oma esimene andmebaasifail, mis on mõeldud salasõnade halduseks.</string>
<string name="education_select_database_summary">Ava varemloodud andmebaasifail, mis on mõeldud salasõnade halduseks.</string>
<string name="advanced_unlock_prompt_store_credential_title">Link seadme lukustuse eemaldamisele</string>
<string name="unlock">Eemalda lukustus</string>
<string name="advanced_unlock_tap_delete">Seadme lukustuse eemaldamise võtmete kustutamiseks klõpsi</string>
<string name="advanced_unlock_explanation_summary">Andmebaasi mugavamaks avamiseks kasuta nutiseadme lukustuse eemaldamise võimalusi</string>
<string name="device_credential_unlock_enable_title">Lukustuse eemaldamine nutiseadme autentimisega</string>
<string name="biometric_unlock_enable_title">Biomeetriline lukustuse eemaldamine</string>
<string name="biometric_unlock_enable_summary">Saad andmebaasi avamiseks kasutada nutiseadme biomeetrilise autentimise võimalusi</string>
<string name="temp_advanced_unlock_timeout_title">Seadme lukustuse eemaldamise aegumine</string>
<string name="temp_advanced_unlock_timeout_summary">Lukustuse eemaldamise kestus enne kui tema sisu kustutatakse</string>
<string name="temp_advanced_unlock_enable_summary">Ära salvesta mitte mingit krüptitud sisu nutiseadme lukustuse eemaldamiseks</string>
<string name="advanced_unlock_timeout">Seadme lukustuse eemaldamise ajalõpp</string>
<string name="device_credential_unlock_enable_summary">Saad andmebaasi avamiseks kasutada nutiseadme tavaautentimise võimalusi</string>
<string name="biometric_auto_open_prompt_title">Ava viip automaatselt</string>
<string name="biometric_delete_all_key_summary">Kustuta kõik krüptovõtmed, mis on kasutusel nutiseadme-põhise autentimise alusel andmebaasi lukustuse eemaldamisega</string>
<string name="advanced_unlock_delete_all_key_warning">Kas kustutame kõik krüptovõtmed, mis on kasutusel nutiseadme-põhise autentimise alusel andmebaasi lukustuse eemaldamisega?</string>
<string name="biometric_delete_all_key_title">Kustuta krüptovõtmed</string>
<string name="education_advanced_unlock_title">Nutiseadme-põhine andmebaasi lukustuse eemaldamine</string>
<string name="education_new_node_title">Lisa kirjeid andmebaasi</string>
<string name="education_search_title">Otsi kirjete seast</string>
<string name="education_search_summary">Vajaliku salasõna otsimiseks kasuta pealkirja, kasutajanime või muid kirje välju.</string>
<string name="education_add_attachment_title">Manuste lisamine</string>
<string name="education_add_attachment_summary">Kui soovid kirjesse kaasata väliseid olulisi andmeid, siis saad seda teha manuse lisamise abil.</string>
<string name="education_sort_summary">Vali kirjete ja gruppide järjestamise viis.</string>
<string name="education_donation_title">Osale</string>
<string name="education_donation_summary">Aita parandada rakenduse töökindlust ja turvalisust ning lisada uusi funktsionaalsuseid.</string>
<string name="temp_advanced_unlock_enable_title">Seadme lukustuse ajutine eemaldamine</string>
<string name="biometric_auto_open_prompt_summary">Kui andmebaas on seadistatud kasutama nutiseadme-põhist lukustuse eemaldamist, siis ava autentimisvaade automaatselt</string>
<string name="education_field_copy_title">Välja kopeerimine</string>
<string name="education_field_copy_summary">Kopeeritud väljade sisu saad asetada kõikjale.\n\nVäljade täitmiseks kasuta meetodist, mis sulle sobib. Ära unusta kopeeritud saalsõna lõikelaualt kustutada.</string>
<string name="unavailable">Pole saadaval</string>
<string name="error_challenge_already_requested">Autentimispäring on juba esitatud</string>
<string name="error_response_already_provided">Autentimisvastus on juba antud.</string>
<string name="error_no_response_from_challenge">Autentimisvastust ei õnnestu autentimispäringust tuletada.</string>
<string name="warning_database_notification_permission">Teevituste saatmise õigused võimaldavad sulle kuvada andmebaasi olekut ning lukustada seda lihtsalt ligipääsetvast nupust.\n\nKui sa seda õigust ei anna, siis taustal olev andmebaas pole nähtav, kui mõni muu rakendus on parasjagu esiplaanil.</string>
<string name="warning_keyfile_integrity">Kuna Android saab seda faili lennult muuta, siis tema räsiväärtus pole garanteeritud. Korraliku andmetervikluse tagamiseks muuda .bin faili laiendiks.</string>
<string name="warning_file_too_big">KeePassi andmebaas peaks sisaldama vaid väikseid manuseid (näiteks PGP võtmefaile).\n\nSelle faili lisamisega võib sinu andmebaas minna väga mahukaks ja sellega väheneb kasutusjõudlus ja -kiirus.</string>
<string name="keystore_not_accessible">Võtmehoidla pole korrektselt valmendatud.</string>
<string name="special">Eriteave</string>
<string name="warning_remove_unlinked_attachment">Linkimata andmete eemaldamine võib vähendada andmebaasi suurust, aga samaga võivad kaduda ka andmed, mida kasutavad KeePassi lisamoodulid.</string>
<string name="advanced_unlock_prompt_extract_credential_title">Seadmekohane lukustuse eemaldamine</string>
<string name="advanced_unlock_prompt_extract_credential_message">Ava andmebaas kasutades nutiseadme-põhist autentimist</string>
<string name="advanced_unlock_invalid_key">Seadme lukustuse eemaldamise võtit ei õnnestu lugeda. Palun kustuta ta ja korda lukustuse eemaldamist tuvastamise alusel.</string>
<string name="advanced_unlock">Nutiseadme-põhine lukustuse eemaldamine</string>
<string name="magic_keyboard_title">Maagiklahvistik</string>
<string name="device_keyboard_setting_title">Nutiseadme klahvistiku seadistused</string>
<string name="keyboard_entry_category">Sisestus</string>
<string name="keyboard_selection_entry_title">Sisestuse valik</string>
<string name="magic_keyboard_explanation_summary">Lülita sisse kohandatud klahvistik, mis eeltäidab sinu saalsõnad ja muud olulised väljad</string>
<string name="keyboard_label">Maagiklahvistik (KeePassDX)</string>
<string name="keyboard_name">Maagiklahvistik (Magikeyboard)</string>
<string name="keyboard_setting_label">Maagiklahvistiku seadistused</string>
<string name="keyboard_notification_entry_title">Teavituste info</string>
<string name="keyboard_notification_entry_summary">Kui kirje on saadaval, siis näita teavitust</string>
<string name="keyboard_save_search_info_title">Salvesta jagatud teave</string>
<string name="keyboard_notification_entry_clear_close_title">Sulgemisel kustuta</string>
<string name="keyboard_notification_entry_clear_close_summary">Teavituse sulgemisel sulge ka andmebaas</string>
<string name="keyboard_save_search_info_summary">Hilisema mugava kasutamise jaoks proovi käsitsi sisestamisel salvestada jagatud teavet</string>
<string name="keyboard_selection_entry_summary">Kui vaatad mõnda kirjet rakenduses KeePassDX, siis edasta selle kirje andmed Maagiklahvistikule</string>
<string name="keyboard_notification_entry_content_title">%1$s on Maagiklahvistikus saadaval</string>
<string name="keyboard_entry_timeout_title">Aegumine</string>
<string name="keyboard_entry_timeout_summary">Aeg, peale mida kirje kustub klahvistikus</string>
<string name="keyboard_notification_entry_content_title_text">Sisestus</string>
<string name="keyboard_notification_entry_content_text">%1$s</string>
<string name="keyboard_appearance_category">Välimus</string>
<string name="keyboard_theme_title">Klahvistiku kujundus</string>
<string name="keyboard_auto_go_action_title">Automaatne võtmetoiming</string>
<string name="keyboard_keys_category">Klahvid</string>
<string name="keyboard_auto_go_action_summary">„Jätka“ võtme toiming pärast „Väli“ võtme vajutamist</string>
<string name="keyboard_key_vibrate_title">Värin võtmevajutusel</string>
<string name="keyboard_key_sound_title">Kuuldavad võtmevajutused</string>
<string name="keyboard_change">Klahvistiku vahetamine</string>
<string name="keyboard_previous_database_credentials_title">Andmebaasi autentimise vaade</string>
<string name="keyboard_previous_database_credentials_summary">Lülita andmebaasi salasõna vaatest automaatselt tagasi eelmisele klahvistikule</string>
<string name="keyboard_previous_search_title">Otsinguvaade</string>
<string name="keyboard_previous_search_summary">Lülita otsinguvaatest automaatselt tagasi eelmisele klahvistikule</string>
<string name="keyboard_previous_fill_in_title">Tagasilülitamine</string>
<string name="back_to_previous_keyboard">Tagasi eelmise klahvistiku juurde</string>
<string name="custom_fields">Kohandatud väljad</string>
<string name="keyboard_previous_lock_title">Andmebaasi lukustamine</string>
<string name="keyboard_previous_lock_summary">Peale andmebaasi lukustamist lülita automaatselt tagasi eelmisele klahvistikule</string>
<string name="education_advanced_unlock_summary">Andmebaasi lukustuse kiireks eemaldamiseks seo oma andmebaasi salasõna nutiseadme biomeetrilise või tavatuvastusega.</string>
<string name="education_entry_edit_title">Kirje muutmine</string>
<string name="education_entry_edit_summary">Võid kirjele lisada omaloodud välju ning ka neid omavahel siduda.</string>
<string name="education_generate_password_summary">Sisestusvormil leiduvate eelmistuste alusel saad antud kirje jaoks luua tugeva salasõna ning seda andmebaasis hoides tagad, et korralik salasõna ei unune.</string>
<string name="education_validate_entry_title">Kirje kontrollimine ja salvestamine</string>
<string name="education_entry_new_field_title">Omaloodud väljade lisamine</string>
<string name="education_entry_new_field_summary">Registreeri täiendav väli, lisa sinna sisu ning soovi korral ka kaitse seda.</string>
<string name="html_text_buy_pro">Kui ostaksid, Pro-versiooni, siis saad võimaluse kasutada seda &lt;strong&gt;välimust&lt;/strong&gt; ja aitad oluliselt määral &lt;strong&gt;kogukonna projekte realiseerida.&lt;/strong&gt;</string>
<string name="html_text_feature_generosity">See &lt;strong&gt;välimus &lt;/strong&gt; on saadaval tänu sinu heldusele.</string>
<string name="html_text_dev_feature">Hetkel on see funktsionaalsus &lt;strong&gt;veel arendusjärgus&lt;/strong&gt; ja vajab lähiajal saadaval olemiseks sinu &lt;strong&gt;panust&lt;/strong&gt;.</string>
<string name="html_text_dev_feature_buy_pro">Ostes &lt;strong&gt;Pro-versiooni&lt;/strong&gt;,</string>
<string name="html_text_dev_feature_contibute">või &lt;strong&gt;tehes kaastööd&lt;/strong&gt;,</string>
<string name="html_text_dev_feature_encourage">julgustad sa arendajaid lisama &lt;strong&gt;uusi funktsionaalsusi&lt;/strong&gt; ja &lt;strong&gt;parandama vigu&lt;/strong&gt; vastavalt sinu vihjetele.</string>
<string name="backspace">Tagasisammuklahv (Backspace)</string>
<string name="education_setup_OTP_title">Seadista ühekordne salasõna</string>
<string name="enter">Sisestusklahv (Enter)</string>
<string name="education_validate_entry_summary">Ära unusta kirje sisu kontrollida ja salvestada.\n\nKui automaatne lukustus käivitub ja sa unustad, et muutmine oli pooleli, siis võid kaotada oma muudatused.</string>
<string name="html_text_ad_free">Erinevalt paljudest teistest salasõnahalduritest, on meie oma &lt;strong&gt;reklaamivaba&lt;/strong&gt; ja &lt;strong&gt;avatud lähtekoodiga vaba tarkvara&lt;/strong&gt;, mis ei kogu kasutajate isiklikke andmeid oma serveritesse ja seda kõikide versioonide puhul.</string>
<string name="html_text_donation">&lt;strong&gt;Aidates kaasa&lt;/strong&gt; selle projekti tegevusele <i>(rahaliselt, koodi kirjutades või tõlkides)</i> aitad kogu ettevõtmisel areneda ning soovi korral võid kasutada ka &lt;strong&gt;seda kujundust&lt;/strong&gt;.</string>
<string name="advanced_unlock_keystore_warning">See funktsionaalsus salvestab krüptitud salasõnad ja kasutajanimed sinu nutiseadme turvalises võtmehoidlas.\n\nSõltuvalt sinu nutiseadme operatsioonisüstemi konkreetsest implementatsioonist, ei pruugi see lahendus siiski täismahus toimida.\n\nPalun kontrolli oma seadme võtmehoidla (KeyStore) ühilduvust ja turvalisust tootjalt ja/või tarkvara loojalt.</string>
<string name="keyboard_previous_fill_in_summary">Peale tegevust „Automaatne võtmetoiming“ lülita automaatselt tagasi eelmisele klahvistikule</string>
<string name="education_read_only_summary">Saad juhtida sessioonil kasutatavat avamisviisi.\n\n„Kirjutuskaitstud“ tagab, et juhuslike muudatustega ei läheks andmeid kaotsi.\n„Muudetav“ võimaldab sul lisada, kustutada või muuta kõiki andmebaasi kirjeid.</string>
</resources>

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