mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Compare commits
188 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
abc971b5cc | ||
|
|
7dedcc8a21 | ||
|
|
10d46e5dee | ||
|
|
139f7eb36d | ||
|
|
1ddfa894b6 | ||
|
|
d1695ab8c2 | ||
|
|
f27979e729 | ||
|
|
6e61e8172a | ||
|
|
21890894ae | ||
|
|
1feecd559d | ||
|
|
6ea4afe75b | ||
|
|
fd96f6367d | ||
|
|
8ce183c4c9 | ||
|
|
407a1db101 | ||
|
|
622d096e31 | ||
|
|
bf27fb1f89 | ||
|
|
860b9055c5 | ||
|
|
b3ae3a4148 | ||
|
|
0abd7d5762 | ||
|
|
0aac2bc55b | ||
|
|
fa08dc5cfb | ||
|
|
8d18970b4c | ||
|
|
173f5ce979 | ||
|
|
2e7088310a | ||
|
|
c75d99030c | ||
|
|
e4ba1d9bae | ||
|
|
e2886c342a | ||
|
|
e600d8a56c | ||
|
|
caeb305475 | ||
|
|
3d3a9d9bad | ||
|
|
5499ad5b94 | ||
|
|
0e29cd0cee | ||
|
|
24fb1b1a8f | ||
|
|
03fb4cbf0c | ||
|
|
e909280d5b | ||
|
|
d41ddf60b4 | ||
|
|
1e01a74986 | ||
|
|
96a007aace | ||
|
|
9f23bb6129 | ||
|
|
b7e8559773 | ||
|
|
5b247575c8 | ||
|
|
eb0e5b478f | ||
|
|
08906ae1da | ||
|
|
395a5efecd | ||
|
|
0452dd14f6 | ||
|
|
3906df314d | ||
|
|
ce49aa2ebd | ||
|
|
f2cb062b1e | ||
|
|
f25819a940 | ||
|
|
3075a9f9f4 | ||
|
|
52f1a672c8 | ||
|
|
45785fde1c | ||
|
|
6a7649e1d7 | ||
|
|
8b3831eb2b | ||
|
|
73e7f4669c | ||
|
|
c9f7bbbd25 | ||
|
|
ee67238133 | ||
|
|
b425da8d0f | ||
|
|
754a7f70bc | ||
|
|
a857ffa987 | ||
|
|
391ce2ebba | ||
|
|
086723adf4 | ||
|
|
e993279c35 | ||
|
|
aa64310875 | ||
|
|
795baf2c01 | ||
|
|
68ac453100 | ||
|
|
79d1f512e5 | ||
|
|
e739211314 | ||
|
|
d3f6374bb4 | ||
|
|
5add632cbc | ||
|
|
d210d1bcce | ||
|
|
6d6422cd63 | ||
|
|
66e8b7702b | ||
|
|
b75502ad87 | ||
|
|
3fba96d11f | ||
|
|
3571905705 | ||
|
|
acf0e2a1cb | ||
|
|
9e7dcb0d7c | ||
|
|
3c261e3cf7 | ||
|
|
b6f324f399 | ||
|
|
f2459489fa | ||
|
|
f8691cf285 | ||
|
|
2e631d3c42 | ||
|
|
1044dca936 | ||
|
|
56c3f495d5 | ||
|
|
0f3036dd9c | ||
|
|
af445ef157 | ||
|
|
25eb09f11c | ||
|
|
16f255aeca | ||
|
|
d0b340837d | ||
|
|
893828ac44 | ||
|
|
a3ca03636a | ||
|
|
582ffe3f23 | ||
|
|
3caad2cceb | ||
|
|
618dcf014d | ||
|
|
d88e20bb56 | ||
|
|
8a8b2b027e | ||
|
|
41cb223099 | ||
|
|
b93ea5e662 | ||
|
|
31c35939fd | ||
|
|
20a35f4221 | ||
|
|
bc6aeb2e93 | ||
|
|
a561299809 | ||
|
|
76efb938ab | ||
|
|
56abf73eaf | ||
|
|
2bc068d65a | ||
|
|
f191259f37 | ||
|
|
1384c6661d | ||
|
|
c047621548 | ||
|
|
017aaf2e54 | ||
|
|
e4b2b930af | ||
|
|
2646c0f0ee | ||
|
|
4afadb779c | ||
|
|
ad6e4daa22 | ||
|
|
d5cd07fe76 | ||
|
|
364065ed51 | ||
|
|
b4f05d4da7 | ||
|
|
3d12a0e8e9 | ||
|
|
e29f3194f3 | ||
|
|
6bac86638b | ||
|
|
d6ee1cdf6e | ||
|
|
e9d0efaf93 | ||
|
|
85467fa15b | ||
|
|
84bb47aa53 | ||
|
|
75f245c7dc | ||
|
|
6c5be88432 | ||
|
|
590b22de69 | ||
|
|
4770269f6f | ||
|
|
823f591aa8 | ||
|
|
c88c489633 | ||
|
|
8afb58a044 | ||
|
|
428fa8a61b | ||
|
|
3ba5e1ee79 | ||
|
|
d46d0cb384 | ||
|
|
f841884557 | ||
|
|
d381ab5316 | ||
|
|
a3e8e7ae77 | ||
|
|
a405753827 | ||
|
|
8df74d2c4b | ||
|
|
cbe0ffe52a | ||
|
|
a5631a0476 | ||
|
|
e4bd704a53 | ||
|
|
81a53440bc | ||
|
|
3466de1990 | ||
|
|
253b053c2c | ||
|
|
928d012046 | ||
|
|
19367406c6 | ||
|
|
f4e3717dd3 | ||
|
|
c01e1d91c5 | ||
|
|
6983f9f0b6 | ||
|
|
c13cf1a86c | ||
|
|
2a3dafe07f | ||
|
|
0104d02442 | ||
|
|
8cef4fde82 | ||
|
|
3dc02516ea | ||
|
|
3614529fda | ||
|
|
80d4f06e56 | ||
|
|
9ff4f395b5 | ||
|
|
61b8fa116a | ||
|
|
22a3541b7b | ||
|
|
c57515fed5 | ||
|
|
eec6199413 | ||
|
|
fe48955b94 | ||
|
|
03047ae6dd | ||
|
|
856d4867b4 | ||
|
|
b1b1aa0e13 | ||
|
|
ab68472698 | ||
|
|
5ae4ee1411 | ||
|
|
f1989bac21 | ||
|
|
1b20188b98 | ||
|
|
140a79d18c | ||
|
|
a9610ced0e | ||
|
|
17faee7719 | ||
|
|
120ca1c02c | ||
|
|
ef2d1ebe4f | ||
|
|
b9c931c97f | ||
|
|
60dd963d7d | ||
|
|
c414fac815 | ||
|
|
95041d6a0c | ||
|
|
1fab9c3279 | ||
|
|
3b8661249e | ||
|
|
2fba831851 | ||
|
|
fd4ac14ab3 | ||
|
|
1d9b9e9bfa | ||
|
|
14b2277313 | ||
|
|
0f57bf5235 | ||
|
|
4bb7fae1e3 | ||
|
|
ec0b8ebc92 |
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -20,7 +20,7 @@ Steps to reproduce the behavior:
|
|||||||
**Expected behavior**
|
**Expected behavior**
|
||||||
A clear and concise description of what you expected to happen.
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
** Keepass Database **
|
**KeePass Database**
|
||||||
- Created with: [e.g Windows KeePass 2.42]
|
- Created with: [e.g Windows KeePass 2.42]
|
||||||
- Version: [e.g. 2]
|
- Version: [e.g. 2]
|
||||||
- Location: [e.g. Remote file retrieved with GDrive app]
|
- Location: [e.g. Remote file retrieved with GDrive app]
|
||||||
|
|||||||
23
CHANGELOG
23
CHANGELOG
@@ -1,3 +1,26 @@
|
|||||||
|
KeePassDX(2.9.4)
|
||||||
|
* Fix small bugs #812
|
||||||
|
* Argon2ID implementation #791
|
||||||
|
|
||||||
|
KeePassDX(2.9.3)
|
||||||
|
* Unlock database by device credentials (PIN/Password/Pattern) #779 #102
|
||||||
|
* Advanced unlock with timeout #102 #437 #566
|
||||||
|
* Remove default database parameter when the file is no longer accessible #803
|
||||||
|
* Move OTP button to the first view level in Magikeyboard #587
|
||||||
|
* Tooltips for Magikeyboard #586
|
||||||
|
* Fix small bugs #805
|
||||||
|
|
||||||
|
KeePassDX(2.9.2)
|
||||||
|
* Managing OTP links from QR applications #556
|
||||||
|
* Prevent manual creation of existing field name #718
|
||||||
|
* Harmonization of field names #789
|
||||||
|
* Different channels for each type of notification #688
|
||||||
|
* Fix OTP #780 #781
|
||||||
|
* Fix same save shared info #783
|
||||||
|
* Fix switch back to previous keyboard #782
|
||||||
|
* Fix read only #792
|
||||||
|
* Better UI #719 #534 #617 #793
|
||||||
|
|
||||||
KeePassDX(2.9.1)
|
KeePassDX(2.9.1)
|
||||||
* Copy password from generator #697
|
* Copy password from generator #697
|
||||||
* Fix Magikeyboard not fully visible #772
|
* Fix Magikeyboard not fully visible #772
|
||||||
|
|||||||
202
LICENSES/LICENSE_APACHE
Normal file
202
LICENSES/LICENSE_APACHE
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
7
LICENSES/LICENSE_BOUNCY_CASTLE
Normal file
7
LICENSES/LICENSE_BOUNCY_CASTLE
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Copyright (c) 2000 - 2011 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
111
LICENSES/LICENSE_ICON_PACK_CLASSIC
Normal file
111
LICENSES/LICENSE_ICON_PACK_CLASSIC
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
Files ic00.png to ic61.png under res/drawable, res/drawable-hdpi and res/drawable-ldpi
|
||||||
|
|
||||||
|
TITLE: NUVOLA ICON THEME for KDE 3.x
|
||||||
|
AUTHOR: David Vignoni | ICON KING
|
||||||
|
SITE: http://www.icon-king.com
|
||||||
|
MAILING LIST: http://mail.icon-king.com/mailman/listinfo/nuvola_icon-king.com
|
||||||
|
|
||||||
|
Copyright (c) 2003-2004 David Vignoni.
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation,
|
||||||
|
version 2.1 of the License.
|
||||||
|
This library 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library (see the the license.txt file); if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#######**** NOTE THIS ADD-ON ****#######
|
||||||
|
The GNU Lesser General Public License or LGPL is written for software libraries
|
||||||
|
in the first place. The LGPL has to be considered valid for this artwork
|
||||||
|
library too.
|
||||||
|
Nuvola icon theme for KDE 3.x is a special kind of software library, it is an
|
||||||
|
artwork library, it's elements can be used in a Graphical User Interface, or
|
||||||
|
GUI.
|
||||||
|
Source code, for this library means:
|
||||||
|
- raster png image* .
|
||||||
|
The LGPL in some sections obliges you to make the files carry
|
||||||
|
notices. With images this is in some cases impossible or hardly usefull.
|
||||||
|
With this library a notice is placed at a prominent place in the directory
|
||||||
|
containing the elements. You may follow this practice.
|
||||||
|
The exception in section 6 of the GNU Lesser General Public License covers
|
||||||
|
the use of elements of this art library in a GUI.
|
||||||
|
dave [at] icon-king.com
|
||||||
|
|
||||||
|
Date: 15 october 2004
|
||||||
|
Version: 1.0
|
||||||
|
|
||||||
|
DESCRIPTION:
|
||||||
|
|
||||||
|
Icon theme for KDE 3.x.
|
||||||
|
Icons where designed using Adobe Illustrator, and then exported to PNG format.
|
||||||
|
Icons shadows and minor corrections were done using Adobe Photoshop.
|
||||||
|
Kiconedit was used to correct some 16x16 and 22x22 icons.
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
|
||||||
|
Released under GNU Lesser General Public License (LGPL)
|
||||||
|
Look at the license.txt file.
|
||||||
|
|
||||||
|
CONTACT
|
||||||
|
|
||||||
|
David Vignoni
|
||||||
|
e-mail : david [at] icon-king.com
|
||||||
|
ICQ : 117761009
|
||||||
|
http: http://www.icon-king.com
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Files ic62.png under res/drawable, res/drawable-hdpi and res/drawable-ldpi
|
||||||
|
|
||||||
|
Based on http://de.wikipedia.org/w/index.php?title=Datei:Tux.svg&filetimestamp=20090927073505
|
||||||
|
|
||||||
|
The copyright holder of this file allows anyone to use it for any purpose,
|
||||||
|
provided that the copyright holders Larry Ewing, Simon Budig and
|
||||||
|
Anja Gerwinski are mentioned.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Files ic63.png under res/drawable, res/drawable-hdpi and res/drawable-ldpi
|
||||||
|
|
||||||
|
Based on http://en.wikipedia.org/wiki/File:ASF-logo.svg
|
||||||
|
|
||||||
|
Apache logo
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License. You may
|
||||||
|
obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
License for the specific language governing permissions and limitations under
|
||||||
|
the License.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Files ic64.png under res/drawable, res/drawable-hdpi and res/drawable-ldpi
|
||||||
|
|
||||||
|
Created by Jeremy JAMET and licensed under the terms of the GPLv3.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Files ic65.png, ic67.png and ic68.png under res/drawable, res/drawable-hdpi and res/drawable-ldpi
|
||||||
|
|
||||||
|
Created by Tobias Selig and licensed under the terms of the GPLv2 or GPLv3.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
File ic66.png under under res/drawable, res/drawable-hdpi and res/drawable-ldpi
|
||||||
|
|
||||||
|
Based on http://commons.wikimedia.org/wiki/File:Dollar_symbol_gold.svg
|
||||||
|
|
||||||
|
Author: Rugby471
|
||||||
|
|
||||||
|
Permission is granted to copy, distribute and/or modify this document under
|
||||||
|
the terms of the GNU Free Documentation License, Version 1.2 or any later
|
||||||
|
version published by the Free Software Foundation; with no Invariant Sections,
|
||||||
|
no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is
|
||||||
|
included in the section entitled "GNU Free Documentation License".
|
||||||
|
|
||||||
|
---
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Android KeepassDX
|
# Android KeePassDX
|
||||||
|
|
||||||
<img src="https://raw.githubusercontent.com/Kunzisoft/KeePassDX/master/art/icon.png"> KeepassDX is a **multi-format KeePass manager for Android devices**. The app allows creating keys and passwords in a secure way by integrating with the Android design standards.
|
<img src="https://raw.githubusercontent.com/Kunzisoft/KeePassDX/master/art/icon.png"> KeePassDX is a **multi-format KeePass manager for Android devices**. The app allows creating keys and passwords in a secure way by integrating with the Android design standards.
|
||||||
|
|
||||||
<img src="https://raw.githubusercontent.com/Kunzisoft/KeePassDX/master/art/screen.jpg" width="220">
|
<img src="https://raw.githubusercontent.com/Kunzisoft/KeePassDX/master/art/screen.jpg" width="220">
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
- Precise management of **settings**.
|
- Precise management of **settings**.
|
||||||
- Code written in **native languages** *(Kotlin / Java / JNI / C)*.
|
- Code written in **native languages** *(Kotlin / Java / JNI / C)*.
|
||||||
|
|
||||||
KeepassDX is **open source** and **ad-free**.
|
KeePassDX is **open source** and **ad-free**.
|
||||||
|
|
||||||
## What is KeePassDX?
|
## What is KeePassDX?
|
||||||
|
|
||||||
@@ -88,4 +88,4 @@ Other questions? You can read the [FAQ](https://github.com/Kunzisoft/KeePassDX/w
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
*This project is a fork of [KeepassDroid](https://github.com/bpellin/keepassdroid) by bpellin.*
|
*This project is a fork of [KeePassDroid](https://github.com/bpellin/keepassdroid) by bpellin.*
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
theme: jekyll-theme-cayman
|
|
||||||
@@ -6,20 +6,21 @@ apply plugin: 'kotlin-kapt'
|
|||||||
android {
|
android {
|
||||||
compileSdkVersion 30
|
compileSdkVersion 30
|
||||||
buildToolsVersion '30.0.2'
|
buildToolsVersion '30.0.2'
|
||||||
|
ndkVersion '21.3.6528147'
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.kunzisoft.keepass"
|
applicationId "com.kunzisoft.keepass"
|
||||||
minSdkVersion 14
|
minSdkVersion 14
|
||||||
targetSdkVersion 30
|
targetSdkVersion 30
|
||||||
versionCode = 45
|
versionCode = 48
|
||||||
versionName = "2.9.1"
|
versionName = "2.9.4"
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
|
|
||||||
testApplicationId = "com.kunzisoft.keepass.tests"
|
testApplicationId = "com.kunzisoft.keepass.tests"
|
||||||
testInstrumentationRunner = "android.test.InstrumentationTestRunner"
|
testInstrumentationRunner = "android.test.InstrumentationTestRunner"
|
||||||
|
|
||||||
buildConfigField "String[]", "ICON_PACKS", "{\"classic\",\"material\"}"
|
buildConfigField "String[]", "ICON_PACKS", "{\"classic\",\"material\"}"
|
||||||
manifestPlaceholders = [ googleAndroidBackupAPIKey:"" ]
|
manifestPlaceholders = [ googleAndroidBackupAPIKey:"unused" ]
|
||||||
|
|
||||||
kapt {
|
kapt {
|
||||||
arguments {
|
arguments {
|
||||||
@@ -96,11 +97,11 @@ def room_version = "2.2.5"
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
||||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||||
implementation 'androidx.preference:preference:1.1.1'
|
implementation 'androidx.preference:preference-ktx:1.1.1'
|
||||||
implementation 'androidx.cardview:cardview:1.0.0'
|
implementation 'androidx.cardview:cardview:1.0.0'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.3'
|
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
||||||
implementation 'androidx.documentfile:documentfile:1.0.1'
|
implementation 'androidx.documentfile:documentfile:1.0.1'
|
||||||
implementation 'androidx.biometric:biometric:1.1.0-beta01'
|
implementation 'androidx.biometric:biometric:1.1.0-rc01'
|
||||||
// Lifecycle - LiveData - ViewModel - Coroutines
|
// Lifecycle - LiveData - ViewModel - Coroutines
|
||||||
implementation "androidx.core:core-ktx:1.3.2"
|
implementation "androidx.core:core-ktx:1.3.2"
|
||||||
implementation 'androidx.fragment:fragment-ktx:1.2.5'
|
implementation 'androidx.fragment:fragment-ktx:1.2.5'
|
||||||
|
|||||||
@@ -150,6 +150,13 @@
|
|||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<data android:mimeType="text/plain" />
|
<data android:mimeType="text/plain" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
<data android:scheme="otpauth" android:host="totp" />
|
||||||
|
<data android:scheme="otpauth" android:host="hotp" />
|
||||||
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name="com.kunzisoft.keepass.activities.MagikeyboardLauncherActivity"
|
android:name="com.kunzisoft.keepass.activities.MagikeyboardLauncherActivity"
|
||||||
@@ -167,13 +174,17 @@
|
|||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
<service
|
<service
|
||||||
android:name=".notifications.AttachmentFileNotificationService"
|
android:name="com.kunzisoft.keepass.notifications.AttachmentFileNotificationService"
|
||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
<service
|
<service
|
||||||
android:name="com.kunzisoft.keepass.notifications.ClipboardEntryNotificationService"
|
android:name="com.kunzisoft.keepass.notifications.ClipboardEntryNotificationService"
|
||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
|
<service
|
||||||
|
android:name="com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService"
|
||||||
|
android:enabled="true"
|
||||||
|
android:exported="false" />
|
||||||
<!-- Receiver for Autofill -->
|
<!-- Receiver for Autofill -->
|
||||||
<service
|
<service
|
||||||
android:name="com.kunzisoft.keepass.autofill.KeeAutofillService"
|
android:name="com.kunzisoft.keepass.autofill.KeeAutofillService"
|
||||||
|
|||||||
@@ -452,14 +452,35 @@ class EntryEditActivity : LockingActivity(),
|
|||||||
EntryCustomFieldDialogFragment.getInstance(field).show(supportFragmentManager, "customFieldDialog")
|
EntryCustomFieldDialogFragment.getInstance(field).show(supportFragmentManager, "customFieldDialog")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun verifyNameField(field: Field,
|
||||||
|
actionIfNewName: () -> Unit) {
|
||||||
|
var extraFieldAlreadyContainsName = false
|
||||||
|
entryEditFragment?.getExtraFields()?.forEach {
|
||||||
|
if (it.name.equals(field.name, true))
|
||||||
|
extraFieldAlreadyContainsName = true
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!extraFieldAlreadyContainsName
|
||||||
|
&& Entry.newExtraFieldNameAllowed(field)) {
|
||||||
|
actionIfNewName.invoke()
|
||||||
|
} else {
|
||||||
|
Log.e(TAG, "Unable to create the new field, field name already exists")
|
||||||
|
coordinatorLayout?.let {
|
||||||
|
Snackbar.make(it, R.string.error_field_name_already_exists, Snackbar.LENGTH_LONG).asError().show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onNewCustomFieldApproved(newField: Field) {
|
override fun onNewCustomFieldApproved(newField: Field) {
|
||||||
entryEditFragment?.apply {
|
verifyNameField(newField) {
|
||||||
putExtraField(newField)
|
entryEditFragment?.putExtraField(newField)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onEditCustomFieldApproved(oldField: Field, newField: Field) {
|
override fun onEditCustomFieldApproved(oldField: Field, newField: Field) {
|
||||||
entryEditFragment?.replaceExtraField(oldField, newField)
|
verifyNameField(newField) {
|
||||||
|
entryEditFragment?.replaceExtraField(oldField, newField)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDeleteCustomFieldApproved(oldField: Field) {
|
override fun onDeleteCustomFieldApproved(oldField: Field) {
|
||||||
|
|||||||
@@ -23,15 +23,17 @@ import android.app.Activity
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import com.kunzisoft.keepass.R
|
||||||
import com.kunzisoft.keepass.activities.helpers.EntrySelectionHelper
|
import com.kunzisoft.keepass.activities.helpers.EntrySelectionHelper
|
||||||
import com.kunzisoft.keepass.database.element.Database
|
import com.kunzisoft.keepass.database.element.Database
|
||||||
import com.kunzisoft.keepass.database.search.SearchHelper
|
import com.kunzisoft.keepass.database.search.SearchHelper
|
||||||
import com.kunzisoft.keepass.magikeyboard.MagikIME
|
import com.kunzisoft.keepass.magikeyboard.MagikIME
|
||||||
import com.kunzisoft.keepass.model.EntryInfo
|
import com.kunzisoft.keepass.model.EntryInfo
|
||||||
import com.kunzisoft.keepass.model.SearchInfo
|
import com.kunzisoft.keepass.model.SearchInfo
|
||||||
|
import com.kunzisoft.keepass.otp.OtpEntryFields
|
||||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
import com.kunzisoft.keepass.utils.UriUtil
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Activity to search or select entry in database,
|
* Activity to search or select entry in database,
|
||||||
@@ -42,22 +44,35 @@ class EntrySelectionLauncherActivity : AppCompatActivity() {
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
|
||||||
var sharedWebDomain: String? = null
|
var sharedWebDomain: String? = null
|
||||||
|
var otpString: String? = null
|
||||||
|
|
||||||
when (intent?.action) {
|
when (intent?.action) {
|
||||||
Intent.ACTION_SEND -> {
|
Intent.ACTION_SEND -> {
|
||||||
if ("text/plain" == intent.type) {
|
if ("text/plain" == intent.type) {
|
||||||
// Retrieve web domain
|
// Retrieve web domain or OTP
|
||||||
intent.getStringExtra(Intent.EXTRA_TEXT)?.let {
|
intent.getStringExtra(Intent.EXTRA_TEXT)?.let { extra ->
|
||||||
sharedWebDomain = Uri.parse(it).host
|
if (OtpEntryFields.isOTPUri(extra))
|
||||||
|
otpString = extra
|
||||||
|
else
|
||||||
|
sharedWebDomain = Uri.parse(extra).host
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Intent.ACTION_VIEW -> {
|
||||||
|
// Retrieve OTP
|
||||||
|
intent.dataString?.let { extra ->
|
||||||
|
if (OtpEntryFields.isOTPUri(extra))
|
||||||
|
otpString = extra
|
||||||
|
}
|
||||||
|
}
|
||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build search param
|
|
||||||
|
// Build domain search param
|
||||||
val searchInfo = SearchInfo().apply {
|
val searchInfo = SearchInfo().apply {
|
||||||
webDomain = sharedWebDomain
|
this.webDomain = sharedWebDomain
|
||||||
|
this.otpString = otpString
|
||||||
}
|
}
|
||||||
SearchInfo.getConcreteWebDomain(this, searchInfo.webDomain) { concreteWebDomain ->
|
SearchInfo.getConcreteWebDomain(this, searchInfo.webDomain) { concreteWebDomain ->
|
||||||
searchInfo.webDomain = concreteWebDomain
|
searchInfo.webDomain = concreteWebDomain
|
||||||
@@ -68,62 +83,97 @@ class EntrySelectionLauncherActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun launch(searchInfo: SearchInfo) {
|
private fun launch(searchInfo: SearchInfo) {
|
||||||
// Setting to integrate Magikeyboard
|
|
||||||
val searchShareForMagikeyboard = PreferencesUtil.isKeyboardSearchShareEnable(this)
|
|
||||||
|
|
||||||
// If database is open
|
if (!searchInfo.containsOnlyNullValues()) {
|
||||||
val database = Database.getInstance()
|
// Setting to integrate Magikeyboard
|
||||||
val readOnly = database.isReadOnly
|
val searchShareForMagikeyboard = PreferencesUtil.isKeyboardSearchShareEnable(this)
|
||||||
SearchHelper.checkAutoSearchInfo(this,
|
|
||||||
database,
|
// If database is open
|
||||||
searchInfo,
|
val database = Database.getInstance()
|
||||||
{ items ->
|
val readOnly = database.isReadOnly
|
||||||
// Items found
|
SearchHelper.checkAutoSearchInfo(this,
|
||||||
if (searchShareForMagikeyboard) {
|
database,
|
||||||
if (items.size == 1) {
|
searchInfo,
|
||||||
// Automatically populate keyboard
|
{ items ->
|
||||||
val entryPopulate = items[0]
|
// Items found
|
||||||
populateKeyboardAndMoveAppToBackground(this,
|
if (searchInfo.otpString != null) {
|
||||||
entryPopulate,
|
if (!readOnly) {
|
||||||
intent)
|
GroupActivity.launchForSaveResult(this,
|
||||||
|
searchInfo,
|
||||||
|
false)
|
||||||
|
} else {
|
||||||
|
Toast.makeText(applicationContext,
|
||||||
|
R.string.autofill_read_only_save,
|
||||||
|
Toast.LENGTH_LONG)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
} else if (searchShareForMagikeyboard) {
|
||||||
|
if (items.size == 1) {
|
||||||
|
// Automatically populate keyboard
|
||||||
|
val entryPopulate = items[0]
|
||||||
|
populateKeyboardAndMoveAppToBackground(this,
|
||||||
|
entryPopulate,
|
||||||
|
intent)
|
||||||
|
} else {
|
||||||
|
// Select the one we want
|
||||||
|
GroupActivity.launchForKeyboardSelectionResult(this,
|
||||||
|
readOnly,
|
||||||
|
searchInfo,
|
||||||
|
true)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Select the one we want
|
GroupActivity.launchForSearchResult(this,
|
||||||
GroupActivity.launchForKeyboardSelectionResult(this,
|
|
||||||
readOnly,
|
readOnly,
|
||||||
searchInfo,
|
searchInfo,
|
||||||
true)
|
true)
|
||||||
}
|
}
|
||||||
} else {
|
},
|
||||||
GroupActivity.launchForSearchResult(this,
|
{
|
||||||
readOnly,
|
// Show the database UI to select the entry
|
||||||
searchInfo,
|
if (searchInfo.otpString != null) {
|
||||||
true)
|
if (!readOnly) {
|
||||||
|
GroupActivity.launchForSaveResult(this,
|
||||||
|
searchInfo,
|
||||||
|
false)
|
||||||
|
} else {
|
||||||
|
Toast.makeText(applicationContext,
|
||||||
|
R.string.autofill_read_only_save,
|
||||||
|
Toast.LENGTH_LONG)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
} else if (readOnly || searchShareForMagikeyboard) {
|
||||||
|
GroupActivity.launchForKeyboardSelectionResult(this,
|
||||||
|
readOnly,
|
||||||
|
searchInfo,
|
||||||
|
false)
|
||||||
|
} else {
|
||||||
|
GroupActivity.launchForSaveResult(this,
|
||||||
|
searchInfo,
|
||||||
|
false)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// If database not open
|
||||||
|
if (searchInfo.otpString != null) {
|
||||||
|
if (!readOnly) {
|
||||||
|
FileDatabaseSelectActivity.launchForSaveResult(this,
|
||||||
|
searchInfo)
|
||||||
|
} else {
|
||||||
|
Toast.makeText(applicationContext,
|
||||||
|
R.string.autofill_read_only_save,
|
||||||
|
Toast.LENGTH_LONG)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
} else if (searchShareForMagikeyboard) {
|
||||||
|
FileDatabaseSelectActivity.launchForKeyboardSelectionResult(this,
|
||||||
|
searchInfo)
|
||||||
|
} else {
|
||||||
|
FileDatabaseSelectActivity.launchForSearchResult(this,
|
||||||
|
searchInfo)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
)
|
||||||
{
|
}
|
||||||
// Show the database UI to select the entry
|
|
||||||
if (readOnly || searchShareForMagikeyboard) {
|
|
||||||
GroupActivity.launchForKeyboardSelectionResult(this,
|
|
||||||
readOnly,
|
|
||||||
searchInfo,
|
|
||||||
false)
|
|
||||||
} else {
|
|
||||||
GroupActivity.launchForSaveResult(this,
|
|
||||||
searchInfo,
|
|
||||||
false)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// If database not open
|
|
||||||
if (searchShareForMagikeyboard) {
|
|
||||||
FileDatabaseSelectActivity.launchForKeyboardSelectionResult(this,
|
|
||||||
searchInfo)
|
|
||||||
} else {
|
|
||||||
FileDatabaseSelectActivity.launchForSearchResult(this,
|
|
||||||
searchInfo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ import androidx.activity.viewModels
|
|||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||||
@@ -162,7 +161,7 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Observe list of databases
|
// Observe list of databases
|
||||||
databaseFilesViewModel.databaseFilesLoaded.observe(this, Observer { databaseFiles ->
|
databaseFilesViewModel.databaseFilesLoaded.observe(this) { databaseFiles ->
|
||||||
when (databaseFiles.databaseFileAction) {
|
when (databaseFiles.databaseFileAction) {
|
||||||
DatabaseFilesViewModel.DatabaseFileAction.NONE -> {
|
DatabaseFilesViewModel.DatabaseFileAction.NONE -> {
|
||||||
mAdapterDatabaseHistory?.replaceAllDatabaseFileHistoryList(databaseFiles.databaseFileList)
|
mAdapterDatabaseHistory?.replaceAllDatabaseFileHistoryList(databaseFiles.databaseFileList)
|
||||||
@@ -186,13 +185,13 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
databaseFilesViewModel.consumeAction()
|
databaseFilesViewModel.consumeAction()
|
||||||
})
|
}
|
||||||
|
|
||||||
// Observe default database
|
// Observe default database
|
||||||
databaseFilesViewModel.defaultDatabase.observe(this, Observer {
|
databaseFilesViewModel.defaultDatabase.observe(this) {
|
||||||
// Retrieve settings for default database
|
// Retrieve settings for default database
|
||||||
mAdapterDatabaseHistory?.setDefaultDatabase(it)
|
mAdapterDatabaseHistory?.setDefaultDatabase(it)
|
||||||
})
|
}
|
||||||
|
|
||||||
// Attach the dialog thread to this activity
|
// Attach the dialog thread to this activity
|
||||||
mProgressDatabaseTaskProvider = ProgressDatabaseTaskProvider(this).apply {
|
mProgressDatabaseTaskProvider = ProgressDatabaseTaskProvider(this).apply {
|
||||||
@@ -237,10 +236,10 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
|
|||||||
|
|
||||||
private fun fileNoFoundAction(e: FileNotFoundException) {
|
private fun fileNoFoundAction(e: FileNotFoundException) {
|
||||||
val error = getString(R.string.file_not_found_content)
|
val error = getString(R.string.file_not_found_content)
|
||||||
|
Log.e(TAG, error, e)
|
||||||
coordinatorLayout?.let {
|
coordinatorLayout?.let {
|
||||||
Snackbar.make(it, error, Snackbar.LENGTH_LONG).asError().show()
|
Snackbar.make(it, error, Snackbar.LENGTH_LONG).asError().show()
|
||||||
}
|
}
|
||||||
Log.e(TAG, error, e)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun launchPasswordActivity(databaseUri: Uri, keyFile: Uri?) {
|
private fun launchPasswordActivity(databaseUri: Uri, keyFile: Uri?) {
|
||||||
@@ -468,6 +467,19 @@ class FileDatabaseSelectActivity : SpecialModeActivity(),
|
|||||||
searchInfo)
|
searchInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* -------------------------
|
||||||
|
* Save Launch
|
||||||
|
* -------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
fun launchForSaveResult(context: Context,
|
||||||
|
searchInfo: SearchInfo) {
|
||||||
|
EntrySelectionHelper.startActivityForSaveModeResult(context,
|
||||||
|
Intent(context, FileDatabaseSelectActivity::class.java),
|
||||||
|
searchInfo)
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* -------------------------
|
* -------------------------
|
||||||
* Keyboard Launch
|
* Keyboard Launch
|
||||||
|
|||||||
@@ -591,13 +591,29 @@ class GroupActivity : LockingActivity(),
|
|||||||
finish()
|
finish()
|
||||||
},
|
},
|
||||||
{ searchInfo ->
|
{ searchInfo ->
|
||||||
if (!mReadOnly
|
// Recheck search, only to fix #783 because workflow allows to open multiple search elements
|
||||||
&& searchInfo != null
|
SearchHelper.checkAutoSearchInfo(this,
|
||||||
&& PreferencesUtil.isKeyboardSaveSearchInfoEnable(this@GroupActivity)) {
|
mDatabase!!,
|
||||||
updateEntryWithSearchInfo(entryVersioned, searchInfo)
|
searchInfo,
|
||||||
} else {
|
{ _ ->
|
||||||
entrySelectedForKeyboardSelection(entryVersioned)
|
// Item in search, don't save
|
||||||
}
|
entrySelectedForKeyboardSelection(entryVersioned)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// Item not found, save it if required
|
||||||
|
if (!mReadOnly
|
||||||
|
&& searchInfo != null
|
||||||
|
&& PreferencesUtil.isKeyboardSaveSearchInfoEnable(this@GroupActivity)) {
|
||||||
|
updateEntryWithSearchInfo(entryVersioned, searchInfo)
|
||||||
|
} else {
|
||||||
|
entrySelectedForKeyboardSelection(entryVersioned)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// Normally not append
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
)
|
||||||
},
|
},
|
||||||
{ searchInfo, _ ->
|
{ searchInfo, _ ->
|
||||||
if (!mReadOnly
|
if (!mReadOnly
|
||||||
@@ -660,7 +676,7 @@ class GroupActivity : LockingActivity(),
|
|||||||
|
|
||||||
private fun updateEntryWithSearchInfo(entry: Entry, searchInfo: SearchInfo) {
|
private fun updateEntryWithSearchInfo(entry: Entry, searchInfo: SearchInfo) {
|
||||||
val newEntry = Entry(entry)
|
val newEntry = Entry(entry)
|
||||||
newEntry.setEntryInfo(mDatabase, newEntry.getEntryInfo(mDatabase).apply {
|
newEntry.setEntryInfo(mDatabase, newEntry.getEntryInfo(mDatabase, true).apply {
|
||||||
saveSearchInfo(mDatabase, searchInfo)
|
saveSearchInfo(mDatabase, searchInfo)
|
||||||
})
|
})
|
||||||
// In selection mode, it's forced read-only, so update not allowed
|
// In selection mode, it's forced read-only, so update not allowed
|
||||||
@@ -1354,8 +1370,20 @@ class GroupActivity : LockingActivity(),
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
{
|
{ searchInfo ->
|
||||||
// Nothing with Save Info, only pass by search first
|
// Save info used with OTP
|
||||||
|
if (!readOnly) {
|
||||||
|
GroupActivity.launchForSaveResult(activity,
|
||||||
|
searchInfo,
|
||||||
|
false)
|
||||||
|
onLaunchActivitySpecialMode()
|
||||||
|
} else {
|
||||||
|
Toast.makeText(activity.applicationContext,
|
||||||
|
R.string.autofill_read_only_save,
|
||||||
|
Toast.LENGTH_LONG)
|
||||||
|
.show()
|
||||||
|
onCancelSpecialMode()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{ searchInfo ->
|
{ searchInfo ->
|
||||||
SearchHelper.checkAutoSearchInfo(activity,
|
SearchHelper.checkAutoSearchInfo(activity,
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import androidx.annotation.RequiresApi
|
|||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
import androidx.biometric.BiometricManager
|
import androidx.biometric.BiometricManager
|
||||||
import androidx.core.app.ActivityCompat
|
import androidx.core.app.ActivityCompat
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import com.kunzisoft.keepass.R
|
import com.kunzisoft.keepass.R
|
||||||
import com.kunzisoft.keepass.activities.dialogs.DuplicateUuidDialog
|
import com.kunzisoft.keepass.activities.dialogs.DuplicateUuidDialog
|
||||||
@@ -56,6 +55,7 @@ import com.kunzisoft.keepass.biometric.BiometricUnlockDatabaseHelper
|
|||||||
import com.kunzisoft.keepass.database.action.ProgressDatabaseTaskProvider
|
import com.kunzisoft.keepass.database.action.ProgressDatabaseTaskProvider
|
||||||
import com.kunzisoft.keepass.database.element.Database
|
import com.kunzisoft.keepass.database.element.Database
|
||||||
import com.kunzisoft.keepass.database.exception.DuplicateUuidDatabaseException
|
import com.kunzisoft.keepass.database.exception.DuplicateUuidDatabaseException
|
||||||
|
import com.kunzisoft.keepass.database.exception.FileNotFoundDatabaseException
|
||||||
import com.kunzisoft.keepass.education.PasswordActivityEducation
|
import com.kunzisoft.keepass.education.PasswordActivityEducation
|
||||||
import com.kunzisoft.keepass.model.RegisterInfo
|
import com.kunzisoft.keepass.model.RegisterInfo
|
||||||
import com.kunzisoft.keepass.model.SearchInfo
|
import com.kunzisoft.keepass.model.SearchInfo
|
||||||
@@ -92,6 +92,7 @@ open class PasswordActivity : SpecialModeActivity() {
|
|||||||
|
|
||||||
private val databaseFileViewModel: DatabaseFileViewModel by viewModels()
|
private val databaseFileViewModel: DatabaseFileViewModel by viewModels()
|
||||||
|
|
||||||
|
private var mDefaultDatabase: Boolean = false
|
||||||
private var mDatabaseFileUri: Uri? = null
|
private var mDatabaseFileUri: Uri? = null
|
||||||
private var mDatabaseKeyFileUri: Uri? = null
|
private var mDatabaseKeyFileUri: Uri? = null
|
||||||
|
|
||||||
@@ -173,8 +174,13 @@ open class PasswordActivity : SpecialModeActivity() {
|
|||||||
mAllowAutoOpenBiometricPrompt = savedInstanceState.getBoolean(ALLOW_AUTO_OPEN_BIOMETRIC_PROMPT)
|
mAllowAutoOpenBiometricPrompt = savedInstanceState.getBoolean(ALLOW_AUTO_OPEN_BIOMETRIC_PROMPT)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Observe if default database
|
||||||
|
databaseFileViewModel.isDefaultDatabase.observe(this) { isDefaultDatabase ->
|
||||||
|
mDefaultDatabase = isDefaultDatabase
|
||||||
|
}
|
||||||
|
|
||||||
// Observe database file change
|
// Observe database file change
|
||||||
databaseFileViewModel.databaseFileLoaded.observe(this, Observer { databaseFile ->
|
databaseFileViewModel.databaseFileLoaded.observe(this) { databaseFile ->
|
||||||
// Force read only if the file does not exists
|
// Force read only if the file does not exists
|
||||||
mForceReadOnly = databaseFile?.let {
|
mForceReadOnly = databaseFile?.let {
|
||||||
!it.databaseFileExists
|
!it.databaseFileExists
|
||||||
@@ -194,17 +200,17 @@ open class PasswordActivity : SpecialModeActivity() {
|
|||||||
filenameView?.text = databaseFile?.databaseAlias ?: ""
|
filenameView?.text = databaseFile?.databaseAlias ?: ""
|
||||||
|
|
||||||
onDatabaseFileLoaded(databaseFile?.databaseUri, keyFileUri)
|
onDatabaseFileLoaded(databaseFile?.databaseUri, keyFileUri)
|
||||||
})
|
}
|
||||||
|
|
||||||
mProgressDatabaseTaskProvider = ProgressDatabaseTaskProvider(this).apply {
|
mProgressDatabaseTaskProvider = ProgressDatabaseTaskProvider(this).apply {
|
||||||
onActionFinish = { actionTask, result ->
|
onActionFinish = { actionTask, result ->
|
||||||
when (actionTask) {
|
when (actionTask) {
|
||||||
ACTION_DATABASE_LOAD_TASK -> {
|
ACTION_DATABASE_LOAD_TASK -> {
|
||||||
// Recheck biometric if error
|
// Recheck advanced unlock if error
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
if (PreferencesUtil.isBiometricUnlockEnable(this@PasswordActivity)) {
|
if (PreferencesUtil.isAdvancedUnlockEnable(this@PasswordActivity)) {
|
||||||
// Stay with the same mode and init it
|
// Stay with the same mode and init it
|
||||||
advancedUnlockedManager?.initBiometricMode()
|
advancedUnlockedManager?.initAdvancedUnlockMode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,32 +226,40 @@ open class PasswordActivity : SpecialModeActivity() {
|
|||||||
if (resultException != null) {
|
if (resultException != null) {
|
||||||
resultError = resultException.getLocalizedMessage(resources)
|
resultError = resultException.getLocalizedMessage(resources)
|
||||||
|
|
||||||
// Relaunch loading if we need to fix UUID
|
when (resultException) {
|
||||||
if (resultException is DuplicateUuidDatabaseException) {
|
is DuplicateUuidDatabaseException -> {
|
||||||
showLoadDatabaseDuplicateUuidMessage {
|
// Relaunch loading if we need to fix UUID
|
||||||
|
showLoadDatabaseDuplicateUuidMessage {
|
||||||
|
|
||||||
var databaseUri: Uri? = null
|
var databaseUri: Uri? = null
|
||||||
var masterPassword: String? = null
|
var masterPassword: String? = null
|
||||||
var keyFileUri: Uri? = null
|
var keyFileUri: Uri? = null
|
||||||
var readOnly = true
|
var readOnly = true
|
||||||
var cipherEntity: CipherDatabaseEntity? = null
|
var cipherEntity: CipherDatabaseEntity? = null
|
||||||
|
|
||||||
result.data?.let { resultData ->
|
result.data?.let { resultData ->
|
||||||
databaseUri = resultData.getParcelable(DATABASE_URI_KEY)
|
databaseUri = resultData.getParcelable(DATABASE_URI_KEY)
|
||||||
masterPassword = resultData.getString(MASTER_PASSWORD_KEY)
|
masterPassword = resultData.getString(MASTER_PASSWORD_KEY)
|
||||||
keyFileUri = resultData.getParcelable(KEY_FILE_URI_KEY)
|
keyFileUri = resultData.getParcelable(KEY_FILE_URI_KEY)
|
||||||
readOnly = resultData.getBoolean(READ_ONLY_KEY)
|
readOnly = resultData.getBoolean(READ_ONLY_KEY)
|
||||||
cipherEntity = resultData.getParcelable(CIPHER_ENTITY_KEY)
|
cipherEntity = resultData.getParcelable(CIPHER_ENTITY_KEY)
|
||||||
|
}
|
||||||
|
|
||||||
|
databaseUri?.let { databaseFileUri ->
|
||||||
|
showProgressDialogAndLoadDatabase(
|
||||||
|
databaseFileUri,
|
||||||
|
masterPassword,
|
||||||
|
keyFileUri,
|
||||||
|
readOnly,
|
||||||
|
cipherEntity,
|
||||||
|
true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
databaseUri?.let { databaseFileUri ->
|
is FileNotFoundDatabaseException -> {
|
||||||
showProgressDialogAndLoadDatabase(
|
// Remove this default database inaccessible
|
||||||
databaseFileUri,
|
if (mDefaultDatabase) {
|
||||||
masterPassword,
|
databaseFileViewModel.removeDefaultDatabase()
|
||||||
keyFileUri,
|
|
||||||
readOnly,
|
|
||||||
cipherEntity,
|
|
||||||
true)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -277,6 +291,9 @@ open class PasswordActivity : SpecialModeActivity() {
|
|||||||
mDatabaseFileUri = intent?.getParcelableExtra(KEY_FILENAME)
|
mDatabaseFileUri = intent?.getParcelableExtra(KEY_FILENAME)
|
||||||
mDatabaseKeyFileUri = intent?.getParcelableExtra(KEY_KEYFILE)
|
mDatabaseKeyFileUri = intent?.getParcelableExtra(KEY_KEYFILE)
|
||||||
}
|
}
|
||||||
|
mDatabaseFileUri?.let {
|
||||||
|
databaseFileViewModel.checkIfIsDefaultDatabase(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onNewIntent(intent: Intent?) {
|
override fun onNewIntent(intent: Intent?) {
|
||||||
@@ -370,7 +387,7 @@ open class PasswordActivity : SpecialModeActivity() {
|
|||||||
} else {
|
} else {
|
||||||
// Init Biometric elements
|
// Init Biometric elements
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
if (PreferencesUtil.isBiometricUnlockEnable(this)) {
|
if (PreferencesUtil.isAdvancedUnlockEnable(this)) {
|
||||||
if (advancedUnlockedManager == null
|
if (advancedUnlockedManager == null
|
||||||
&& databaseFileUri != null) {
|
&& databaseFileUri != null) {
|
||||||
advancedUnlockedManager = AdvancedUnlockedManager(this,
|
advancedUnlockedManager = AdvancedUnlockedManager(this,
|
||||||
@@ -658,7 +675,7 @@ open class PasswordActivity : SpecialModeActivity() {
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
||||||
&& !readOnlyEducationPerformed) {
|
&& !readOnlyEducationPerformed) {
|
||||||
val biometricCanAuthenticate = BiometricUnlockDatabaseHelper.canAuthenticate(this)
|
val biometricCanAuthenticate = BiometricUnlockDatabaseHelper.canAuthenticate(this)
|
||||||
PreferencesUtil.isBiometricUnlockEnable(applicationContext)
|
PreferencesUtil.isAdvancedUnlockEnable(applicationContext)
|
||||||
&& (biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED || biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS)
|
&& (biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED || biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS)
|
||||||
&& advancedUnlockInfoView != null && advancedUnlockInfoView?.visibility == View.VISIBLE
|
&& advancedUnlockInfoView != null && advancedUnlockInfoView?.visibility == View.VISIBLE
|
||||||
&& advancedUnlockInfoView?.unlockIconImageView != null
|
&& advancedUnlockInfoView?.unlockIconImageView != null
|
||||||
@@ -691,8 +708,8 @@ open class PasswordActivity : SpecialModeActivity() {
|
|||||||
readOnly = !readOnly
|
readOnly = !readOnly
|
||||||
changeOpenFileReadIcon(item)
|
changeOpenFileReadIcon(item)
|
||||||
}
|
}
|
||||||
R.id.menu_biometric_remove_key -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
R.id.menu_keystore_remove_key -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
advancedUnlockedManager?.deleteEntryKey()
|
advancedUnlockedManager?.deleteEncryptedDatabaseKey()
|
||||||
}
|
}
|
||||||
else -> return MenuUtil.onDefaultMenuOptionsItemSelected(this, item)
|
else -> return MenuUtil.onDefaultMenuOptionsItemSelected(this, item)
|
||||||
}
|
}
|
||||||
@@ -795,6 +812,25 @@ open class PasswordActivity : SpecialModeActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* -------------------------
|
||||||
|
* Save Launch
|
||||||
|
* -------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Throws(FileNotFoundException::class)
|
||||||
|
fun launchForSaveResult(activity: Activity,
|
||||||
|
databaseFile: Uri,
|
||||||
|
keyFile: Uri?,
|
||||||
|
searchInfo: SearchInfo) {
|
||||||
|
buildAndLaunchIntent(activity, databaseFile, keyFile) { intent ->
|
||||||
|
EntrySelectionHelper.startActivityForSaveModeResult(
|
||||||
|
activity,
|
||||||
|
intent,
|
||||||
|
searchInfo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* -------------------------
|
* -------------------------
|
||||||
* Keyboard Launch
|
* Keyboard Launch
|
||||||
@@ -877,8 +913,11 @@ open class PasswordActivity : SpecialModeActivity() {
|
|||||||
searchInfo)
|
searchInfo)
|
||||||
onLaunchActivitySpecialMode()
|
onLaunchActivitySpecialMode()
|
||||||
},
|
},
|
||||||
{ // Save Action
|
{ searchInfo -> // Save Action
|
||||||
// Not directly used, a search is performed before
|
PasswordActivity.launchForSaveResult(activity,
|
||||||
|
databaseUri, keyFile,
|
||||||
|
searchInfo)
|
||||||
|
onLaunchActivitySpecialMode()
|
||||||
},
|
},
|
||||||
{ searchInfo -> // Keyboard Selection Action
|
{ searchInfo -> // Keyboard Selection Action
|
||||||
PasswordActivity.launchForKeyboardResult(activity,
|
PasswordActivity.launchForKeyboardResult(activity,
|
||||||
|
|||||||
@@ -90,12 +90,12 @@ class UnavailableFeatureDialogFragment : DialogFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (apiName.isEmpty()) {
|
if (apiName.isEmpty()) {
|
||||||
val mapper = arrayOf("ANDROID BASE", "ANDROID BASE 1.1", "CUPCAKE", "DONUT", "ECLAIR", "ECLAIR_0_1", "ECLAIR_MR1", "FROYO", "GINGERBREAD", "GINGERBREAD_MR1", "HONEYCOMB", "HONEYCOMB_MR1", "HONEYCOMB_MR2", "ICE_CREAM_SANDWICH", "ICE_CREAM_SANDWICH_MR1", "JELLY_BEAN", "JELLY_BEAN", "JELLY_BEAN", "KITKAT", "KITKAT", "LOLLIPOOP", "LOLLIPOOP_MR1", "MARSHMALLOW", "NOUGAT", "NOUGAT", "OREO", "OREO")
|
val mapper = arrayOf("ANDROID BASE", "ANDROID BASE 1.1", "CUPCAKE", "DONUT", "ECLAIR", "ECLAIR_0_1", "ECLAIR_MR1", "FROYO", "GINGERBREAD", "GINGERBREAD_MR1", "HONEYCOMB", "HONEYCOMB_MR1", "HONEYCOMB_MR2", "ICE_CREAM_SANDWICH", "ICE_CREAM_SANDWICH_MR1", "JELLY_BEAN", "JELLY_BEAN", "JELLY_BEAN", "KITKAT", "KITKAT", "LOLLIPOOP", "LOLLIPOOP_MR1", "MARSHMALLOW", "NOUGAT", "NOUGAT", "OREO", "OREO", "PIE", "", "")
|
||||||
val index = apiNumber - 1
|
val index = apiNumber - 1
|
||||||
apiName = if (index < mapper.size) mapper[index] else "UNKNOWN_VERSION"
|
apiName = if (index < mapper.size) mapper[index] else "UNKNOWN_VERSION"
|
||||||
}
|
}
|
||||||
if (version.isEmpty()) {
|
if (version.isEmpty()) {
|
||||||
val versions = arrayOf("1.0", "1.1", "1.5", "1.6", "2.0", "2.0.1", "2.1", "2.2.X", "2.3", "2.3.3", "3.0", "3.1", "3.2.0", "4.0.1", "4.0.3", "4.1.0", "4.2.0", "4.3.0", "4.4", "4.4", "5.0", "5.1", "6.0", "7.0", "7.1", "8.0.0", "8.1.0")
|
val versions = arrayOf("1.0", "1.1", "1.5", "1.6", "2.0", "2.0.1", "2.1", "2.2.X", "2.3", "2.3.3", "3.0", "3.1", "3.2.0", "4.0.1", "4.0.3", "4.1.0", "4.2.0", "4.3.0", "4.4", "4.4", "5.0", "5.1", "6.0", "7.0", "7.1", "8.0.0", "8.1.0", "9", "10", "11")
|
||||||
val index = apiNumber - 1
|
val index = apiNumber - 1
|
||||||
version = if (index < versions.size) versions[index] else "UNKNOWN_VERSION"
|
version = if (index < versions.size) versions[index] else "UNKNOWN_VERSION"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ class SearchEntryCursorAdapter(private val context: Context,
|
|||||||
} else {
|
} else {
|
||||||
""
|
""
|
||||||
}
|
}
|
||||||
|
visibility = if (text.isEmpty()) View.GONE else View.VISIBLE
|
||||||
strikeOut(currentEntry.isCurrentlyExpires)
|
strikeOut(currentEntry.isCurrentlyExpires)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -160,8 +161,8 @@ class SearchEntryCursorAdapter(private val context: Context,
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class ViewHolder {
|
private class ViewHolder {
|
||||||
internal var imageViewIcon: ImageView? = null
|
var imageViewIcon: ImageView? = null
|
||||||
internal var textViewTitle: TextView? = null
|
var textViewTitle: TextView? = null
|
||||||
internal var textViewSubTitle: TextView? = null
|
var textViewSubTitle: TextView? = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,27 +19,96 @@
|
|||||||
*/
|
*/
|
||||||
package com.kunzisoft.keepass.app.database
|
package com.kunzisoft.keepass.app.database
|
||||||
|
|
||||||
|
import android.content.ComponentName
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import android.content.ServiceConnection
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.os.IBinder
|
||||||
|
import com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService
|
||||||
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
import com.kunzisoft.keepass.utils.SingletonHolderParameter
|
import com.kunzisoft.keepass.utils.SingletonHolderParameter
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
class CipherDatabaseAction(applicationContext: Context) {
|
class CipherDatabaseAction(context: Context) {
|
||||||
|
|
||||||
|
private val applicationContext = context.applicationContext
|
||||||
private val cipherDatabaseDao =
|
private val cipherDatabaseDao =
|
||||||
AppDatabase
|
AppDatabase
|
||||||
.getDatabase(applicationContext)
|
.getDatabase(applicationContext)
|
||||||
.cipherDatabaseDao()
|
.cipherDatabaseDao()
|
||||||
|
|
||||||
|
// Temp DAO to easily remove content if object no longer in memory
|
||||||
|
private var useTempDao = PreferencesUtil.isTempAdvancedUnlockEnable(applicationContext)
|
||||||
|
|
||||||
|
private val mIntentAdvancedUnlockService = Intent(applicationContext,
|
||||||
|
AdvancedUnlockNotificationService::class.java)
|
||||||
|
private var mBinder: AdvancedUnlockNotificationService.AdvancedUnlockBinder? = null
|
||||||
|
private var mServiceConnection: ServiceConnection? = null
|
||||||
|
|
||||||
|
private var mDatabaseListeners = LinkedList<DatabaseListener>()
|
||||||
|
|
||||||
|
fun reloadPreferences() {
|
||||||
|
useTempDao = PreferencesUtil.isTempAdvancedUnlockEnable(applicationContext)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Synchronized
|
||||||
|
private fun attachService(performedAction: () -> Unit) {
|
||||||
|
// Check if a service is currently running else do nothing
|
||||||
|
if (mBinder != null) {
|
||||||
|
performedAction.invoke()
|
||||||
|
} else if (mServiceConnection == null) {
|
||||||
|
mServiceConnection = object : ServiceConnection {
|
||||||
|
override fun onServiceConnected(name: ComponentName?, serviceBinder: IBinder?) {
|
||||||
|
mBinder = (serviceBinder as AdvancedUnlockNotificationService.AdvancedUnlockBinder)
|
||||||
|
performedAction.invoke()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onServiceDisconnected(name: ComponentName?) {
|
||||||
|
mBinder = null
|
||||||
|
mServiceConnection = null
|
||||||
|
mDatabaseListeners.forEach {
|
||||||
|
it.onDatabaseCleared()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
applicationContext.bindService(mIntentAdvancedUnlockService,
|
||||||
|
mServiceConnection!!,
|
||||||
|
Context.BIND_ABOVE_CLIENT)
|
||||||
|
if (mBinder == null) {
|
||||||
|
applicationContext.startService(mIntentAdvancedUnlockService)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun registerDatabaseListener(listener: DatabaseListener) {
|
||||||
|
mDatabaseListeners.add(listener)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun unregisterDatabaseListener(listener: DatabaseListener) {
|
||||||
|
mDatabaseListeners.remove(listener)
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DatabaseListener {
|
||||||
|
fun onDatabaseCleared()
|
||||||
|
}
|
||||||
|
|
||||||
fun getCipherDatabase(databaseUri: Uri,
|
fun getCipherDatabase(databaseUri: Uri,
|
||||||
cipherDatabaseResultListener: (CipherDatabaseEntity?) -> Unit) {
|
cipherDatabaseResultListener: (CipherDatabaseEntity?) -> Unit) {
|
||||||
IOActionTask(
|
if (useTempDao) {
|
||||||
{
|
attachService {
|
||||||
cipherDatabaseDao.getByDatabaseUri(databaseUri.toString())
|
cipherDatabaseResultListener.invoke(mBinder?.getCipherDatabase(databaseUri))
|
||||||
},
|
}
|
||||||
{
|
} else {
|
||||||
cipherDatabaseResultListener.invoke(it)
|
IOActionTask(
|
||||||
}
|
{
|
||||||
).execute()
|
cipherDatabaseDao.getByDatabaseUri(databaseUri.toString())
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cipherDatabaseResultListener.invoke(it)
|
||||||
|
}
|
||||||
|
).execute()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun containsCipherDatabase(databaseUri: Uri,
|
fun containsCipherDatabase(databaseUri: Uri,
|
||||||
@@ -51,36 +120,52 @@ class CipherDatabaseAction(applicationContext: Context) {
|
|||||||
|
|
||||||
fun addOrUpdateCipherDatabase(cipherDatabaseEntity: CipherDatabaseEntity,
|
fun addOrUpdateCipherDatabase(cipherDatabaseEntity: CipherDatabaseEntity,
|
||||||
cipherDatabaseResultListener: (() -> Unit)? = null) {
|
cipherDatabaseResultListener: (() -> Unit)? = null) {
|
||||||
IOActionTask(
|
if (useTempDao) {
|
||||||
{
|
attachService {
|
||||||
val cipherDatabaseRetrieve = cipherDatabaseDao.getByDatabaseUri(cipherDatabaseEntity.databaseUri)
|
mBinder?.addOrUpdateCipherDatabase(cipherDatabaseEntity)
|
||||||
|
cipherDatabaseResultListener?.invoke()
|
||||||
// Update values if element not yet in the database
|
}
|
||||||
if (cipherDatabaseRetrieve == null) {
|
} else {
|
||||||
cipherDatabaseDao.add(cipherDatabaseEntity)
|
IOActionTask(
|
||||||
} else {
|
{
|
||||||
cipherDatabaseDao.update(cipherDatabaseEntity)
|
val cipherDatabaseRetrieve = cipherDatabaseDao.getByDatabaseUri(cipherDatabaseEntity.databaseUri)
|
||||||
|
// Update values if element not yet in the database
|
||||||
|
if (cipherDatabaseRetrieve == null) {
|
||||||
|
cipherDatabaseDao.add(cipherDatabaseEntity)
|
||||||
|
} else {
|
||||||
|
cipherDatabaseDao.update(cipherDatabaseEntity)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cipherDatabaseResultListener?.invoke()
|
||||||
}
|
}
|
||||||
},
|
).execute()
|
||||||
{
|
}
|
||||||
cipherDatabaseResultListener?.invoke()
|
|
||||||
}
|
|
||||||
).execute()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deleteByDatabaseUri(databaseUri: Uri,
|
fun deleteByDatabaseUri(databaseUri: Uri,
|
||||||
cipherDatabaseResultListener: (() -> Unit)? = null) {
|
cipherDatabaseResultListener: (() -> Unit)? = null) {
|
||||||
IOActionTask(
|
if (useTempDao) {
|
||||||
{
|
attachService {
|
||||||
cipherDatabaseDao.deleteByDatabaseUri(databaseUri.toString())
|
mBinder?.deleteByDatabaseUri(databaseUri)
|
||||||
},
|
cipherDatabaseResultListener?.invoke()
|
||||||
{
|
}
|
||||||
cipherDatabaseResultListener?.invoke()
|
} else {
|
||||||
}
|
IOActionTask(
|
||||||
).execute()
|
{
|
||||||
|
cipherDatabaseDao.deleteByDatabaseUri(databaseUri.toString())
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cipherDatabaseResultListener?.invoke()
|
||||||
|
}
|
||||||
|
).execute()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deleteAll() {
|
fun deleteAll() {
|
||||||
|
attachService {
|
||||||
|
mBinder?.deleteAll()
|
||||||
|
}
|
||||||
IOActionTask(
|
IOActionTask(
|
||||||
{
|
{
|
||||||
cipherDatabaseDao.deleteAll()
|
cipherDatabaseDao.deleteAll()
|
||||||
|
|||||||
@@ -43,6 +43,11 @@ data class CipherDatabaseEntity(
|
|||||||
parcel.readString()!!,
|
parcel.readString()!!,
|
||||||
parcel.readString()!!)
|
parcel.readString()!!)
|
||||||
|
|
||||||
|
fun replaceContent(copy: CipherDatabaseEntity) {
|
||||||
|
this.encryptedValue = copy.encryptedValue
|
||||||
|
this.specParameters = copy.specParameters
|
||||||
|
}
|
||||||
|
|
||||||
override fun writeToParcel(parcel: Parcel, flags: Int) {
|
override fun writeToParcel(parcel: Parcel, flags: Int) {
|
||||||
parcel.writeString(databaseUri)
|
parcel.writeString(databaseUri)
|
||||||
parcel.writeString(encryptedValue)
|
parcel.writeString(encryptedValue)
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import androidx.biometric.BiometricPrompt
|
|||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import com.kunzisoft.keepass.R
|
import com.kunzisoft.keepass.R
|
||||||
import com.kunzisoft.keepass.app.database.CipherDatabaseAction
|
import com.kunzisoft.keepass.app.database.CipherDatabaseAction
|
||||||
|
import com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService
|
||||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
import com.kunzisoft.keepass.view.AdvancedUnlockInfoView
|
import com.kunzisoft.keepass.view.AdvancedUnlockInfoView
|
||||||
|
|
||||||
@@ -59,7 +60,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
/**
|
/**
|
||||||
* Manage setting to auto open biometric prompt
|
* Manage setting to auto open biometric prompt
|
||||||
*/
|
*/
|
||||||
private var biometricPromptAutoOpenPreference = PreferencesUtil.isBiometricPromptAutoOpenEnable(context)
|
private var biometricPromptAutoOpenPreference = PreferencesUtil.isAdvancedUnlockPromptAutoOpenEnable(context)
|
||||||
var isBiometricPromptAutoOpenEnable: Boolean = false
|
var isBiometricPromptAutoOpenEnable: Boolean = false
|
||||||
get() {
|
get() {
|
||||||
return field && biometricPromptAutoOpenPreference
|
return field && biometricPromptAutoOpenPreference
|
||||||
@@ -71,6 +72,12 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
|
|
||||||
private var cipherDatabaseAction = CipherDatabaseAction.getInstance(context.applicationContext)
|
private var cipherDatabaseAction = CipherDatabaseAction.getInstance(context.applicationContext)
|
||||||
|
|
||||||
|
private val cipherDatabaseListener = object: CipherDatabaseAction.DatabaseListener {
|
||||||
|
override fun onDatabaseCleared() {
|
||||||
|
deleteEncryptedDatabaseKey()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
// Add a check listener to change fingerprint mode
|
// Add a check listener to change fingerprint mode
|
||||||
checkboxPasswordView?.setOnCheckedChangeListener { compoundButton, checked ->
|
checkboxPasswordView?.setOnCheckedChangeListener { compoundButton, checked ->
|
||||||
@@ -78,6 +85,10 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
// Add old listener to enable the button, only be call here because of onCheckedChange bug
|
// Add old listener to enable the button, only be call here because of onCheckedChange bug
|
||||||
onCheckedPasswordChangeListener?.onCheckedChanged(compoundButton, checked)
|
onCheckedPasswordChangeListener?.onCheckedChanged(compoundButton, checked)
|
||||||
}
|
}
|
||||||
|
cipherDatabaseAction.apply {
|
||||||
|
reloadPreferences()
|
||||||
|
registerDatabaseListener(cipherDatabaseListener)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -85,12 +96,18 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
*/
|
*/
|
||||||
fun checkBiometricAvailability() {
|
fun checkBiometricAvailability() {
|
||||||
|
|
||||||
|
if (PreferencesUtil.isDeviceCredentialUnlockEnable(context)) {
|
||||||
|
advancedUnlockInfoView?.setIconResource(R.drawable.bolt)
|
||||||
|
} else if (PreferencesUtil.isBiometricUnlockEnable(context)) {
|
||||||
|
advancedUnlockInfoView?.setIconResource(R.drawable.fingerprint)
|
||||||
|
}
|
||||||
|
|
||||||
// biometric not supported (by API level or hardware) so keep option hidden
|
// biometric not supported (by API level or hardware) so keep option hidden
|
||||||
// or manually disable
|
// or manually disable
|
||||||
val biometricCanAuthenticate = BiometricUnlockDatabaseHelper.canAuthenticate(context)
|
val biometricCanAuthenticate = BiometricUnlockDatabaseHelper.canAuthenticate(context)
|
||||||
allowOpenBiometricPrompt = true
|
allowOpenBiometricPrompt = true
|
||||||
|
|
||||||
if (!PreferencesUtil.isBiometricUnlockEnable(context)
|
if (!PreferencesUtil.isAdvancedUnlockEnable(context)
|
||||||
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|
||||||
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE) {
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE) {
|
||||||
toggleMode(Mode.BIOMETRIC_UNAVAILABLE)
|
toggleMode(Mode.BIOMETRIC_UNAVAILABLE)
|
||||||
@@ -136,7 +153,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
private fun toggleMode(newBiometricMode: Mode) {
|
private fun toggleMode(newBiometricMode: Mode) {
|
||||||
if (newBiometricMode != biometricMode) {
|
if (newBiometricMode != biometricMode) {
|
||||||
biometricMode = newBiometricMode
|
biometricMode = newBiometricMode
|
||||||
initBiometricMode()
|
initAdvancedUnlockMode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +171,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
override fun onAuthenticationFailed() {
|
override fun onAuthenticationFailed() {
|
||||||
context.runOnUiThread {
|
context.runOnUiThread {
|
||||||
Log.e(TAG, "Biometric authentication failed, biometric not recognized")
|
Log.e(TAG, "Biometric authentication failed, biometric not recognized")
|
||||||
setAdvancedUnlockedMessageView(R.string.biometric_not_recognized)
|
setAdvancedUnlockedMessageView(R.string.advanced_unlock_not_recognized)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,13 +191,14 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
Mode.STORE_CREDENTIAL -> {
|
Mode.STORE_CREDENTIAL -> {
|
||||||
// newly store the entered password in encrypted way
|
// newly store the entered password in encrypted way
|
||||||
biometricUnlockDatabaseHelper?.encryptData(passwordView?.text.toString())
|
biometricUnlockDatabaseHelper?.encryptData(passwordView?.text.toString())
|
||||||
|
AdvancedUnlockNotificationService.startServiceForTimeout(context)
|
||||||
}
|
}
|
||||||
Mode.EXTRACT_CREDENTIAL -> {
|
Mode.EXTRACT_CREDENTIAL -> {
|
||||||
// retrieve the encrypted value from preferences
|
// retrieve the encrypted value from preferences
|
||||||
cipherDatabaseAction.getCipherDatabase(databaseFileUri) {
|
cipherDatabaseAction.getCipherDatabase(databaseFileUri) { cipherDatabase ->
|
||||||
it?.encryptedValue?.let { value ->
|
cipherDatabase?.encryptedValue?.let { value ->
|
||||||
biometricUnlockDatabaseHelper?.decryptData(value)
|
biometricUnlockDatabaseHelper?.decryptData(value)
|
||||||
}
|
} ?: deleteEncryptedDatabaseKey()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -194,13 +212,19 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
advancedUnlockInfoView?.setIconViewClickListener(false, null)
|
advancedUnlockInfoView?.setIconViewClickListener(false, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
private fun openBiometricSetting() {
|
||||||
|
advancedUnlockInfoView?.setIconViewClickListener(false) {
|
||||||
|
// ACTION_SECURITY_SETTINGS does not contain fingerprint enrollment on some devices...
|
||||||
|
context.startActivity(Intent(Settings.ACTION_SETTINGS))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun initSecurityUpdateRequired() {
|
private fun initSecurityUpdateRequired() {
|
||||||
showFingerPrintViews(true)
|
showFingerPrintViews(true)
|
||||||
setAdvancedUnlockedTitleView(R.string.biometric_security_update_required)
|
setAdvancedUnlockedTitleView(R.string.biometric_security_update_required)
|
||||||
|
|
||||||
advancedUnlockInfoView?.setIconViewClickListener(false) {
|
openBiometricSetting()
|
||||||
context.startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initNotConfigured() {
|
private fun initNotConfigured() {
|
||||||
@@ -208,18 +232,14 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
setAdvancedUnlockedTitleView(R.string.configure_biometric)
|
setAdvancedUnlockedTitleView(R.string.configure_biometric)
|
||||||
setAdvancedUnlockedMessageView("")
|
setAdvancedUnlockedMessageView("")
|
||||||
|
|
||||||
advancedUnlockInfoView?.setIconViewClickListener(false) {
|
openBiometricSetting()
|
||||||
context.startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initKeyManagerNotAvailable() {
|
private fun initKeyManagerNotAvailable() {
|
||||||
showFingerPrintViews(true)
|
showFingerPrintViews(true)
|
||||||
setAdvancedUnlockedTitleView(R.string.keystore_not_accessible)
|
setAdvancedUnlockedTitleView(R.string.keystore_not_accessible)
|
||||||
|
|
||||||
advancedUnlockInfoView?.setIconViewClickListener(false) {
|
openBiometricSetting()
|
||||||
context.startActivity(Intent(Settings.ACTION_SECURITY_SETTINGS))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initWaitData() {
|
private fun initWaitData() {
|
||||||
@@ -229,7 +249,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
|
|
||||||
advancedUnlockInfoView?.setIconViewClickListener(false) {
|
advancedUnlockInfoView?.setIconViewClickListener(false) {
|
||||||
biometricAuthenticationCallback.onAuthenticationError(BiometricPrompt.ERROR_UNABLE_TO_PROCESS,
|
biometricAuthenticationCallback.onAuthenticationError(BiometricPrompt.ERROR_UNABLE_TO_PROCESS,
|
||||||
context.getString(R.string.credential_before_click_biometric_button))
|
context.getString(R.string.credential_before_click_advanced_unlock_button))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -245,7 +265,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
setAdvancedUnlockedTitleView(R.string.crypto_object_not_initialized)
|
setAdvancedUnlockedTitleView(R.string.crypto_object_not_initialized)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setAdvancedUnlockedTitleView(R.string.biometric_prompt_not_initialized)
|
setAdvancedUnlockedTitleView(R.string.advanced_unlock_prompt_not_initialized)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -253,7 +273,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
|
|
||||||
private fun initEncryptData() {
|
private fun initEncryptData() {
|
||||||
showFingerPrintViews(true)
|
showFingerPrintViews(true)
|
||||||
setAdvancedUnlockedTitleView(R.string.open_biometric_prompt_store_credential)
|
setAdvancedUnlockedTitleView(R.string.open_advanced_unlock_prompt_store_credential)
|
||||||
setAdvancedUnlockedMessageView("")
|
setAdvancedUnlockedMessageView("")
|
||||||
|
|
||||||
biometricUnlockDatabaseHelper?.initEncryptData { biometricPrompt, cryptoObject, promptInfo ->
|
biometricUnlockDatabaseHelper?.initEncryptData { biometricPrompt, cryptoObject, promptInfo ->
|
||||||
@@ -266,14 +286,13 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
|
|
||||||
private fun initDecryptData() {
|
private fun initDecryptData() {
|
||||||
showFingerPrintViews(true)
|
showFingerPrintViews(true)
|
||||||
setAdvancedUnlockedTitleView(R.string.open_biometric_prompt_unlock_database)
|
setAdvancedUnlockedTitleView(R.string.open_advanced_unlock_prompt_unlock_database)
|
||||||
setAdvancedUnlockedMessageView("")
|
setAdvancedUnlockedMessageView("")
|
||||||
|
|
||||||
if (biometricUnlockDatabaseHelper != null) {
|
if (biometricUnlockDatabaseHelper != null) {
|
||||||
cipherDatabaseAction.getCipherDatabase(databaseFileUri) {
|
cipherDatabaseAction.getCipherDatabase(databaseFileUri) { cipherDatabase ->
|
||||||
|
cipherDatabase?.let {
|
||||||
it?.specParameters?.let { specs ->
|
biometricUnlockDatabaseHelper?.initDecryptData(it.specParameters) { biometricPrompt, cryptoObject, promptInfo ->
|
||||||
biometricUnlockDatabaseHelper?.initDecryptData(specs) { biometricPrompt, cryptoObject, promptInfo ->
|
|
||||||
|
|
||||||
// Set listener to open the biometric dialog and check credential
|
// Set listener to open the biometric dialog and check credential
|
||||||
advancedUnlockInfoView?.setIconViewClickListener { _ ->
|
advancedUnlockInfoView?.setIconViewClickListener { _ ->
|
||||||
@@ -286,13 +305,13 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
openBiometricPrompt(biometricPrompt, cryptoObject, promptInfo)
|
openBiometricPrompt(biometricPrompt, cryptoObject, promptInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} ?: deleteEncryptedDatabaseKey()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
fun initBiometricMode() {
|
fun initAdvancedUnlockMode() {
|
||||||
mAllowAdvancedUnlockMenu = false
|
mAllowAdvancedUnlockMenu = false
|
||||||
when (biometricMode) {
|
when (biometricMode) {
|
||||||
Mode.BIOMETRIC_UNAVAILABLE -> initNotAvailable()
|
Mode.BIOMETRIC_UNAVAILABLE -> initNotAvailable()
|
||||||
@@ -327,6 +346,7 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
biometricUnlockDatabaseHelper?.closeBiometricPrompt()
|
biometricUnlockDatabaseHelper?.closeBiometricPrompt()
|
||||||
// Restore the checked listener
|
// Restore the checked listener
|
||||||
checkboxPasswordView?.setOnCheckedChangeListener(onCheckedPasswordChangeListener)
|
checkboxPasswordView?.setOnCheckedChangeListener(onCheckedPasswordChangeListener)
|
||||||
|
cipherDatabaseAction.unregisterDatabaseListener(cipherDatabaseListener)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun inflateOptionsMenu(menuInflater: MenuInflater, menu: Menu) {
|
fun inflateOptionsMenu(menuInflater: MenuInflater, menu: Menu) {
|
||||||
@@ -334,11 +354,10 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
menuInflater.inflate(R.menu.advanced_unlock, menu)
|
menuInflater.inflate(R.menu.advanced_unlock, menu)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deleteEntryKey() {
|
fun deleteEncryptedDatabaseKey() {
|
||||||
allowOpenBiometricPrompt = false
|
allowOpenBiometricPrompt = false
|
||||||
advancedUnlockInfoView?.setIconViewClickListener(false, null)
|
advancedUnlockInfoView?.setIconViewClickListener(false, null)
|
||||||
biometricUnlockDatabaseHelper?.closeBiometricPrompt()
|
biometricUnlockDatabaseHelper?.closeBiometricPrompt()
|
||||||
biometricUnlockDatabaseHelper?.deleteEntryKey()
|
|
||||||
cipherDatabaseAction.deleteByDatabaseUri(databaseFileUri) {
|
cipherDatabaseAction.deleteByDatabaseUri(databaseFileUri) {
|
||||||
checkBiometricAvailability()
|
checkBiometricAvailability()
|
||||||
}
|
}
|
||||||
@@ -354,13 +373,12 @@ class AdvancedUnlockedManager(var context: FragmentActivity,
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onInvalidKeyException(e: Exception) {
|
override fun onInvalidKeyException(e: Exception) {
|
||||||
setAdvancedUnlockedMessageView(R.string.biometric_invalid_key)
|
setAdvancedUnlockedMessageView(R.string.advanced_unlock_invalid_key)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBiometricException(e: Exception) {
|
override fun onBiometricException(e: Exception) {
|
||||||
e.localizedMessage?.let {
|
val errorMessage = e.cause?.localizedMessage ?: e.localizedMessage ?: ""
|
||||||
setAdvancedUnlockedMessageView(it)
|
setAdvancedUnlockedMessageView(errorMessage)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showFingerPrintViews(show: Boolean) {
|
private fun showFingerPrintViews(show: Boolean) {
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ import android.util.Base64
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.biometric.BiometricManager
|
import androidx.biometric.BiometricManager
|
||||||
import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG
|
import androidx.biometric.BiometricManager.Authenticators.*
|
||||||
import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_WEAK
|
|
||||||
import androidx.biometric.BiometricPrompt
|
import androidx.biometric.BiometricPrompt
|
||||||
import androidx.fragment.app.FragmentActivity
|
import androidx.fragment.app.FragmentActivity
|
||||||
import com.kunzisoft.keepass.R
|
import com.kunzisoft.keepass.R
|
||||||
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
import java.security.KeyStore
|
import java.security.KeyStore
|
||||||
import java.security.UnrecoverableKeyException
|
import java.security.UnrecoverableKeyException
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
@@ -58,31 +58,7 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
|
|||||||
var authenticationCallback: BiometricPrompt.AuthenticationCallback? = null
|
var authenticationCallback: BiometricPrompt.AuthenticationCallback? = null
|
||||||
var biometricUnlockCallback: BiometricUnlockCallback? = null
|
var biometricUnlockCallback: BiometricUnlockCallback? = null
|
||||||
|
|
||||||
private val promptInfoStoreCredential = BiometricPrompt.PromptInfo.Builder().apply {
|
private val deviceCredentialUnlockEnable = PreferencesUtil.isDeviceCredentialUnlockEnable(context)
|
||||||
setTitle(context.getString(R.string.biometric_prompt_store_credential_title))
|
|
||||||
setDescription(context.getString(R.string.biometric_prompt_store_credential_message))
|
|
||||||
setConfirmationRequired(true)
|
|
||||||
// TODO device credential #102 #152
|
|
||||||
/*
|
|
||||||
if (keyguardManager?.isDeviceSecure == true)
|
|
||||||
setDeviceCredentialAllowed(true)
|
|
||||||
else
|
|
||||||
*/
|
|
||||||
setNegativeButtonText(context.getString(android.R.string.cancel))
|
|
||||||
}.build()
|
|
||||||
|
|
||||||
private val promptInfoExtractCredential = BiometricPrompt.PromptInfo.Builder().apply {
|
|
||||||
setTitle(context.getString(R.string.biometric_prompt_extract_credential_title))
|
|
||||||
//setDescription(context.getString(R.string.biometric_prompt_extract_credential_message))
|
|
||||||
setConfirmationRequired(false)
|
|
||||||
// TODO device credential #102 #152
|
|
||||||
/*
|
|
||||||
if (keyguardManager?.isDeviceSecure == true)
|
|
||||||
setDeviceCredentialAllowed(true)
|
|
||||||
else
|
|
||||||
*/
|
|
||||||
setNegativeButtonText(context.getString(android.R.string.cancel))
|
|
||||||
}.build()
|
|
||||||
|
|
||||||
val isKeyManagerInitialized: Boolean
|
val isKeyManagerInitialized: Boolean
|
||||||
get() {
|
get() {
|
||||||
@@ -139,6 +115,12 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
|
|||||||
// Require the user to authenticate with a fingerprint to authorize every use
|
// Require the user to authenticate with a fingerprint to authorize every use
|
||||||
// of the key
|
// of the key
|
||||||
.setUserAuthenticationRequired(true)
|
.setUserAuthenticationRequired(true)
|
||||||
|
.apply {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
|
||||||
|
&& deviceCredentialUnlockEnable) {
|
||||||
|
setUserAuthenticationParameters(0, KeyProperties.AUTH_DEVICE_CREDENTIAL)
|
||||||
|
}
|
||||||
|
}
|
||||||
.build())
|
.build())
|
||||||
keyGenerator?.generateKey()
|
keyGenerator?.generateKey()
|
||||||
}
|
}
|
||||||
@@ -164,13 +146,27 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
// TODO if (keyguardManager?.isDeviceSecure == true) {
|
||||||
getSecretKey()?.let { secretKey ->
|
getSecretKey()?.let { secretKey ->
|
||||||
cipher?.init(Cipher.ENCRYPT_MODE, secretKey)
|
cipher?.init(Cipher.ENCRYPT_MODE, secretKey)
|
||||||
|
|
||||||
initBiometricPrompt()
|
initBiometricPrompt()
|
||||||
actionIfCypherInit.invoke(biometricPrompt, cryptoObject, promptInfoStoreCredential)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
val promptInfoStoreCredential = BiometricPrompt.PromptInfo.Builder().apply {
|
||||||
|
setTitle(context.getString(R.string.advanced_unlock_prompt_store_credential_title))
|
||||||
|
setDescription(context.getString(R.string.advanced_unlock_prompt_store_credential_message))
|
||||||
|
setConfirmationRequired(true)
|
||||||
|
if (deviceCredentialUnlockEnable) {
|
||||||
|
setAllowedAuthenticators(DEVICE_CREDENTIAL)
|
||||||
|
} else {
|
||||||
|
setNegativeButtonText(context.getString(android.R.string.cancel))
|
||||||
|
}
|
||||||
|
}.build()
|
||||||
|
|
||||||
|
actionIfCypherInit.invoke(biometricPrompt,
|
||||||
|
cryptoObject,
|
||||||
|
promptInfoStoreCredential)
|
||||||
|
}
|
||||||
} catch (unrecoverableKeyException: UnrecoverableKeyException) {
|
} catch (unrecoverableKeyException: UnrecoverableKeyException) {
|
||||||
Log.e(TAG, "Unable to initialize encrypt data", unrecoverableKeyException)
|
Log.e(TAG, "Unable to initialize encrypt data", unrecoverableKeyException)
|
||||||
biometricUnlockCallback?.onInvalidKeyException(unrecoverableKeyException)
|
biometricUnlockCallback?.onInvalidKeyException(unrecoverableKeyException)
|
||||||
@@ -196,10 +192,10 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
|
|||||||
val ivSpecValue = Base64.encodeToString(spec.iv, Base64.NO_WRAP)
|
val ivSpecValue = Base64.encodeToString(spec.iv, Base64.NO_WRAP)
|
||||||
biometricUnlockCallback?.handleEncryptedResult(encryptedBase64, ivSpecValue)
|
biometricUnlockCallback?.handleEncryptedResult(encryptedBase64, ivSpecValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
val exception = Exception(context.getString(R.string.keystore_not_accessible), e)
|
||||||
Log.e(TAG, "Unable to encrypt data", e)
|
Log.e(TAG, "Unable to encrypt data", e)
|
||||||
biometricUnlockCallback?.onBiometricException(e)
|
biometricUnlockCallback?.onBiometricException(exception)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,6 +207,7 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
// TODO if (keyguardManager?.isDeviceSecure == true) {
|
||||||
// important to restore spec here that was used for decryption
|
// important to restore spec here that was used for decryption
|
||||||
val iv = Base64.decode(ivSpecValue, Base64.NO_WRAP)
|
val iv = Base64.decode(ivSpecValue, Base64.NO_WRAP)
|
||||||
val spec = IvParameterSpec(iv)
|
val spec = IvParameterSpec(iv)
|
||||||
@@ -219,12 +216,25 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
|
|||||||
cipher?.init(Cipher.DECRYPT_MODE, secretKey, spec)
|
cipher?.init(Cipher.DECRYPT_MODE, secretKey, spec)
|
||||||
|
|
||||||
initBiometricPrompt()
|
initBiometricPrompt()
|
||||||
actionIfCypherInit.invoke(biometricPrompt, cryptoObject, promptInfoExtractCredential)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
val promptInfoExtractCredential = BiometricPrompt.PromptInfo.Builder().apply {
|
||||||
|
setTitle(context.getString(R.string.advanced_unlock_prompt_extract_credential_title))
|
||||||
|
//setDescription(context.getString(R.string.biometric_prompt_extract_credential_message))
|
||||||
|
setConfirmationRequired(false)
|
||||||
|
if (deviceCredentialUnlockEnable) {
|
||||||
|
setAllowedAuthenticators(DEVICE_CREDENTIAL)
|
||||||
|
} else {
|
||||||
|
setNegativeButtonText(context.getString(android.R.string.cancel))
|
||||||
|
}
|
||||||
|
}.build()
|
||||||
|
|
||||||
|
actionIfCypherInit.invoke(biometricPrompt,
|
||||||
|
cryptoObject,
|
||||||
|
promptInfoExtractCredential)
|
||||||
|
}
|
||||||
} catch (unrecoverableKeyException: UnrecoverableKeyException) {
|
} catch (unrecoverableKeyException: UnrecoverableKeyException) {
|
||||||
Log.e(TAG, "Unable to initialize decrypt data", unrecoverableKeyException)
|
Log.e(TAG, "Unable to initialize decrypt data", unrecoverableKeyException)
|
||||||
deleteEntryKey()
|
deleteKeystoreKey()
|
||||||
} catch (invalidKeyException: KeyPermanentlyInvalidatedException) {
|
} catch (invalidKeyException: KeyPermanentlyInvalidatedException) {
|
||||||
Log.e(TAG, "Unable to initialize decrypt data", invalidKeyException)
|
Log.e(TAG, "Unable to initialize decrypt data", invalidKeyException)
|
||||||
biometricUnlockCallback?.onInvalidKeyException(invalidKeyException)
|
biometricUnlockCallback?.onInvalidKeyException(invalidKeyException)
|
||||||
@@ -248,12 +258,13 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
|
|||||||
Log.e(TAG, "Unable to decrypt data", badPaddingException)
|
Log.e(TAG, "Unable to decrypt data", badPaddingException)
|
||||||
biometricUnlockCallback?.onInvalidKeyException(badPaddingException)
|
biometricUnlockCallback?.onInvalidKeyException(badPaddingException)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e(TAG, "Unable to decrypt data", e)
|
val exception = Exception(context.getString(R.string.keystore_not_accessible), e)
|
||||||
biometricUnlockCallback?.onBiometricException(e)
|
Log.e(TAG, "Unable to decrypt data", exception)
|
||||||
|
biometricUnlockCallback?.onBiometricException(exception)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deleteEntryKey() {
|
fun deleteKeystoreKey() {
|
||||||
try {
|
try {
|
||||||
keyStore?.load(null)
|
keyStore?.load(null)
|
||||||
keyStore?.deleteEntry(BIOMETRIC_KEYSTORE_KEY)
|
keyStore?.deleteEntry(BIOMETRIC_KEYSTORE_KEY)
|
||||||
@@ -296,8 +307,46 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
|
|||||||
private const val BIOMETRIC_BLOCKS_MODES = KeyProperties.BLOCK_MODE_CBC
|
private const val BIOMETRIC_BLOCKS_MODES = KeyProperties.BLOCK_MODE_CBC
|
||||||
private const val BIOMETRIC_ENCRYPTION_PADDING = KeyProperties.ENCRYPTION_PADDING_PKCS7
|
private const val BIOMETRIC_ENCRYPTION_PADDING = KeyProperties.ENCRYPTION_PADDING_PKCS7
|
||||||
|
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||||
fun canAuthenticate(context: Context): Int {
|
fun canAuthenticate(context: Context): Int {
|
||||||
return try {
|
return try {
|
||||||
|
BiometricManager.from(context).canAuthenticate(
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
|
||||||
|
&& PreferencesUtil.isDeviceCredentialUnlockEnable(context)) {
|
||||||
|
BIOMETRIC_STRONG or DEVICE_CREDENTIAL
|
||||||
|
} else {
|
||||||
|
BIOMETRIC_STRONG
|
||||||
|
}
|
||||||
|
)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e(TAG, "Unable to authenticate with strong biometric.", e)
|
||||||
|
try {
|
||||||
|
BiometricManager.from(context).canAuthenticate(
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
|
||||||
|
&& PreferencesUtil.isDeviceCredentialUnlockEnable(context)) {
|
||||||
|
BIOMETRIC_WEAK or DEVICE_CREDENTIAL
|
||||||
|
} else {
|
||||||
|
BIOMETRIC_WEAK
|
||||||
|
}
|
||||||
|
)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e(TAG, "Unable to authenticate with weak biometric.", e)
|
||||||
|
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||||
|
fun allowInitKeyStore(context: Context): Boolean {
|
||||||
|
val biometricCanAuthenticate = canAuthenticate(context)
|
||||||
|
return ( biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS
|
||||||
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||||
|
fun biometricUnlockSupported(context: Context): Boolean {
|
||||||
|
val biometricCanAuthenticate = try {
|
||||||
BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG)
|
BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e(TAG, "Unable to authenticate with strong biometric.", e)
|
Log.e(TAG, "Unable to authenticate with strong biometric.", e)
|
||||||
@@ -308,28 +357,29 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
|
|||||||
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE
|
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
return (biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS
|
||||||
|
|
||||||
fun allowInitKeyStore(context: Context): Boolean {
|
|
||||||
val biometricCanAuthenticate = canAuthenticate(context)
|
|
||||||
return ( biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS
|
|
||||||
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun unlockSupported(context: Context): Boolean {
|
|
||||||
val biometricCanAuthenticate = canAuthenticate(context)
|
|
||||||
return ( biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS
|
|
||||||
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN
|
||||||
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|
||||||
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED
|
||||||
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.R)
|
||||||
|
fun deviceCredentialUnlockSupported(context: Context): Boolean {
|
||||||
|
val biometricCanAuthenticate = BiometricManager.from(context).canAuthenticate(DEVICE_CREDENTIAL)
|
||||||
|
return (biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS
|
||||||
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN
|
||||||
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE
|
||||||
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED
|
||||||
|
|| biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove entry key in keystore
|
* Remove entry key in keystore
|
||||||
*/
|
*/
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||||
fun deleteEntryKeyInKeystoreForBiometric(context: FragmentActivity,
|
fun deleteEntryKeyInKeystoreForBiometric(context: FragmentActivity,
|
||||||
biometricCallback: BiometricUnlockErrorCallback) {
|
biometricCallback: BiometricUnlockErrorCallback) {
|
||||||
BiometricUnlockDatabaseHelper(context).apply {
|
BiometricUnlockDatabaseHelper(context).apply {
|
||||||
@@ -347,7 +397,7 @@ class BiometricUnlockDatabaseHelper(private val context: FragmentActivity) {
|
|||||||
biometricCallback.onBiometricException(e)
|
biometricCallback.onBiometricException(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
deleteEntryKey()
|
deleteKeystoreKey()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class AesKdf : KdfEngine() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val defaultKeyRounds: Long = 6000L
|
override val defaultKeyRounds: Long = 500000L
|
||||||
|
|
||||||
override fun getName(resources: Resources): String {
|
override fun getName(resources: Resources): String {
|
||||||
return resources.getString(R.string.kdf_AES)
|
return resources.getString(R.string.kdf_AES)
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
package com.kunzisoft.keepass.crypto.keyDerivation
|
package com.kunzisoft.keepass.crypto.keyDerivation
|
||||||
|
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
|
import androidx.annotation.StringRes
|
||||||
import com.kunzisoft.keepass.R
|
import com.kunzisoft.keepass.R
|
||||||
import com.kunzisoft.keepass.stream.bytes16ToUuid
|
import com.kunzisoft.keepass.stream.bytes16ToUuid
|
||||||
import com.kunzisoft.keepass.utils.UnsignedInt
|
import com.kunzisoft.keepass.utils.UnsignedInt
|
||||||
@@ -27,7 +28,11 @@ import java.io.IOException
|
|||||||
import java.security.SecureRandom
|
import java.security.SecureRandom
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class Argon2Kdf internal constructor() : KdfEngine() {
|
class Argon2Kdf(private val type: Type) : KdfEngine() {
|
||||||
|
|
||||||
|
init {
|
||||||
|
uuid = type.CIPHER_UUID
|
||||||
|
}
|
||||||
|
|
||||||
override val defaultParameters: KdfParameters
|
override val defaultParameters: KdfParameters
|
||||||
get() {
|
get() {
|
||||||
@@ -45,12 +50,8 @@ class Argon2Kdf internal constructor() : KdfEngine() {
|
|||||||
override val defaultKeyRounds: Long
|
override val defaultKeyRounds: Long
|
||||||
get() = DEFAULT_ITERATIONS
|
get() = DEFAULT_ITERATIONS
|
||||||
|
|
||||||
init {
|
|
||||||
uuid = CIPHER_UUID
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getName(resources: Resources): String {
|
override fun getName(resources: Resources): String {
|
||||||
return resources.getString(R.string.kdf_Argon2)
|
return resources.getString(type.nameId)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
@@ -72,7 +73,9 @@ class Argon2Kdf internal constructor() : KdfEngine() {
|
|||||||
val secretKey = kdfParameters.getByteArray(PARAM_SECRET_KEY)
|
val secretKey = kdfParameters.getByteArray(PARAM_SECRET_KEY)
|
||||||
val assocData = kdfParameters.getByteArray(PARAM_ASSOC_DATA)
|
val assocData = kdfParameters.getByteArray(PARAM_ASSOC_DATA)
|
||||||
|
|
||||||
return Argon2Native.transformKey(masterKey,
|
return Argon2Native.transformKey(
|
||||||
|
type,
|
||||||
|
masterKey,
|
||||||
salt,
|
salt,
|
||||||
parallelism,
|
parallelism,
|
||||||
memory,
|
memory,
|
||||||
@@ -141,9 +144,8 @@ class Argon2Kdf internal constructor() : KdfEngine() {
|
|||||||
override val maxParallelism: Long
|
override val maxParallelism: Long
|
||||||
get() = MAX_PARALLELISM
|
get() = MAX_PARALLELISM
|
||||||
|
|
||||||
companion object {
|
enum class Type(val CIPHER_UUID: UUID, @StringRes val nameId: Int) {
|
||||||
|
ARGON2_D(bytes16ToUuid(
|
||||||
val CIPHER_UUID: UUID = bytes16ToUuid(
|
|
||||||
byteArrayOf(0xEF.toByte(),
|
byteArrayOf(0xEF.toByte(),
|
||||||
0x63.toByte(),
|
0x63.toByte(),
|
||||||
0x6D.toByte(),
|
0x6D.toByte(),
|
||||||
@@ -159,7 +161,27 @@ class Argon2Kdf internal constructor() : KdfEngine() {
|
|||||||
0x03.toByte(),
|
0x03.toByte(),
|
||||||
0xE3.toByte(),
|
0xE3.toByte(),
|
||||||
0x0A.toByte(),
|
0x0A.toByte(),
|
||||||
0x0C.toByte()))
|
0x0C.toByte())), R.string.kdf_Argon2d),
|
||||||
|
ARGON2_ID(bytes16ToUuid(
|
||||||
|
byteArrayOf(0x9E.toByte(),
|
||||||
|
0x29.toByte(),
|
||||||
|
0x8B.toByte(),
|
||||||
|
0x19.toByte(),
|
||||||
|
0x56.toByte(),
|
||||||
|
0xDB.toByte(),
|
||||||
|
0x47.toByte(),
|
||||||
|
0x73.toByte(),
|
||||||
|
0xB2.toByte(),
|
||||||
|
0x3D.toByte(),
|
||||||
|
0xFC.toByte(),
|
||||||
|
0x3E.toByte(),
|
||||||
|
0xC6.toByte(),
|
||||||
|
0xF0.toByte(),
|
||||||
|
0xA1.toByte(),
|
||||||
|
0xE6.toByte())), R.string.kdf_Argon2id);
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
private const val PARAM_SALT = "S" // byte[]
|
private const val PARAM_SALT = "S" // byte[]
|
||||||
private const val PARAM_PARALLELISM = "P" // UInt32
|
private const val PARAM_PARALLELISM = "P" // UInt32
|
||||||
|
|||||||
@@ -26,12 +26,29 @@ import java.io.IOException;
|
|||||||
|
|
||||||
public class Argon2Native {
|
public class Argon2Native {
|
||||||
|
|
||||||
public static byte[] transformKey(byte[] password, byte[] salt, UnsignedInt parallelism,
|
enum CType {
|
||||||
|
ARGON2_D(0),
|
||||||
|
ARGON2_I(1),
|
||||||
|
ARGON2_ID(2);
|
||||||
|
|
||||||
|
int cValue = 0;
|
||||||
|
|
||||||
|
CType(int i) {
|
||||||
|
cValue = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] transformKey(Argon2Kdf.Type type, byte[] password, byte[] salt, UnsignedInt parallelism,
|
||||||
UnsignedInt memory, UnsignedInt iterations, byte[] secretKey,
|
UnsignedInt memory, UnsignedInt iterations, byte[] secretKey,
|
||||||
byte[] associatedData, UnsignedInt version) throws IOException {
|
byte[] associatedData, UnsignedInt version) throws IOException {
|
||||||
NativeLib.INSTANCE.init();
|
NativeLib.INSTANCE.init();
|
||||||
|
|
||||||
|
CType cType = CType.ARGON2_D;
|
||||||
|
if (type.equals(Argon2Kdf.Type.ARGON2_ID))
|
||||||
|
cType = CType.ARGON2_ID;
|
||||||
|
|
||||||
return nTransformMasterKey(
|
return nTransformMasterKey(
|
||||||
|
cType.cValue,
|
||||||
password,
|
password,
|
||||||
salt,
|
salt,
|
||||||
parallelism.toKotlinInt(),
|
parallelism.toKotlinInt(),
|
||||||
@@ -42,7 +59,7 @@ public class Argon2Native {
|
|||||||
version.toKotlinInt());
|
version.toKotlinInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static native byte[] nTransformMasterKey(byte[] password, byte[] salt, int parallelism,
|
private static native byte[] nTransformMasterKey(int type, byte[] password, byte[] salt, int parallelism,
|
||||||
int memory, int iterations, byte[] secretKey,
|
int memory, int iterations, byte[] secretKey,
|
||||||
byte[] associatedData, int version) throws IOException;
|
byte[] associatedData, int version) throws IOException;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,5 +21,6 @@ package com.kunzisoft.keepass.crypto.keyDerivation
|
|||||||
|
|
||||||
object KdfFactory {
|
object KdfFactory {
|
||||||
var aesKdf = AesKdf()
|
var aesKdf = AesKdf()
|
||||||
var argon2Kdf = Argon2Kdf()
|
var argon2dKdf = Argon2Kdf(Argon2Kdf.Type.ARGON2_D)
|
||||||
|
var argon2idKdf = Argon2Kdf(Argon2Kdf.Type.ARGON2_ID)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -431,6 +431,7 @@ class Database {
|
|||||||
searchInPasswords = false
|
searchInPasswords = false
|
||||||
searchInUrls = true
|
searchInUrls = true
|
||||||
searchInNotes = true
|
searchInNotes = true
|
||||||
|
searchInOTP = false
|
||||||
searchInOther = true
|
searchInOther = true
|
||||||
searchInUUIDs = false
|
searchInUUIDs = false
|
||||||
searchInTags = false
|
searchInTags = false
|
||||||
|
|||||||
@@ -411,8 +411,8 @@ class Entry : Node, EntryVersionedInterface<Group> {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve generated entry info,
|
* Retrieve generated entry info.
|
||||||
* Remove parameter fields and add auto generated elements in auto custom fields
|
* If are not [raw] data, remove parameter fields and add auto generated elements in auto custom fields
|
||||||
*/
|
*/
|
||||||
fun getEntryInfo(database: Database?, raw: Boolean = false): EntryInfo {
|
fun getEntryInfo(database: Database?, raw: Boolean = false): EntryInfo {
|
||||||
val entryInfo = EntryInfo()
|
val entryInfo = EntryInfo()
|
||||||
@@ -500,5 +500,12 @@ class Entry : Node, EntryVersionedInterface<Group> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const val PMS_TAN_ENTRY = "<TAN>"
|
const val PMS_TAN_ENTRY = "<TAN>"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* True if [field] name is not a standard field name
|
||||||
|
*/
|
||||||
|
fun newExtraFieldNameAllowed(field: Field): Boolean {
|
||||||
|
return EntryKDBX.newCustomNameAllowed(field.name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,7 +113,8 @@ class DatabaseKDBX : DatabaseVersioned<UUID, UUID, GroupKDBX, EntryKDBX> {
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
kdfList.add(KdfFactory.aesKdf)
|
kdfList.add(KdfFactory.aesKdf)
|
||||||
kdfList.add(KdfFactory.argon2Kdf)
|
kdfList.add(KdfFactory.argon2dKdf)
|
||||||
|
kdfList.add(KdfFactory.argon2idKdf)
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor()
|
constructor()
|
||||||
|
|||||||
@@ -369,6 +369,14 @@ class EntryKDBX : EntryVersioned<UUID, UUID, GroupKDBX, EntryKDBX>, NodeKDBXInte
|
|||||||
const val STR_URL = "URL"
|
const val STR_URL = "URL"
|
||||||
const val STR_NOTES = "Notes"
|
const val STR_NOTES = "Notes"
|
||||||
|
|
||||||
|
fun newCustomNameAllowed(name: String): Boolean {
|
||||||
|
return !(name.equals(STR_TITLE, true)
|
||||||
|
|| name.equals(STR_USERNAME, true)
|
||||||
|
|| name.equals(STR_PASSWORD, true)
|
||||||
|
|| name.equals(STR_URL, true)
|
||||||
|
|| name.equals(STR_NOTES, true))
|
||||||
|
}
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
val CREATOR: Parcelable.Creator<EntryKDBX> = object : Parcelable.Creator<EntryKDBX> {
|
val CREATOR: Parcelable.Creator<EntryKDBX> = object : Parcelable.Creator<EntryKDBX> {
|
||||||
override fun createFromParcel(parcel: Parcel): EntryKDBX {
|
override fun createFromParcel(parcel: Parcel): EntryKDBX {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ import com.kunzisoft.keepass.timeout.TimeoutHelper
|
|||||||
class SearchHelper {
|
class SearchHelper {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val MAX_SEARCH_ENTRY = 6
|
const val MAX_SEARCH_ENTRY = 10
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility method to perform actions if item is found or not after an auto search in [database]
|
* Utility method to perform actions if item is found or not after an auto search in [database]
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ class SearchParameters {
|
|||||||
var searchInUrls = true
|
var searchInUrls = true
|
||||||
var searchInGroupNames = false
|
var searchInGroupNames = false
|
||||||
var searchInNotes = true
|
var searchInNotes = true
|
||||||
|
var searchInOTP = false
|
||||||
var searchInOther = true
|
var searchInOther = true
|
||||||
var searchInUUIDs = false
|
var searchInUUIDs = false
|
||||||
var searchInTags = true
|
var searchInTags = true
|
||||||
@@ -54,6 +55,7 @@ class SearchParameters {
|
|||||||
this.searchInUrls = source.searchInUrls
|
this.searchInUrls = source.searchInUrls
|
||||||
this.searchInGroupNames = source.searchInGroupNames
|
this.searchInGroupNames = source.searchInGroupNames
|
||||||
this.searchInNotes = source.searchInNotes
|
this.searchInNotes = source.searchInNotes
|
||||||
|
this.searchInOTP = source.searchInOTP
|
||||||
this.searchInOther = source.searchInOther
|
this.searchInOther = source.searchInOther
|
||||||
this.searchInUUIDs = source.searchInUUIDs
|
this.searchInUUIDs = source.searchInUUIDs
|
||||||
this.searchInTags = source.searchInTags
|
this.searchInTags = source.searchInTags
|
||||||
@@ -69,6 +71,7 @@ class SearchParameters {
|
|||||||
searchInUrls = false
|
searchInUrls = false
|
||||||
searchInGroupNames = false
|
searchInGroupNames = false
|
||||||
searchInNotes = false
|
searchInNotes = false
|
||||||
|
searchInOTP = false
|
||||||
searchInOther = false
|
searchInOther = false
|
||||||
searchInUUIDs = false
|
searchInUUIDs = false
|
||||||
searchInTags = false
|
searchInTags = false
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ package com.kunzisoft.keepass.database.search.iterator
|
|||||||
import com.kunzisoft.keepass.database.element.entry.EntryKDBX
|
import com.kunzisoft.keepass.database.element.entry.EntryKDBX
|
||||||
import com.kunzisoft.keepass.database.element.security.ProtectedString
|
import com.kunzisoft.keepass.database.element.security.ProtectedString
|
||||||
import com.kunzisoft.keepass.database.search.SearchParameters
|
import com.kunzisoft.keepass.database.search.SearchParameters
|
||||||
|
import com.kunzisoft.keepass.otp.OtpEntryFields
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.collections.Map.Entry
|
import kotlin.collections.Map.Entry
|
||||||
|
|
||||||
@@ -75,6 +76,7 @@ class EntrySearchStringIteratorKDBX(
|
|||||||
EntryKDBX.STR_PASSWORD -> mSearchParameters.searchInPasswords
|
EntryKDBX.STR_PASSWORD -> mSearchParameters.searchInPasswords
|
||||||
EntryKDBX.STR_URL -> mSearchParameters.searchInUrls
|
EntryKDBX.STR_URL -> mSearchParameters.searchInUrls
|
||||||
EntryKDBX.STR_NOTES -> mSearchParameters.searchInNotes
|
EntryKDBX.STR_NOTES -> mSearchParameters.searchInNotes
|
||||||
|
OtpEntryFields.OTP_FIELD -> mSearchParameters.searchInOTP
|
||||||
else -> mSearchParameters.searchInOther
|
else -> mSearchParameters.searchInOther
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,8 +86,8 @@ class PasswordActivityEducation(activity: Activity)
|
|||||||
onOuterViewClick: ((TapTargetView?) -> Unit)? = null): Boolean {
|
onOuterViewClick: ((TapTargetView?) -> Unit)? = null): Boolean {
|
||||||
return checkAndPerformedEducation(!isEducationBiometricPerformed(activity),
|
return checkAndPerformedEducation(!isEducationBiometricPerformed(activity),
|
||||||
TapTarget.forView(educationView,
|
TapTarget.forView(educationView,
|
||||||
activity.getString(R.string.education_biometric_title),
|
activity.getString(R.string.education_advanced_unlock_title),
|
||||||
activity.getString(R.string.education_biometric_summary))
|
activity.getString(R.string.education_advanced_unlock_summary))
|
||||||
.textColorInt(Color.WHITE)
|
.textColorInt(Color.WHITE)
|
||||||
.tintTarget(false)
|
.tintTarget(false)
|
||||||
.cancelable(true),
|
.cancelable(true),
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ import com.kunzisoft.keepass.database.element.Database
|
|||||||
import com.kunzisoft.keepass.model.EntryInfo
|
import com.kunzisoft.keepass.model.EntryInfo
|
||||||
import com.kunzisoft.keepass.model.Field
|
import com.kunzisoft.keepass.model.Field
|
||||||
import com.kunzisoft.keepass.notifications.KeyboardEntryNotificationService
|
import com.kunzisoft.keepass.notifications.KeyboardEntryNotificationService
|
||||||
|
import com.kunzisoft.keepass.otp.OtpEntryFields.OTP_TOKEN_FIELD
|
||||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
import com.kunzisoft.keepass.utils.*
|
import com.kunzisoft.keepass.utils.*
|
||||||
|
|
||||||
@@ -245,6 +246,13 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
|
|||||||
}
|
}
|
||||||
actionGoAutomatically()
|
actionGoAutomatically()
|
||||||
}
|
}
|
||||||
|
KEY_OTP -> {
|
||||||
|
if (entryInfoKey != null) {
|
||||||
|
currentInputConnection.commitText(
|
||||||
|
entryInfoKey!!.getGeneratedFieldValue(OTP_TOKEN_FIELD), 1)
|
||||||
|
}
|
||||||
|
actionGoAutomatically()
|
||||||
|
}
|
||||||
KEY_URL -> {
|
KEY_URL -> {
|
||||||
if (entryInfoKey != null) {
|
if (entryInfoKey != null) {
|
||||||
currentInputConnection.commitText(entryInfoKey!!.url, 1)
|
currentInputConnection.commitText(entryInfoKey!!.url, 1)
|
||||||
@@ -254,7 +262,7 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
|
|||||||
KEY_FIELDS -> {
|
KEY_FIELDS -> {
|
||||||
if (entryInfoKey != null) {
|
if (entryInfoKey != null) {
|
||||||
fieldsAdapter?.apply {
|
fieldsAdapter?.apply {
|
||||||
setFields(entryInfoKey!!.customFields)
|
setFields(entryInfoKey!!.customFields.filter { it.name != OTP_TOKEN_FIELD})
|
||||||
notifyDataSetChanged()
|
notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -326,6 +334,7 @@ class MagikIME : InputMethodService(), KeyboardView.OnKeyboardActionListener {
|
|||||||
private const val KEY_ENTRY = 620
|
private const val KEY_ENTRY = 620
|
||||||
private const val KEY_USERNAME = 500
|
private const val KEY_USERNAME = 500
|
||||||
private const val KEY_PASSWORD = 510
|
private const val KEY_PASSWORD = 510
|
||||||
|
private const val KEY_OTP = 515
|
||||||
private const val KEY_URL = 520
|
private const val KEY_URL = 520
|
||||||
private const val KEY_FIELDS = 530
|
private const val KEY_FIELDS = 530
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import com.kunzisoft.keepass.database.element.icon.IconImage
|
|||||||
import com.kunzisoft.keepass.database.element.icon.IconImageStandard
|
import com.kunzisoft.keepass.database.element.icon.IconImageStandard
|
||||||
import com.kunzisoft.keepass.database.element.security.ProtectedString
|
import com.kunzisoft.keepass.database.element.security.ProtectedString
|
||||||
import com.kunzisoft.keepass.otp.OtpElement
|
import com.kunzisoft.keepass.otp.OtpElement
|
||||||
|
import com.kunzisoft.keepass.otp.OtpEntryFields
|
||||||
import com.kunzisoft.keepass.otp.OtpEntryFields.OTP_TOKEN_FIELD
|
import com.kunzisoft.keepass.otp.OtpEntryFields.OTP_TOKEN_FIELD
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
@@ -95,8 +96,8 @@ class EntryInfo : Parcelable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getGeneratedFieldValue(label: String): String {
|
fun getGeneratedFieldValue(label: String): String {
|
||||||
otpModel?.let {
|
if (label == OTP_TOKEN_FIELD) {
|
||||||
if (label == OTP_TOKEN_FIELD) {
|
otpModel?.let {
|
||||||
return OtpElement(it).token
|
return OtpElement(it).token
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -104,37 +105,55 @@ class EntryInfo : Parcelable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun addUniqueField(field: Field, number: Int = 0) {
|
private fun addUniqueField(field: Field, number: Int = 0) {
|
||||||
var exists = false
|
var sameName = false
|
||||||
var sameData = false
|
var sameValue = false
|
||||||
val suffix = if (number > 0) number.toString() else ""
|
val suffix = if (number > 0) "_$number" else ""
|
||||||
customFields.forEach { currentField ->
|
customFields.forEach { currentField ->
|
||||||
|
// Not write the same data again
|
||||||
|
if (currentField.protectedValue.stringValue == field.protectedValue.stringValue) {
|
||||||
|
sameValue = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Same name but new value, create a new suffix
|
||||||
if (currentField.name == field.name + suffix) {
|
if (currentField.name == field.name + suffix) {
|
||||||
exists = true
|
sameName = true
|
||||||
// Not write the same value again
|
addUniqueField(field, number + 1)
|
||||||
if (currentField.protectedValue.stringValue == field.protectedValue.stringValue) {
|
|
||||||
sameData = true
|
|
||||||
} else {
|
|
||||||
addUniqueField(field, number + 1)
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!exists && !sameData)
|
if (!sameName && !sameValue)
|
||||||
(customFields as ArrayList<Field>).add(Field(field.name + suffix, field.protectedValue))
|
(customFields as ArrayList<Field>).add(Field(field.name + suffix, field.protectedValue))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun saveSearchInfo(database: Database?, searchInfo: SearchInfo) {
|
fun saveSearchInfo(database: Database?, searchInfo: SearchInfo) {
|
||||||
searchInfo.webDomain?.let { webDomain ->
|
searchInfo.otpString?.let { otpString ->
|
||||||
|
// Replace the OTP field
|
||||||
|
OtpEntryFields.parseOTPUri(otpString)?.let { otpElement ->
|
||||||
|
if (title.isEmpty())
|
||||||
|
title = otpElement.issuer
|
||||||
|
if (username.isEmpty())
|
||||||
|
username = otpElement.name
|
||||||
|
// Add OTP field
|
||||||
|
val mutableCustomFields = customFields as ArrayList<Field>
|
||||||
|
val otpField = OtpEntryFields.buildOtpField(otpElement, null, null)
|
||||||
|
if (mutableCustomFields.contains(otpField)) {
|
||||||
|
mutableCustomFields.remove(otpField)
|
||||||
|
}
|
||||||
|
mutableCustomFields.add(otpField)
|
||||||
|
}
|
||||||
|
} ?: searchInfo.webDomain?.let { webDomain ->
|
||||||
// If unable to save web domain in custom field or URL not populated, save in URL
|
// If unable to save web domain in custom field or URL not populated, save in URL
|
||||||
val scheme = searchInfo.webScheme
|
val scheme = searchInfo.webScheme
|
||||||
val webScheme = if (scheme.isNullOrEmpty()) "http" else scheme
|
val webScheme = if (scheme.isNullOrEmpty()) "http" else scheme
|
||||||
val webDomainToStore = "$webScheme://$webDomain"
|
val webDomainToStore = "$webScheme://$webDomain"
|
||||||
if (database?.allowEntryCustomFields() != true || url.isEmpty()) {
|
if (database?.allowEntryCustomFields() != true || url.isEmpty()) {
|
||||||
url = webDomainToStore
|
url = webDomainToStore
|
||||||
} else {
|
}
|
||||||
|
else if (url != webDomainToStore){
|
||||||
// Save web domain in custom field
|
// Save web domain in custom field
|
||||||
addUniqueField(Field(WEB_DOMAIN_FIELD_NAME,
|
addUniqueField(Field(WEB_DOMAIN_FIELD_NAME,
|
||||||
ProtectedString(false, webDomainToStore))
|
ProtectedString(false, webDomainToStore)),
|
||||||
|
1 // Start to one because URL is a standard field name
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} ?: run {
|
} ?: run {
|
||||||
@@ -151,8 +170,8 @@ class EntryInfo : Parcelable {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
const val WEB_DOMAIN_FIELD_NAME = "WebDomain"
|
const val WEB_DOMAIN_FIELD_NAME = "URL"
|
||||||
const val APPLICATION_ID_FIELD_NAME = "ApplicationId"
|
const val APPLICATION_ID_FIELD_NAME = "AndroidApp"
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
val CREATOR: Parcelable.Creator<EntryInfo> = object : Parcelable.Creator<EntryInfo> {
|
val CREATOR: Parcelable.Creator<EntryInfo> = object : Parcelable.Creator<EntryInfo> {
|
||||||
|
|||||||
@@ -2,8 +2,10 @@ package com.kunzisoft.keepass.model
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
|
import android.net.Uri
|
||||||
import android.os.Parcel
|
import android.os.Parcel
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
|
import com.kunzisoft.keepass.otp.OtpEntryFields
|
||||||
import com.kunzisoft.keepass.settings.PreferencesUtil
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
import com.kunzisoft.keepass.utils.ObjectNameResource
|
import com.kunzisoft.keepass.utils.ObjectNameResource
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@@ -35,6 +37,7 @@ class SearchInfo : ObjectNameResource, Parcelable {
|
|||||||
get() {
|
get() {
|
||||||
return if (webDomain == null) null else field
|
return if (webDomain == null) null else field
|
||||||
}
|
}
|
||||||
|
var otpString: String? = null
|
||||||
|
|
||||||
constructor()
|
constructor()
|
||||||
|
|
||||||
@@ -42,6 +45,7 @@ class SearchInfo : ObjectNameResource, Parcelable {
|
|||||||
applicationId = toCopy?.applicationId
|
applicationId = toCopy?.applicationId
|
||||||
webDomain = toCopy?.webDomain
|
webDomain = toCopy?.webDomain
|
||||||
webScheme = toCopy?.webScheme
|
webScheme = toCopy?.webScheme
|
||||||
|
otpString = toCopy?.otpString
|
||||||
}
|
}
|
||||||
|
|
||||||
private constructor(parcel: Parcel) {
|
private constructor(parcel: Parcel) {
|
||||||
@@ -51,6 +55,8 @@ class SearchInfo : ObjectNameResource, Parcelable {
|
|||||||
webDomain = if (readDomain.isNullOrEmpty()) null else readDomain
|
webDomain = if (readDomain.isNullOrEmpty()) null else readDomain
|
||||||
val readScheme = parcel.readString()
|
val readScheme = parcel.readString()
|
||||||
webScheme = if (readScheme.isNullOrEmpty()) null else readScheme
|
webScheme = if (readScheme.isNullOrEmpty()) null else readScheme
|
||||||
|
val readOtp = parcel.readString()
|
||||||
|
otpString = if (readOtp.isNullOrEmpty()) null else readOtp
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun describeContents(): Int {
|
override fun describeContents(): Int {
|
||||||
@@ -61,14 +67,23 @@ class SearchInfo : ObjectNameResource, Parcelable {
|
|||||||
parcel.writeString(applicationId ?: "")
|
parcel.writeString(applicationId ?: "")
|
||||||
parcel.writeString(webDomain ?: "")
|
parcel.writeString(webDomain ?: "")
|
||||||
parcel.writeString(webScheme ?: "")
|
parcel.writeString(webScheme ?: "")
|
||||||
|
parcel.writeString(otpString ?: "")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getName(resources: Resources): String {
|
override fun getName(resources: Resources): String {
|
||||||
|
otpString?.let { otpString ->
|
||||||
|
OtpEntryFields.parseOTPUri(otpString)?.let { otpElement ->
|
||||||
|
return "${otpElement.type} (${Uri.decode(otpElement.issuer)}:${Uri.decode(otpElement.name)})"
|
||||||
|
}
|
||||||
|
}
|
||||||
return toString()
|
return toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun containsOnlyNullValues(): Boolean {
|
fun containsOnlyNullValues(): Boolean {
|
||||||
return applicationId == null && webDomain == null && webScheme == null
|
return applicationId == null
|
||||||
|
&& webDomain == null
|
||||||
|
&& webScheme == null
|
||||||
|
&& otpString == null
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
@@ -80,6 +95,7 @@ class SearchInfo : ObjectNameResource, Parcelable {
|
|||||||
if (applicationId != other.applicationId) return false
|
if (applicationId != other.applicationId) return false
|
||||||
if (webDomain != other.webDomain) return false
|
if (webDomain != other.webDomain) return false
|
||||||
if (webScheme != other.webScheme) return false
|
if (webScheme != other.webScheme) return false
|
||||||
|
if (otpString != other.otpString) return false
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -88,11 +104,12 @@ class SearchInfo : ObjectNameResource, Parcelable {
|
|||||||
var result = applicationId?.hashCode() ?: 0
|
var result = applicationId?.hashCode() ?: 0
|
||||||
result = 31 * result + (webDomain?.hashCode() ?: 0)
|
result = 31 * result + (webDomain?.hashCode() ?: 0)
|
||||||
result = 31 * result + (webScheme?.hashCode() ?: 0)
|
result = 31 * result + (webScheme?.hashCode() ?: 0)
|
||||||
|
result = 31 * result + (otpString?.hashCode() ?: 0)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return webDomain ?: applicationId ?: ""
|
return otpString ?: webDomain ?: applicationId ?: ""
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -0,0 +1,143 @@
|
|||||||
|
package com.kunzisoft.keepass.notifications
|
||||||
|
|
||||||
|
import android.app.PendingIntent
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import android.net.Uri
|
||||||
|
import android.os.Binder
|
||||||
|
import android.os.IBinder
|
||||||
|
import com.kunzisoft.keepass.R
|
||||||
|
import com.kunzisoft.keepass.app.database.CipherDatabaseEntity
|
||||||
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
|
import com.kunzisoft.keepass.timeout.TimeoutHelper
|
||||||
|
import kotlinx.coroutines.*
|
||||||
|
|
||||||
|
class AdvancedUnlockNotificationService : NotificationService() {
|
||||||
|
|
||||||
|
private lateinit var mTempCipherDao: ArrayList<CipherDatabaseEntity>
|
||||||
|
|
||||||
|
private var mActionTaskBinder = AdvancedUnlockBinder()
|
||||||
|
|
||||||
|
private var notificationTimeoutMilliSecs: Long = 0
|
||||||
|
private var mTimerJob: Job? = null
|
||||||
|
|
||||||
|
inner class AdvancedUnlockBinder: Binder() {
|
||||||
|
fun getCipherDatabase(databaseUri: Uri): CipherDatabaseEntity? {
|
||||||
|
return mTempCipherDao.firstOrNull { it.databaseUri == databaseUri.toString()}
|
||||||
|
}
|
||||||
|
fun addOrUpdateCipherDatabase(cipherDatabaseEntity: CipherDatabaseEntity) {
|
||||||
|
val cipherDatabaseRetrieve = mTempCipherDao.firstOrNull { it.databaseUri == cipherDatabaseEntity.databaseUri }
|
||||||
|
cipherDatabaseRetrieve?.replaceContent(cipherDatabaseEntity)
|
||||||
|
?: mTempCipherDao.add(cipherDatabaseEntity)
|
||||||
|
}
|
||||||
|
fun deleteByDatabaseUri(databaseUri: Uri) {
|
||||||
|
mTempCipherDao.firstOrNull { it.databaseUri == databaseUri.toString() }?.let {
|
||||||
|
mTempCipherDao.remove(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fun deleteAll() {
|
||||||
|
mTempCipherDao.clear()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override val notificationId: Int = 593
|
||||||
|
|
||||||
|
override fun retrieveChannelId(): String {
|
||||||
|
return CHANNEL_ADVANCED_UNLOCK_ID
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun retrieveChannelName(): String {
|
||||||
|
return getString(R.string.advanced_unlock)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onBind(intent: Intent): IBinder? {
|
||||||
|
super.onBind(intent)
|
||||||
|
return mActionTaskBinder
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||||
|
super.onStartCommand(intent, flags, startId)
|
||||||
|
|
||||||
|
val deleteIntent = Intent(this, AdvancedUnlockNotificationService::class.java).apply {
|
||||||
|
action = ACTION_REMOVE_KEYS
|
||||||
|
}
|
||||||
|
val pendingDeleteIntent = PendingIntent.getService(this, 0, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
|
val deviceCredential = PreferencesUtil.isDeviceCredentialUnlockEnable(this)
|
||||||
|
val notificationBuilder = buildNewNotification().apply {
|
||||||
|
setSmallIcon(if (deviceCredential) {
|
||||||
|
R.drawable.notification_ic_device_unlock_24dp
|
||||||
|
} else {
|
||||||
|
R.drawable.notification_ic_fingerprint_unlock_24dp
|
||||||
|
})
|
||||||
|
intent?.let {
|
||||||
|
setContentTitle(getString(R.string.advanced_unlock))
|
||||||
|
}
|
||||||
|
setContentText(getString(R.string.advanced_unlock_tap_delete))
|
||||||
|
setContentIntent(pendingDeleteIntent)
|
||||||
|
// Unfortunately swipe is disabled in lollipop+
|
||||||
|
setDeleteIntent(pendingDeleteIntent)
|
||||||
|
}
|
||||||
|
|
||||||
|
when (intent?.action) {
|
||||||
|
ACTION_TIMEOUT -> {
|
||||||
|
notificationTimeoutMilliSecs = PreferencesUtil.getAdvancedUnlockTimeout(this)
|
||||||
|
// Not necessarily a foreground service
|
||||||
|
if (mTimerJob == null && notificationTimeoutMilliSecs != TimeoutHelper.NEVER) {
|
||||||
|
mTimerJob = CoroutineScope(Dispatchers.Main).launch {
|
||||||
|
val maxPos = 100
|
||||||
|
val posDurationMills = notificationTimeoutMilliSecs / maxPos
|
||||||
|
for (pos in maxPos downTo 0) {
|
||||||
|
notificationBuilder.setProgress(maxPos, pos, false)
|
||||||
|
startForeground(notificationId, notificationBuilder.build())
|
||||||
|
delay(posDurationMills)
|
||||||
|
if (pos <= 0) {
|
||||||
|
stopSelf()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
notificationManager?.cancel(notificationId)
|
||||||
|
mTimerJob = null
|
||||||
|
cancel()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
startForeground(notificationId, notificationBuilder.build())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ACTION_REMOVE_KEYS -> {
|
||||||
|
stopSelf()
|
||||||
|
}
|
||||||
|
else -> {}
|
||||||
|
}
|
||||||
|
|
||||||
|
return START_STICKY
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreate() {
|
||||||
|
super.onCreate()
|
||||||
|
mTempCipherDao = ArrayList()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
mTempCipherDao.clear()
|
||||||
|
mTimerJob?.cancel()
|
||||||
|
super.onDestroy()
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val CHANNEL_ADVANCED_UNLOCK_ID = "com.kunzisoft.keepass.notification.channel.unlock"
|
||||||
|
|
||||||
|
private const val ACTION_TIMEOUT = "ACTION_TIMEOUT"
|
||||||
|
private const val ACTION_REMOVE_KEYS = "ACTION_REMOVE_KEYS"
|
||||||
|
|
||||||
|
fun startServiceForTimeout(context: Context) {
|
||||||
|
if (PreferencesUtil.isTempAdvancedUnlockEnable(context)) {
|
||||||
|
context.startService(Intent(context, AdvancedUnlockNotificationService::class.java).apply {
|
||||||
|
action = ACTION_TIMEOUT
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun stopService(context: Context) {
|
||||||
|
context.stopService(Intent(context, AdvancedUnlockNotificationService::class.java))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -52,6 +52,14 @@ class AttachmentFileNotificationService: LockNotificationService() {
|
|||||||
|
|
||||||
private val mainScope = CoroutineScope(Dispatchers.Main)
|
private val mainScope = CoroutineScope(Dispatchers.Main)
|
||||||
|
|
||||||
|
override fun retrieveChannelId(): String {
|
||||||
|
return CHANNEL_ATTACHMENT_ID
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun retrieveChannelName(): String {
|
||||||
|
return getString(R.string.entry_attachments)
|
||||||
|
}
|
||||||
|
|
||||||
inner class ActionTaskBinder: Binder() {
|
inner class ActionTaskBinder: Binder() {
|
||||||
|
|
||||||
fun getService(): AttachmentFileNotificationService = this@AttachmentFileNotificationService
|
fun getService(): AttachmentFileNotificationService = this@AttachmentFileNotificationService
|
||||||
@@ -430,6 +438,8 @@ class AttachmentFileNotificationService: LockNotificationService() {
|
|||||||
companion object {
|
companion object {
|
||||||
private val TAG = AttachmentFileNotificationService::javaClass.name
|
private val TAG = AttachmentFileNotificationService::javaClass.name
|
||||||
|
|
||||||
|
private const val CHANNEL_ATTACHMENT_ID = "com.kunzisoft.keepass.notification.channel.attachment"
|
||||||
|
|
||||||
const val ACTION_ATTACHMENT_FILE_START_UPLOAD = "ACTION_ATTACHMENT_FILE_START_UPLOAD"
|
const val ACTION_ATTACHMENT_FILE_START_UPLOAD = "ACTION_ATTACHMENT_FILE_START_UPLOAD"
|
||||||
const val ACTION_ATTACHMENT_FILE_START_DOWNLOAD = "ACTION_ATTACHMENT_FILE_START_DOWNLOAD"
|
const val ACTION_ATTACHMENT_FILE_START_DOWNLOAD = "ACTION_ATTACHMENT_FILE_START_DOWNLOAD"
|
||||||
const val ACTION_ATTACHMENT_REMOVE = "ACTION_ATTACHMENT_REMOVE"
|
const val ACTION_ATTACHMENT_REMOVE = "ACTION_ATTACHMENT_REMOVE"
|
||||||
|
|||||||
@@ -39,6 +39,14 @@ class ClipboardEntryNotificationService : LockNotificationService() {
|
|||||||
private var notificationTimeoutMilliSecs: Long = 0
|
private var notificationTimeoutMilliSecs: Long = 0
|
||||||
private var cleanCopyNotificationTimerTask: Thread? = null
|
private var cleanCopyNotificationTimerTask: Thread? = null
|
||||||
|
|
||||||
|
override fun retrieveChannelId(): String {
|
||||||
|
return CHANNEL_CLIPBOARD_ID
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun retrieveChannelName(): String {
|
||||||
|
return getString(R.string.clipboard)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
|
|
||||||
@@ -230,6 +238,8 @@ class ClipboardEntryNotificationService : LockNotificationService() {
|
|||||||
|
|
||||||
private val TAG = ClipboardEntryNotificationService::class.java.name
|
private val TAG = ClipboardEntryNotificationService::class.java.name
|
||||||
|
|
||||||
|
private const val CHANNEL_CLIPBOARD_ID = "com.kunzisoft.keepass.notification.channel.clipboard"
|
||||||
|
|
||||||
const val ACTION_NEW_NOTIFICATION = "ACTION_NEW_NOTIFICATION"
|
const val ACTION_NEW_NOTIFICATION = "ACTION_NEW_NOTIFICATION"
|
||||||
const val EXTRA_ENTRY_INFO = "EXTRA_ENTRY_INFO"
|
const val EXTRA_ENTRY_INFO = "EXTRA_ENTRY_INFO"
|
||||||
const val EXTRA_CLIPBOARD_FIELDS = "EXTRA_CLIPBOARD_FIELDS"
|
const val EXTRA_CLIPBOARD_FIELDS = "EXTRA_CLIPBOARD_FIELDS"
|
||||||
|
|||||||
@@ -23,11 +23,11 @@ import android.app.PendingIntent
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Binder
|
import android.os.Binder
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import com.kunzisoft.keepass.R
|
import com.kunzisoft.keepass.R
|
||||||
import com.kunzisoft.keepass.activities.GroupActivity
|
import com.kunzisoft.keepass.activities.GroupActivity
|
||||||
|
import com.kunzisoft.keepass.activities.helpers.ReadOnlyHelper
|
||||||
import com.kunzisoft.keepass.app.database.CipherDatabaseEntity
|
import com.kunzisoft.keepass.app.database.CipherDatabaseEntity
|
||||||
import com.kunzisoft.keepass.database.action.*
|
import com.kunzisoft.keepass.database.action.*
|
||||||
import com.kunzisoft.keepass.database.action.history.DeleteEntryHistoryDatabaseRunnable
|
import com.kunzisoft.keepass.database.action.history.DeleteEntryHistoryDatabaseRunnable
|
||||||
@@ -70,6 +70,14 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
|
|||||||
private var mMessageId: Int? = null
|
private var mMessageId: Int? = null
|
||||||
private var mWarningId: Int? = null
|
private var mWarningId: Int? = null
|
||||||
|
|
||||||
|
override fun retrieveChannelId(): String {
|
||||||
|
return CHANNEL_DATABASE_ID
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun retrieveChannelName(): String {
|
||||||
|
return getString(R.string.database)
|
||||||
|
}
|
||||||
|
|
||||||
inner class ActionTaskBinder: Binder() {
|
inner class ActionTaskBinder: Binder() {
|
||||||
|
|
||||||
fun getService(): DatabaseTaskNotificationService = this@DatabaseTaskNotificationService
|
fun getService(): DatabaseTaskNotificationService = this@DatabaseTaskNotificationService
|
||||||
@@ -274,14 +282,12 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
|
|||||||
// Database is normally open
|
// Database is normally open
|
||||||
if (mDatabase.loaded) {
|
if (mDatabase.loaded) {
|
||||||
// Build Intents for notification action
|
// Build Intents for notification action
|
||||||
var pendingDatabaseFlag = 0
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
||||||
pendingDatabaseFlag = PendingIntent.FLAG_IMMUTABLE
|
|
||||||
}
|
|
||||||
val pendingDatabaseIntent = PendingIntent.getActivity(this,
|
val pendingDatabaseIntent = PendingIntent.getActivity(this,
|
||||||
0,
|
0,
|
||||||
Intent(this, GroupActivity::class.java),
|
Intent(this, GroupActivity::class.java).apply {
|
||||||
pendingDatabaseFlag)
|
ReadOnlyHelper.putReadOnlyInIntent(this, mDatabase.isReadOnly)
|
||||||
|
},
|
||||||
|
PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
val deleteIntent = Intent(this, DatabaseTaskNotificationService::class.java).apply {
|
val deleteIntent = Intent(this, DatabaseTaskNotificationService::class.java).apply {
|
||||||
action = ACTION_DATABASE_CLOSE
|
action = ACTION_DATABASE_CLOSE
|
||||||
}
|
}
|
||||||
@@ -760,6 +766,8 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
|
|||||||
|
|
||||||
private val TAG = DatabaseTaskNotificationService::class.java.name
|
private val TAG = DatabaseTaskNotificationService::class.java.name
|
||||||
|
|
||||||
|
private const val CHANNEL_DATABASE_ID = "com.kunzisoft.keepass.notification.channel.database"
|
||||||
|
|
||||||
const val ACTION_DATABASE_CREATE_TASK = "ACTION_DATABASE_CREATE_TASK"
|
const val ACTION_DATABASE_CREATE_TASK = "ACTION_DATABASE_CREATE_TASK"
|
||||||
const val ACTION_DATABASE_LOAD_TASK = "ACTION_DATABASE_LOAD_TASK"
|
const val ACTION_DATABASE_LOAD_TASK = "ACTION_DATABASE_LOAD_TASK"
|
||||||
const val ACTION_DATABASE_ASSIGN_PASSWORD_TASK = "ACTION_DATABASE_ASSIGN_PASSWORD_TASK"
|
const val ACTION_DATABASE_ASSIGN_PASSWORD_TASK = "ACTION_DATABASE_ASSIGN_PASSWORD_TASK"
|
||||||
|
|||||||
@@ -40,6 +40,14 @@ class KeyboardEntryNotificationService : LockNotificationService() {
|
|||||||
|
|
||||||
private var pendingDeleteIntent: PendingIntent? = null
|
private var pendingDeleteIntent: PendingIntent? = null
|
||||||
|
|
||||||
|
override fun retrieveChannelId(): String {
|
||||||
|
return CHANNEL_MAGIKEYBOARD_ID
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun retrieveChannelName(): String {
|
||||||
|
return getString(R.string.magic_keyboard_title)
|
||||||
|
}
|
||||||
|
|
||||||
private fun stopNotificationAndSendLockIfNeeded() {
|
private fun stopNotificationAndSendLockIfNeeded() {
|
||||||
// Clear the entry if define in preferences
|
// Clear the entry if define in preferences
|
||||||
if (PreferencesUtil.isClearKeyboardNotificationEnable(this)) {
|
if (PreferencesUtil.isClearKeyboardNotificationEnable(this)) {
|
||||||
@@ -145,8 +153,9 @@ class KeyboardEntryNotificationService : LockNotificationService() {
|
|||||||
|
|
||||||
private const val TAG = "KeyboardEntryNotifSrv"
|
private const val TAG = "KeyboardEntryNotifSrv"
|
||||||
|
|
||||||
const val ENTRY_INFO_KEY = "ENTRY_INFO_KEY"
|
private const val CHANNEL_MAGIKEYBOARD_ID = "com.kunzisoft.keepass.notification.channel.magikeyboard"
|
||||||
|
|
||||||
|
const val ENTRY_INFO_KEY = "ENTRY_INFO_KEY"
|
||||||
const val ACTION_CLEAN_KEYBOARD_ENTRY = "ACTION_CLEAN_KEYBOARD_ENTRY"
|
const val ACTION_CLEAN_KEYBOARD_ENTRY = "ACTION_CLEAN_KEYBOARD_ENTRY"
|
||||||
|
|
||||||
fun launchNotificationIfAllowed(context: Context, entry: EntryInfo, toast: Boolean) {
|
fun launchNotificationIfAllowed(context: Context, entry: EntryInfo, toast: Boolean) {
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
package com.kunzisoft.keepass.notifications
|
package com.kunzisoft.keepass.notifications
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import com.kunzisoft.keepass.timeout.TimeoutHelper
|
|
||||||
import com.kunzisoft.keepass.utils.LockReceiver
|
import com.kunzisoft.keepass.utils.LockReceiver
|
||||||
import com.kunzisoft.keepass.utils.registerLockReceiver
|
import com.kunzisoft.keepass.utils.registerLockReceiver
|
||||||
import com.kunzisoft.keepass.utils.unregisterLockReceiver
|
import com.kunzisoft.keepass.utils.unregisterLockReceiver
|
||||||
|
|||||||
@@ -24,6 +24,14 @@ abstract class NotificationService : Service() {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun retrieveChannelId(): String {
|
||||||
|
return CHANNEL_ID
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun retrieveChannelName(): String {
|
||||||
|
return CHANNEL_NAME
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
|
|
||||||
@@ -31,9 +39,9 @@ abstract class NotificationService : Service() {
|
|||||||
|
|
||||||
// Create notification channel for Oreo+
|
// Create notification channel for Oreo+
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
if (notificationManager?.getNotificationChannel(CHANNEL_ID_KEEPASS) == null) {
|
if (notificationManager?.getNotificationChannel(retrieveChannelId()) == null) {
|
||||||
val channel = NotificationChannel(CHANNEL_ID_KEEPASS,
|
val channel = NotificationChannel(retrieveChannelId(),
|
||||||
CHANNEL_NAME_KEEPASS,
|
retrieveChannelName(),
|
||||||
NotificationManager.IMPORTANCE_DEFAULT).apply {
|
NotificationManager.IMPORTANCE_DEFAULT).apply {
|
||||||
enableVibration(false)
|
enableVibration(false)
|
||||||
setSound(null, null)
|
setSound(null, null)
|
||||||
@@ -51,7 +59,7 @@ abstract class NotificationService : Service() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected fun buildNewNotification(): NotificationCompat.Builder {
|
protected fun buildNewNotification(): NotificationCompat.Builder {
|
||||||
return NotificationCompat.Builder(this, CHANNEL_ID_KEEPASS)
|
return NotificationCompat.Builder(this, retrieveChannelId())
|
||||||
.setColor(colorNotificationAccent)
|
.setColor(colorNotificationAccent)
|
||||||
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
|
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
|
||||||
.setVisibility(NotificationCompat.VISIBILITY_SECRET)
|
.setVisibility(NotificationCompat.VISIBILITY_SECRET)
|
||||||
@@ -70,7 +78,7 @@ abstract class NotificationService : Service() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val CHANNEL_ID_KEEPASS = "com.kunzisoft.keepass.notification.channel"
|
private const val CHANNEL_ID = "com.kunzisoft.keepass.notification.channel"
|
||||||
const val CHANNEL_NAME_KEEPASS = "KeePassDX notification"
|
private const val CHANNEL_NAME = "KeePassDX notification"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -216,13 +216,17 @@ data class OtpElement(var otpModel: OtpModel = OtpModel()) {
|
|||||||
return secret.isNotEmpty() && checkBase64Secret(secret)
|
return secret.isNotEmpty() && checkBase64Secret(secret)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun replaceSpaceChars(parameter: String): String {
|
fun removeLineChars(parameter: String): String {
|
||||||
|
return parameter.replace("[\\r|\\n|\\t|\\u00A0]+".toRegex(), "")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun removeSpaceChars(parameter: String): String {
|
||||||
return parameter.replace("[\\r|\\n|\\t|\\s|\\u00A0]+".toRegex(), "")
|
return parameter.replace("[\\r|\\n|\\t|\\s|\\u00A0]+".toRegex(), "")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun replaceBase32Chars(parameter: String): String {
|
fun replaceBase32Chars(parameter: String): String {
|
||||||
// Add 'A' at end if not Base32 length
|
// Add 'A' at end if not Base32 length
|
||||||
var parameterNewSize = replaceSpaceChars(parameter.toUpperCase(Locale.ENGLISH))
|
var parameterNewSize = removeSpaceChars(parameter.toUpperCase(Locale.ENGLISH))
|
||||||
while (parameterNewSize.length % 8 != 0) {
|
while (parameterNewSize.length % 8 != 0) {
|
||||||
parameterNewSize += 'A'
|
parameterNewSize += 'A'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,9 +24,9 @@ import android.net.Uri
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.kunzisoft.keepass.database.element.security.ProtectedString
|
import com.kunzisoft.keepass.database.element.security.ProtectedString
|
||||||
import com.kunzisoft.keepass.model.Field
|
import com.kunzisoft.keepass.model.Field
|
||||||
import com.kunzisoft.keepass.otp.OtpElement.Companion.replaceSpaceChars
|
import com.kunzisoft.keepass.otp.OtpElement.Companion.removeLineChars
|
||||||
|
import com.kunzisoft.keepass.otp.OtpElement.Companion.removeSpaceChars
|
||||||
import com.kunzisoft.keepass.otp.TokenCalculator.*
|
import com.kunzisoft.keepass.otp.TokenCalculator.*
|
||||||
import java.net.URLEncoder
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ object OtpEntryFields {
|
|||||||
private val TAG = OtpEntryFields::class.java.name
|
private val TAG = OtpEntryFields::class.java.name
|
||||||
|
|
||||||
// Field from KeePassXC
|
// Field from KeePassXC
|
||||||
private const val OTP_FIELD = "otp"
|
const val OTP_FIELD = "otp"
|
||||||
|
|
||||||
// URL parameters (https://github.com/google/google-authenticator/wiki/Key-Uri-Format)
|
// URL parameters (https://github.com/google/google-authenticator/wiki/Key-Uri-Format)
|
||||||
private const val OTP_SCHEME = "otpauth"
|
private const val OTP_SCHEME = "otpauth"
|
||||||
@@ -49,6 +49,9 @@ object OtpEntryFields {
|
|||||||
private const val ENCODER_URL_PARAM = "encoder"
|
private const val ENCODER_URL_PARAM = "encoder"
|
||||||
private const val COUNTER_URL_PARAM = "counter"
|
private const val COUNTER_URL_PARAM = "counter"
|
||||||
|
|
||||||
|
// OTPauth URI
|
||||||
|
private const val REGEX_OTP_AUTH = "^(?:otpauth://([ht]otp)/)(?:(?:([^:?#]*): *)?([^:?#]*))(?:\\?([^#]+))$"
|
||||||
|
|
||||||
// Key-values (maybe from plugin or old KeePassXC)
|
// Key-values (maybe from plugin or old KeePassXC)
|
||||||
private const val SEED_KEY = "key"
|
private const val SEED_KEY = "key"
|
||||||
private const val DIGITS_KEY = "size"
|
private const val DIGITS_KEY = "size"
|
||||||
@@ -91,7 +94,25 @@ object OtpEntryFields {
|
|||||||
// HOTP fields from KeePass 2
|
// HOTP fields from KeePass 2
|
||||||
if (parseHOTPFromField(getField, otpElement))
|
if (parseHOTPFromField(getField, otpElement))
|
||||||
return otpElement
|
return otpElement
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tell if [otpUri] is a valid Otp URI
|
||||||
|
*/
|
||||||
|
fun isOTPUri(otpUri: String): Boolean {
|
||||||
|
if (Pattern.matches(REGEX_OTP_AUTH, otpUri))
|
||||||
|
return true
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get OtpElement from [otpUri]
|
||||||
|
*/
|
||||||
|
fun parseOTPUri(otpUri: String): OtpElement? {
|
||||||
|
val otpElement = OtpElement()
|
||||||
|
if (parseOTPUri({ key -> if (key == OTP_FIELD) otpUri else null }, otpElement))
|
||||||
|
return otpElement
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,8 +125,8 @@ object OtpEntryFields {
|
|||||||
*/
|
*/
|
||||||
private fun parseOTPUri(getField: (id: String) -> String?, otpElement: OtpElement): Boolean {
|
private fun parseOTPUri(getField: (id: String) -> String?, otpElement: OtpElement): Boolean {
|
||||||
val otpPlainText = getField(OTP_FIELD)
|
val otpPlainText = getField(OTP_FIELD)
|
||||||
if (otpPlainText != null && otpPlainText.isNotEmpty()) {
|
if (otpPlainText != null && otpPlainText.isNotEmpty() && isOTPUri(otpPlainText)) {
|
||||||
val uri = Uri.parse(replaceSpaceChars(otpPlainText))
|
val uri = Uri.parse(removeSpaceChars(otpPlainText))
|
||||||
|
|
||||||
if (uri.scheme == null || OTP_SCHEME != uri.scheme!!.toLowerCase(Locale.ENGLISH)) {
|
if (uri.scheme == null || OTP_SCHEME != uri.scheme!!.toLowerCase(Locale.ENGLISH)) {
|
||||||
Log.e(TAG, "Invalid or missing scheme in uri")
|
Log.e(TAG, "Invalid or missing scheme in uri")
|
||||||
@@ -135,12 +156,19 @@ object OtpEntryFields {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val nameParam = validateAndGetNameInPath(uri.path)
|
val nameParam = validateAndGetNameInPath(uri.path)
|
||||||
if (nameParam != null && nameParam.isNotEmpty())
|
if (nameParam != null && nameParam.isNotEmpty()) {
|
||||||
otpElement.name = nameParam
|
val userIdArray = nameParam.split(":", "%3A")
|
||||||
|
if (userIdArray.size > 1) {
|
||||||
|
otpElement.issuer = removeLineChars(userIdArray[0])
|
||||||
|
otpElement.name = removeLineChars(userIdArray[1])
|
||||||
|
} else {
|
||||||
|
otpElement.name = removeLineChars(nameParam)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val issuerParam = uri.getQueryParameter(ISSUER_URL_PARAM)
|
val issuerParam = uri.getQueryParameter(ISSUER_URL_PARAM)
|
||||||
if (issuerParam != null && issuerParam.isNotEmpty())
|
if (issuerParam != null && issuerParam.isNotEmpty())
|
||||||
otpElement.issuer = issuerParam
|
otpElement.issuer = removeLineChars(issuerParam)
|
||||||
|
|
||||||
val secretParam = uri.getQueryParameter(SECRET_URL_PARAM)
|
val secretParam = uri.getQueryParameter(SECRET_URL_PARAM)
|
||||||
if (secretParam != null && secretParam.isNotEmpty()) {
|
if (secretParam != null && secretParam.isNotEmpty()) {
|
||||||
@@ -211,15 +239,15 @@ object OtpEntryFields {
|
|||||||
}
|
}
|
||||||
val issuer =
|
val issuer =
|
||||||
if (title != null && title.isNotEmpty())
|
if (title != null && title.isNotEmpty())
|
||||||
replaceCharsForUrl(title)
|
encodeParameter(title)
|
||||||
else
|
else
|
||||||
replaceCharsForUrl(otpElement.issuer)
|
encodeParameter(otpElement.issuer)
|
||||||
val accountName =
|
val accountName =
|
||||||
if (username != null && username.isNotEmpty())
|
if (username != null && username.isNotEmpty())
|
||||||
replaceCharsForUrl(username)
|
encodeParameter(username)
|
||||||
else
|
else
|
||||||
replaceCharsForUrl(otpElement.name)
|
encodeParameter(otpElement.name)
|
||||||
val uriString = StringBuilder("otpauth://$otpAuthority/$issuer:$accountName" +
|
val uriString = StringBuilder("otpauth://$otpAuthority/$issuer%3A$accountName" +
|
||||||
"?$SECRET_URL_PARAM=${otpElement.getBase32Secret()}" +
|
"?$SECRET_URL_PARAM=${otpElement.getBase32Secret()}" +
|
||||||
"&$counterOrPeriodLabel=$counterOrPeriodValue" +
|
"&$counterOrPeriodLabel=$counterOrPeriodValue" +
|
||||||
"&$DIGITS_URL_PARAM=${otpElement.digits}" +
|
"&$DIGITS_URL_PARAM=${otpElement.digits}" +
|
||||||
@@ -233,8 +261,8 @@ object OtpEntryFields {
|
|||||||
return Uri.parse(uriString.toString())
|
return Uri.parse(uriString.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun replaceCharsForUrl(parameter: String): String {
|
private fun encodeParameter(parameter: String): String {
|
||||||
return URLEncoder.encode(replaceSpaceChars(parameter), "UTF-8")
|
return Uri.encode(OtpElement.removeLineChars(parameter))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun parseTOTPKeyValues(getField: (id: String) -> String?, otpElement: OtpElement): Boolean {
|
private fun parseTOTPKeyValues(getField: (id: String) -> String?, otpElement: OtpElement): Boolean {
|
||||||
@@ -321,7 +349,7 @@ object OtpEntryFields {
|
|||||||
// path is "/name", so remove leading "/", and trailing white spaces
|
// path is "/name", so remove leading "/", and trailing white spaces
|
||||||
val name = path.substring(1).trim { it <= ' ' }
|
val name = path.substring(1).trim { it <= ' ' }
|
||||||
return if (name.isEmpty()) {
|
return if (name.isEmpty()) {
|
||||||
null // only white spaces.
|
null
|
||||||
} else name
|
} else name
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -338,7 +366,7 @@ object OtpEntryFields {
|
|||||||
/**
|
/**
|
||||||
* Build Otp field from an OtpElement
|
* Build Otp field from an OtpElement
|
||||||
*/
|
*/
|
||||||
fun buildOtpField(otpElement: OtpElement, title: String?, username: String?): Field {
|
fun buildOtpField(otpElement: OtpElement, title: String? = null, username: String? = null): Field {
|
||||||
return Field(OTP_FIELD, ProtectedString(true,
|
return Field(OTP_FIELD, ProtectedString(true,
|
||||||
buildOtpUri(otpElement, title, username).toString()))
|
buildOtpUri(otpElement, title, username).toString()))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ import android.view.autofill.AutofillManager
|
|||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.biometric.BiometricManager
|
import androidx.fragment.app.FragmentActivity
|
||||||
import androidx.preference.ListPreference
|
import androidx.preference.ListPreference
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import androidx.preference.SwitchPreference
|
import androidx.preference.SwitchPreference
|
||||||
@@ -44,12 +44,15 @@ import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
|
|||||||
import com.kunzisoft.keepass.biometric.BiometricUnlockDatabaseHelper
|
import com.kunzisoft.keepass.biometric.BiometricUnlockDatabaseHelper
|
||||||
import com.kunzisoft.keepass.education.Education
|
import com.kunzisoft.keepass.education.Education
|
||||||
import com.kunzisoft.keepass.icons.IconPackChooser
|
import com.kunzisoft.keepass.icons.IconPackChooser
|
||||||
|
import com.kunzisoft.keepass.notifications.AdvancedUnlockNotificationService
|
||||||
import com.kunzisoft.keepass.settings.preference.IconPackListPreference
|
import com.kunzisoft.keepass.settings.preference.IconPackListPreference
|
||||||
import com.kunzisoft.keepass.utils.UriUtil
|
import com.kunzisoft.keepass.utils.UriUtil
|
||||||
|
|
||||||
|
|
||||||
class NestedAppSettingsFragment : NestedSettingsFragment() {
|
class NestedAppSettingsFragment : NestedSettingsFragment() {
|
||||||
|
|
||||||
|
private var deleteKeysAlertDialog: AlertDialog? = null
|
||||||
|
|
||||||
override fun onCreateScreenPreference(screen: Screen, savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreateScreenPreference(screen: Screen, savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
|
|
||||||
// Load the preferences from an XML resource
|
// Load the preferences from an XML resource
|
||||||
@@ -208,15 +211,18 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
|||||||
setPreferencesFromResource(R.xml.preferences_advanced_unlock, rootKey)
|
setPreferencesFromResource(R.xml.preferences_advanced_unlock, rootKey)
|
||||||
|
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
|
|
||||||
val biometricUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.biometric_unlock_enable_key))
|
val biometricUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.biometric_unlock_enable_key))
|
||||||
val deleteKeysFingerprints: Preference? = findPreference(getString(R.string.biometric_delete_all_key_key))
|
val deviceCredentialUnlockEnablePreference: SwitchPreference? = findPreference(getString(R.string.device_credential_unlock_enable_key))
|
||||||
// < M solve verifyError exception
|
val autoOpenPromptPreference: SwitchPreference? = findPreference(getString(R.string.biometric_auto_open_prompt_key))
|
||||||
|
val tempAdvancedUnlockPreference: SwitchPreference? = findPreference(getString(R.string.temp_advanced_unlock_enable_key))
|
||||||
|
|
||||||
val biometricUnlockSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
val biometricUnlockSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
BiometricUnlockDatabaseHelper.unlockSupported(activity)
|
BiometricUnlockDatabaseHelper.biometricUnlockSupported(activity)
|
||||||
} else false
|
} else false
|
||||||
if (!biometricUnlockSupported) {
|
biometricUnlockEnablePreference?.apply {
|
||||||
// False if under Marshmallow
|
// False if under Marshmallow
|
||||||
biometricUnlockEnablePreference?.apply {
|
if (!biometricUnlockSupported) {
|
||||||
isChecked = false
|
isChecked = false
|
||||||
setOnPreferenceClickListener { preference ->
|
setOnPreferenceClickListener { preference ->
|
||||||
(preference as SwitchPreference).isChecked = false
|
(preference as SwitchPreference).isChecked = false
|
||||||
@@ -224,42 +230,95 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
|||||||
.show(parentFragmentManager, "unavailableFeatureDialog")
|
.show(parentFragmentManager, "unavailableFeatureDialog")
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
deleteKeysFingerprints?.isEnabled = false
|
setOnPreferenceClickListener {
|
||||||
} else {
|
val biometricChecked = biometricUnlockEnablePreference.isChecked
|
||||||
deleteKeysFingerprints?.setOnPreferenceClickListener {
|
val deviceCredentialChecked = deviceCredentialUnlockEnablePreference?.isChecked ?: false
|
||||||
context?.let { context ->
|
if (!biometricChecked) {
|
||||||
AlertDialog.Builder(context)
|
biometricUnlockEnablePreference.isChecked = true
|
||||||
.setMessage(resources.getString(R.string.biometric_delete_all_key_warning))
|
deleteKeysMessage(activity) {
|
||||||
.setIcon(android.R.drawable.ic_dialog_alert)
|
biometricUnlockEnablePreference.isChecked = false
|
||||||
.setPositiveButton(resources.getString(android.R.string.ok)
|
autoOpenPromptPreference?.isEnabled = deviceCredentialChecked
|
||||||
) { _, _ ->
|
tempAdvancedUnlockPreference?.isEnabled = deviceCredentialChecked
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
}
|
||||||
BiometricUnlockDatabaseHelper.deleteEntryKeyInKeystoreForBiometric(
|
} else {
|
||||||
activity,
|
if (deviceCredentialChecked) {
|
||||||
object : BiometricUnlockDatabaseHelper.BiometricUnlockErrorCallback {
|
biometricUnlockEnablePreference.isChecked = false
|
||||||
fun showException(e: Exception) {
|
deleteKeysMessage(activity) {
|
||||||
Toast.makeText(context,
|
biometricUnlockEnablePreference.isChecked = true
|
||||||
getString(R.string.biometric_scanning_error, e.localizedMessage),
|
deviceCredentialUnlockEnablePreference?.isChecked = false
|
||||||
Toast.LENGTH_SHORT).show()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onInvalidKeyException(e: Exception) {
|
|
||||||
showException(e)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onBiometricException(e: Exception) {
|
|
||||||
showException(e)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
CipherDatabaseAction.getInstance(context.applicationContext).deleteAll()
|
|
||||||
}
|
}
|
||||||
.setNegativeButton(resources.getString(android.R.string.cancel))
|
} else {
|
||||||
{ _, _ -> }.show()
|
autoOpenPromptPreference?.isEnabled = true
|
||||||
|
tempAdvancedUnlockPreference?.isEnabled = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
true
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val deviceCredentialUnlockSupported = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
|
BiometricUnlockDatabaseHelper.deviceCredentialUnlockSupported(activity)
|
||||||
|
} else false
|
||||||
|
deviceCredentialUnlockEnablePreference?.apply {
|
||||||
|
if (!deviceCredentialUnlockSupported) {
|
||||||
|
isChecked = false
|
||||||
|
setOnPreferenceClickListener { preference ->
|
||||||
|
(preference as SwitchPreference).isChecked = false
|
||||||
|
UnavailableFeatureDialogFragment.getInstance(Build.VERSION_CODES.R)
|
||||||
|
.show(parentFragmentManager, "unavailableFeatureDialog")
|
||||||
|
false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setOnPreferenceClickListener {
|
||||||
|
val deviceCredentialChecked = deviceCredentialUnlockEnablePreference.isChecked
|
||||||
|
val biometricChecked = biometricUnlockEnablePreference?.isChecked ?: false
|
||||||
|
if (!deviceCredentialChecked) {
|
||||||
|
deviceCredentialUnlockEnablePreference.isChecked = true
|
||||||
|
deleteKeysMessage(activity) {
|
||||||
|
deviceCredentialUnlockEnablePreference.isChecked = false
|
||||||
|
autoOpenPromptPreference?.isEnabled = biometricChecked
|
||||||
|
tempAdvancedUnlockPreference?.isEnabled = biometricChecked
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (biometricChecked) {
|
||||||
|
deviceCredentialUnlockEnablePreference.isChecked = false
|
||||||
|
deleteKeysMessage(activity) {
|
||||||
|
deviceCredentialUnlockEnablePreference.isChecked = true
|
||||||
|
biometricUnlockEnablePreference?.isChecked = false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
autoOpenPromptPreference?.isEnabled = true
|
||||||
|
tempAdvancedUnlockPreference?.isEnabled = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
autoOpenPromptPreference?.isEnabled = biometricUnlockEnablePreference?.isChecked == true
|
||||||
|
|| deviceCredentialUnlockEnablePreference?.isChecked == true
|
||||||
|
tempAdvancedUnlockPreference?.isEnabled = biometricUnlockEnablePreference?.isChecked == true
|
||||||
|
|| deviceCredentialUnlockEnablePreference?.isChecked == true
|
||||||
|
|
||||||
|
tempAdvancedUnlockPreference?.setOnPreferenceClickListener {
|
||||||
|
tempAdvancedUnlockPreference.isChecked = !tempAdvancedUnlockPreference.isChecked
|
||||||
|
deleteKeysMessage(activity) {
|
||||||
|
tempAdvancedUnlockPreference.isChecked = !tempAdvancedUnlockPreference.isChecked
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
val deleteKeysFingerprints: Preference? = findPreference(getString(R.string.biometric_delete_all_key_key))
|
||||||
|
if (biometricUnlockSupported || deviceCredentialUnlockSupported) {
|
||||||
|
deleteKeysFingerprints?.setOnPreferenceClickListener {
|
||||||
|
deleteKeysMessage(activity)
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
deleteKeysFingerprints?.isEnabled = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,6 +328,42 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun deleteKeysMessage(activity: FragmentActivity, validate: (()->Unit)? = null) {
|
||||||
|
deleteKeysAlertDialog = AlertDialog.Builder(activity)
|
||||||
|
.setMessage(resources.getString(R.string.advanced_unlock_delete_all_key_warning))
|
||||||
|
.setIcon(android.R.drawable.ic_dialog_alert)
|
||||||
|
.setPositiveButton(resources.getString(android.R.string.ok)
|
||||||
|
) { _, _ ->
|
||||||
|
validate?.invoke()
|
||||||
|
deleteKeysAlertDialog?.setOnDismissListener(null)
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
BiometricUnlockDatabaseHelper.deleteEntryKeyInKeystoreForBiometric(
|
||||||
|
activity,
|
||||||
|
object : BiometricUnlockDatabaseHelper.BiometricUnlockErrorCallback {
|
||||||
|
fun showException(e: Exception) {
|
||||||
|
Toast.makeText(context,
|
||||||
|
getString(R.string.advanced_unlock_scanning_error, e.localizedMessage),
|
||||||
|
Toast.LENGTH_SHORT).show()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onInvalidKeyException(e: Exception) {
|
||||||
|
showException(e)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onBiometricException(e: Exception) {
|
||||||
|
showException(e)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
AdvancedUnlockNotificationService.stopService(activity.applicationContext)
|
||||||
|
CipherDatabaseAction.getInstance(activity.applicationContext).deleteAll()
|
||||||
|
}
|
||||||
|
.setNegativeButton(resources.getString(android.R.string.cancel)
|
||||||
|
) { _, _ ->}
|
||||||
|
.create()
|
||||||
|
deleteKeysAlertDialog?.show()
|
||||||
|
}
|
||||||
|
|
||||||
private fun onCreateAppearancePreferences(rootKey: String?) {
|
private fun onCreateAppearancePreferences(rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.preferences_appearance, rootKey)
|
setPreferencesFromResource(R.xml.preferences_appearance, rootKey)
|
||||||
|
|
||||||
@@ -328,7 +423,6 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
|||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
|
|
||||||
activity?.let { activity ->
|
activity?.let { activity ->
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
findPreference<SwitchPreference?>(getString(R.string.settings_autofill_enable_key))?.let { autoFillEnablePreference ->
|
findPreference<SwitchPreference?>(getString(R.string.settings_autofill_enable_key))?.let { autoFillEnablePreference ->
|
||||||
@@ -340,6 +434,11 @@ class NestedAppSettingsFragment : NestedSettingsFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
deleteKeysAlertDialog?.dismiss()
|
||||||
|
super.onPause()
|
||||||
|
}
|
||||||
|
|
||||||
private var mCount = 0
|
private var mCount = 0
|
||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
super.onStop()
|
super.onStop()
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.kunzisoft.keepass.settings
|
package com.kunzisoft.keepass.settings
|
||||||
|
|
||||||
|
import android.app.backup.BackupManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
@@ -43,6 +44,7 @@ object PreferencesUtil {
|
|||||||
}
|
}
|
||||||
apply()
|
apply()
|
||||||
}
|
}
|
||||||
|
BackupManager(context).dataChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getDefaultDatabasePath(context: Context): String? {
|
fun getDefaultDatabasePath(context: Context): String? {
|
||||||
@@ -201,6 +203,13 @@ object PreferencesUtil {
|
|||||||
?: TimeoutHelper.DEFAULT_TIMEOUT
|
?: TimeoutHelper.DEFAULT_TIMEOUT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getAdvancedUnlockTimeout(context: Context): Long {
|
||||||
|
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
return prefs.getString(context.getString(R.string.temp_advanced_unlock_timeout_key),
|
||||||
|
context.getString(R.string.temp_advanced_unlock_timeout_default))?.toLong()
|
||||||
|
?: TimeoutHelper.DEFAULT_TIMEOUT
|
||||||
|
}
|
||||||
|
|
||||||
fun isLockDatabaseWhenScreenShutOffEnable(context: Context): Boolean {
|
fun isLockDatabaseWhenScreenShutOffEnable(context: Context): Boolean {
|
||||||
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
return prefs.getBoolean(context.getString(R.string.lock_database_screen_off_key),
|
return prefs.getBoolean(context.getString(R.string.lock_database_screen_off_key),
|
||||||
@@ -225,13 +234,29 @@ object PreferencesUtil {
|
|||||||
context.resources.getBoolean(R.bool.enable_auto_save_database_default))
|
context.resources.getBoolean(R.bool.enable_auto_save_database_default))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun isAdvancedUnlockEnable(context: Context): Boolean {
|
||||||
|
return isBiometricUnlockEnable(context) || isDeviceCredentialUnlockEnable(context)
|
||||||
|
}
|
||||||
|
|
||||||
fun isBiometricUnlockEnable(context: Context): Boolean {
|
fun isBiometricUnlockEnable(context: Context): Boolean {
|
||||||
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
return prefs.getBoolean(context.getString(R.string.biometric_unlock_enable_key),
|
return prefs.getBoolean(context.getString(R.string.biometric_unlock_enable_key),
|
||||||
context.resources.getBoolean(R.bool.biometric_unlock_enable_default))
|
context.resources.getBoolean(R.bool.biometric_unlock_enable_default))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isBiometricPromptAutoOpenEnable(context: Context): Boolean {
|
fun isDeviceCredentialUnlockEnable(context: Context): Boolean {
|
||||||
|
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
return prefs.getBoolean(context.getString(R.string.device_credential_unlock_enable_key),
|
||||||
|
context.resources.getBoolean(R.bool.device_credential_unlock_enable_default))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isTempAdvancedUnlockEnable(context: Context): Boolean {
|
||||||
|
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
|
return prefs.getBoolean(context.getString(R.string.temp_advanced_unlock_enable_key),
|
||||||
|
context.resources.getBoolean(R.bool.temp_advanced_unlock_enable_default))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isAdvancedUnlockPromptAutoOpenEnable(context: Context): Boolean {
|
||||||
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
|
||||||
return prefs.getBoolean(context.getString(R.string.biometric_auto_open_prompt_key),
|
return prefs.getBoolean(context.getString(R.string.biometric_auto_open_prompt_key),
|
||||||
context.resources.getBoolean(R.bool.biometric_auto_open_prompt_default))
|
context.resources.getBoolean(R.bool.biometric_auto_open_prompt_default))
|
||||||
|
|||||||
@@ -77,13 +77,15 @@ class LockReceiver(var lockAction: () -> Unit) : BroadcastReceiver() {
|
|||||||
cancelLockPendingIntent(context)
|
cancelLockPendingIntent(context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOCK_ACTION,
|
LOCK_ACTION -> {
|
||||||
REMOVE_ENTRY_MAGIKEYBOARD_ACTION -> {
|
|
||||||
lockAction.invoke()
|
lockAction.invoke()
|
||||||
if (PreferencesUtil.isKeyboardPreviousLockEnable(context)) {
|
if (PreferencesUtil.isKeyboardPreviousLockEnable(context)) {
|
||||||
backToPreviousKeyboardAction?.invoke()
|
backToPreviousKeyboardAction?.invoke()
|
||||||
} else {}
|
} else {}
|
||||||
}
|
}
|
||||||
|
REMOVE_ENTRY_MAGIKEYBOARD_ACTION -> {
|
||||||
|
lockAction.invoke()
|
||||||
|
}
|
||||||
BACK_PREVIOUS_KEYBOARD_ACTION -> {
|
BACK_PREVIOUS_KEYBOARD_ACTION -> {
|
||||||
backToPreviousKeyboardAction?.invoke()
|
backToPreviousKeyboardAction?.invoke()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,10 +27,12 @@ import android.view.View
|
|||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import com.kunzisoft.keepass.R
|
import com.kunzisoft.keepass.R
|
||||||
import com.kunzisoft.keepass.biometric.FingerPrintAnimatedVector
|
import com.kunzisoft.keepass.biometric.FingerPrintAnimatedVector
|
||||||
|
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||||
class AdvancedUnlockInfoView @JvmOverloads constructor(context: Context,
|
class AdvancedUnlockInfoView @JvmOverloads constructor(context: Context,
|
||||||
attrs: AttributeSet? = null,
|
attrs: AttributeSet? = null,
|
||||||
defStyle: Int = 0)
|
defStyle: Int = 0)
|
||||||
@@ -48,25 +50,25 @@ class AdvancedUnlockInfoView @JvmOverloads constructor(context: Context,
|
|||||||
inflater?.inflate(R.layout.view_advanced_unlock, this)
|
inflater?.inflate(R.layout.view_advanced_unlock, this)
|
||||||
|
|
||||||
unlockContainerView = findViewById(R.id.fingerprint_container)
|
unlockContainerView = findViewById(R.id.fingerprint_container)
|
||||||
|
unlockTitleTextView = findViewById(R.id.biometric_title)
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
unlockMessageTextView = findViewById(R.id.biometric_message)
|
||||||
unlockTitleTextView = findViewById(R.id.biometric_title)
|
unlockIconImageView = findViewById(R.id.biometric_image)
|
||||||
unlockMessageTextView = findViewById(R.id.biometric_message)
|
|
||||||
unlockIconImageView = findViewById(R.id.biometric_image)
|
|
||||||
// Init the fingerprint animation
|
|
||||||
unlockAnimatedVector = FingerPrintAnimatedVector(context, unlockIconImageView!!)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun startIconViewAnimation() {
|
private fun startIconViewAnimation() {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
unlockAnimatedVector?.startScan()
|
||||||
unlockAnimatedVector?.startScan()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun stopIconViewAnimation() {
|
private fun stopIconViewAnimation() {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
unlockAnimatedVector?.stopScan()
|
||||||
unlockAnimatedVector?.stopScan()
|
}
|
||||||
|
|
||||||
|
fun setIconResource(iconId: Int) {
|
||||||
|
unlockIconImageView?.setImageResource(iconId)
|
||||||
|
// Init the fingerprint animation
|
||||||
|
unlockAnimatedVector = when (iconId) {
|
||||||
|
R.drawable.fingerprint -> FingerPrintAnimatedVector(context, unlockIconImageView!!)
|
||||||
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,12 @@ import android.app.Application
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.lifecycle.AndroidViewModel
|
import androidx.lifecycle.AndroidViewModel
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
|
import com.kunzisoft.keepass.app.App
|
||||||
import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
|
import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction
|
||||||
|
import com.kunzisoft.keepass.app.database.IOActionTask
|
||||||
import com.kunzisoft.keepass.model.DatabaseFile
|
import com.kunzisoft.keepass.model.DatabaseFile
|
||||||
|
import com.kunzisoft.keepass.settings.PreferencesUtil
|
||||||
|
import com.kunzisoft.keepass.utils.UriUtil
|
||||||
|
|
||||||
class DatabaseFileViewModel(application: Application) : AndroidViewModel(application) {
|
class DatabaseFileViewModel(application: Application) : AndroidViewModel(application) {
|
||||||
|
|
||||||
@@ -15,6 +19,33 @@ class DatabaseFileViewModel(application: Application) : AndroidViewModel(applica
|
|||||||
mFileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(application.applicationContext)
|
mFileDatabaseHistoryAction = FileDatabaseHistoryAction.getInstance(application.applicationContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val isDefaultDatabase: MutableLiveData<Boolean> by lazy {
|
||||||
|
MutableLiveData<Boolean>()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun checkIfIsDefaultDatabase(databaseUri: Uri) {
|
||||||
|
IOActionTask(
|
||||||
|
{
|
||||||
|
(UriUtil.parse(PreferencesUtil.getDefaultDatabasePath(getApplication<App>().applicationContext))
|
||||||
|
== databaseUri)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
isDefaultDatabase.value = it
|
||||||
|
}
|
||||||
|
).execute()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun removeDefaultDatabase() {
|
||||||
|
IOActionTask(
|
||||||
|
{
|
||||||
|
PreferencesUtil.saveDefaultDatabasePath(getApplication<App>().applicationContext,
|
||||||
|
null)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
}
|
||||||
|
).execute()
|
||||||
|
}
|
||||||
|
|
||||||
val databaseFileLoaded: MutableLiveData<DatabaseFile> by lazy {
|
val databaseFileLoaded: MutableLiveData<DatabaseFile> by lazy {
|
||||||
MutableLiveData<DatabaseFile>()
|
MutableLiveData<DatabaseFile>()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.kunzisoft.keepass.viewmodels
|
package com.kunzisoft.keepass.viewmodels
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.app.backup.BackupManager
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import androidx.lifecycle.AndroidViewModel
|
import androidx.lifecycle.AndroidViewModel
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
@@ -42,11 +41,8 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic
|
|||||||
fun setDefaultDatabase(databaseFile: DatabaseFile?) {
|
fun setDefaultDatabase(databaseFile: DatabaseFile?) {
|
||||||
IOActionTask(
|
IOActionTask(
|
||||||
{
|
{
|
||||||
val context = getApplication<App>().applicationContext
|
PreferencesUtil.saveDefaultDatabasePath(getApplication<App>().applicationContext,
|
||||||
UriUtil.parse(PreferencesUtil.getDefaultDatabasePath(context))
|
databaseFile?.databaseUri)
|
||||||
PreferencesUtil.saveDefaultDatabasePath(context, databaseFile?.databaseUri)
|
|
||||||
val backupManager = BackupManager(context)
|
|
||||||
backupManager.dataChanged()
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
checkDefaultDatabase()
|
checkDefaultDatabase()
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ void throwExceptionF(JNIEnv *env, jclass exception, const char *format, ...) {
|
|||||||
|
|
||||||
JNIEXPORT jbyteArray
|
JNIEXPORT jbyteArray
|
||||||
JNICALL Java_com_kunzisoft_keepass_crypto_keyDerivation_Argon2Native_nTransformMasterKey(JNIEnv *env,
|
JNICALL Java_com_kunzisoft_keepass_crypto_keyDerivation_Argon2Native_nTransformMasterKey(JNIEnv *env,
|
||||||
jobject this, jbyteArray password, jbyteArray salt, jint parallelism, jint memory,
|
jobject this, jint type, jbyteArray password, jbyteArray salt, jint parallelism, jint memory,
|
||||||
jint iterations, jbyteArray secretKey, jbyteArray associatedData, jint version) {
|
jint iterations, jbyteArray secretKey, jbyteArray associatedData, jint version) {
|
||||||
|
|
||||||
argon2_context context;
|
argon2_context context;
|
||||||
@@ -169,7 +169,7 @@ JNICALL Java_com_kunzisoft_keepass_crypto_keyDerivation_Argon2Native_nTransformM
|
|||||||
context.flags = ARGON2_DEFAULT_FLAGS;
|
context.flags = ARGON2_DEFAULT_FLAGS;
|
||||||
context.version = (uint32_t) version;
|
context.version = (uint32_t) version;
|
||||||
|
|
||||||
int argonResult = argon2_ctx(&context, Argon2_d);
|
int argonResult = argon2_ctx(&context, (argon2_type) type);
|
||||||
|
|
||||||
jbyteArray result;
|
jbyteArray result;
|
||||||
if (argonResult != ARGON2_OK) {
|
if (argonResult != ARGON2_OK) {
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
const char *argon2_type2string(argon2_type type, int uppercase) {
|
const char *argon2_type2string(argon2_type type, int uppercase) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
default:
|
||||||
case Argon2_d:
|
case Argon2_d:
|
||||||
return uppercase ? "Argon2d" : "argon2d";
|
return uppercase ? "Argon2d" : "argon2d";
|
||||||
case Argon2_i:
|
case Argon2_i:
|
||||||
|
|||||||
@@ -473,7 +473,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_kunzisoft_keepass_crypto_finalkey_NativeAE
|
|||||||
(*env)->GetByteArrayRegion(env, seed, 0, MASTER_KEY_SIZE, (jbyte *)mk.c_seed);
|
(*env)->GetByteArrayRegion(env, seed, 0, MASTER_KEY_SIZE, (jbyte *)mk.c_seed);
|
||||||
(*env)->GetByteArrayRegion(env, key, 0, MASTER_KEY_SIZE, (jbyte *)mk.key1);
|
(*env)->GetByteArrayRegion(env, key, 0, MASTER_KEY_SIZE, (jbyte *)mk.key1);
|
||||||
|
|
||||||
// step 2: encrypt the hash "rounds" (default: 6000) times
|
// step 2: encrypt the hash "rounds"
|
||||||
iret = pthread_create( &t1, NULL, (void*)generate_key_material, (void*)&mk );
|
iret = pthread_create( &t1, NULL, (void*)generate_key_material, (void*)&mk );
|
||||||
if( iret != 0 ) {
|
if( iret != 0 ) {
|
||||||
(*env)->ThrowNew(env, bad_arg, "TransformMasterKey: failed to launch thread 1"); // FIXME: get a better exception class for this...
|
(*env)->ThrowNew(env, bad_arg, "TransformMasterKey: failed to launch thread 1"); // FIXME: get a better exception class for this...
|
||||||
|
|||||||
13
app/src/main/res/drawable-v23/bolt.xml
Normal file
13
app/src/main/res/drawable-v23/bolt.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="@dimen/advanced_unlock_size"
|
||||||
|
android:height="@dimen/advanced_unlock_size"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<group>
|
||||||
|
<path
|
||||||
|
android:fillColor="#fffbfb"
|
||||||
|
android:strokeWidth="1"
|
||||||
|
android:pathData="M 13 4 L 8 13 L 11.777344 13 L 11 20 L 16 11 L 12.222656 11 L 13 4 z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:width="@dimen/fingerprint_width"
|
android:width="@dimen/advanced_unlock_size"
|
||||||
android:height="@dimen/fingerprint_height"
|
android:height="@dimen/advanced_unlock_size"
|
||||||
android:viewportWidth="@integer/fingerprint_viewport_width"
|
android:viewportWidth="@integer/fingerprint_viewport_width"
|
||||||
android:viewportHeight="@integer/fingerprint_viewport_height">
|
android:viewportHeight="@integer/fingerprint_viewport_height">
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,8 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:width="@dimen/fingerprint_width"
|
android:width="@dimen/advanced_unlock_size"
|
||||||
android:height="@dimen/fingerprint_height"
|
android:height="@dimen/advanced_unlock_size"
|
||||||
android:viewportWidth="@integer/fingerprint_viewport_width"
|
android:viewportWidth="@integer/fingerprint_viewport_width"
|
||||||
android:viewportHeight="@integer/fingerprint_viewport_height">
|
android:viewportHeight="@integer/fingerprint_viewport_height">
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:viewportWidth="24"
|
|
||||||
android:viewportHeight="24">
|
|
||||||
|
|
||||||
<group>
|
|
||||||
<group>
|
|
||||||
<path
|
|
||||||
android:fillColor="#f5f0f0"
|
|
||||||
android:strokeWidth="1"
|
|
||||||
android:pathData="M 12.099609 2 C 9.9496186 2 7.9107813 2.5192969 6.0507812 3.5292969 C 5.8107813 3.6592969 5.7196538 3.9709375 5.8496094 4.2109375 C 5.9896094 4.4509375 6.2892969 4.5401474 6.5292969 4.4101562 C 8.239288 3.4701563 10.119609 3 12.099609 3 C 13.817565 3 15.298631 3.3380125 16.904297 4.0605469 L 17.658203 3.3066406 C 15.801889 2.4224054 14.062357 2 12.099609 2 z M 20.630859 2.7929688 C 20.353595 2.7923499 20.076963 2.8957023 19.869141 3.1035156 L 3.6054688 19.367188 C 3.1898243 19.782837 3.1898065 20.478878 3.6054688 20.894531 C 4.0211132 21.310172 4.7171681 21.310181 5.1328125 20.894531 L 21.396484 4.6308594 C 21.812129 4.2152078 21.809482 3.5211096 21.394531 3.1054688 C 21.1867 2.8976421 20.908124 2.7935876 20.630859 2.7929688 z M 12.082031 4.4394531 C 10.290782 4.4419476 8.4996875 4.8501572 6.9296875 5.6601562 C 5.4296875 6.4301563 4.1696964 7.5296875 3.1796875 8.9296875 C 3.0196875 9.1596875 3.0707902 9.4708594 3.3007812 9.6308594 C 3.3907901 9.6908772 3.4897549 9.7207031 3.5898438 9.7207031 C 3.7498437 9.7207031 3.9004687 9.6497656 3.9804688 9.5097656 C 4.8804687 8.2497656 6.0208594 7.2507813 7.3808594 6.5507812 C 9.702879 5.3492128 12.551839 5.1405673 15.080078 5.8847656 L 15.886719 5.078125 C 14.672134 4.6548553 13.378189 4.4376481 12.082031 4.4394531 z M 12.050781 6.8203125 C 8.8207726 6.8203125 5.8690714 8.6299217 4.5390625 11.419922 C 4.0890714 12.369922 3.859375 13.460156 3.859375 14.660156 C 3.859375 15.410156 3.9419325 16.143623 4.0917969 16.873047 L 4.9453125 16.019531 C 4.8716574 15.480855 4.8496094 15.017564 4.8496094 14.660156 C 4.8496094 13.620156 5.049462 12.669375 5.4394531 11.859375 C 6.609462 9.409375 9.2107815 7.8300781 12.050781 7.8300781 C 12.394543 7.8300781 12.729451 7.8605876 13.060547 7.9042969 L 13.931641 7.0332031 C 13.326222 6.8985547 12.698935 6.8203125 12.050781 6.8203125 z M 20.158203 7.8769531 L 19.451172 8.5859375 C 19.705703 8.8667188 19.944922 9.1654687 20.169922 9.4804688 C 20.329922 9.7104775 20.639132 9.7596094 20.869141 9.5996094 C 21.099185 9.4396094 21.150234 9.1203906 20.990234 8.9003906 C 20.732029 8.5378633 20.452607 8.1983122 20.158203 7.8769531 z M 11.673828 9.2910156 C 8.7939582 9.4920753 6.5090655 11.751686 6.4375 14.527344 L 7.6914062 13.273438 C 8.128702 12.047606 9.1093977 11.060938 10.378906 10.585938 L 11.673828 9.2910156 z M 18.388672 9.6464844 L 17.675781 10.359375 C 18.68916 11.534094 19.300781 13.029838 19.300781 14.660156 C 19.300781 15.730156 18.370712 16.599609 17.220703 16.599609 C 16.070712 16.599609 15.140625 15.730156 15.140625 14.660156 C 15.140625 14.156975 14.994276 13.690121 14.759766 13.275391 L 14.017578 14.017578 C 14.091568 14.216693 14.140625 14.427975 14.140625 14.650391 C 14.140625 16.270391 15.520703 17.589844 17.220703 17.589844 C 18.920703 17.589844 20.300781 16.270391 20.300781 14.650391 C 20.300781 12.747816 19.580533 11.0042 18.388672 9.6464844 z M 16.607422 11.427734 L 15.894531 12.140625 C 16.429255 12.855101 16.75 13.721687 16.75 14.660156 C 16.75 14.940156 16.97 15.160156 17.25 15.160156 C 17.53 15.160156 17.75 14.940156 17.75 14.660156 C 17.75 13.447471 17.320928 12.329733 16.607422 11.427734 z M 12.609375 15.425781 L 11.791016 16.244141 C 12.154172 17.361118 12.886314 18.356772 13.910156 19.050781 C 14.770156 19.640781 15.819757 19.939453 17.009766 19.939453 C 17.149766 19.939453 17.650712 19.930321 18.220703 19.820312 C 18.500756 19.770313 18.680815 19.510234 18.630859 19.240234 C 18.58085 18.960243 18.320772 18.780087 18.050781 18.830078 C 17.650781 18.900087 17.249766 18.929687 17.009766 18.929688 C 16.009766 18.929688 15.180694 18.700703 14.470703 18.220703 C 13.475364 17.551704 12.819631 16.540198 12.609375 15.425781 z M 10.615234 17.419922 L 9.8652344 18.169922 C 10.203152 18.79111 10.634087 19.368244 11.150391 19.880859 C 12.240382 20.950859 13.279132 21.540469 14.869141 21.980469 C 14.909141 21.990513 14.96 22 15 22 C 15.210009 22 15.420748 21.849141 15.470703 21.619141 C 15.540694 21.359141 15.38915 21.079757 15.119141 21.009766 C 13.709149 20.619766 12.7996 20.100156 11.849609 19.160156 C 11.332157 18.646984 10.922915 18.056717 10.615234 17.419922 z M 8.796875 19.238281 L 8.0703125 19.964844 C 8.484727 20.580638 8.8928845 21.043281 9.4902344 21.640625 C 9.5802255 21.740643 9.7098882 21.789062 9.8398438 21.789062 C 9.9698525 21.789062 10.100893 21.740625 10.210938 21.640625 C 10.400928 21.440625 10.400928 21.129687 10.210938 20.929688 C 9.6271185 20.338294 9.2322832 19.910321 8.796875 19.238281 z" />
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
</vector>
|
|
||||||
13
app/src/main/res/drawable/ic_keystore_remove_white_24dp.xml
Normal file
13
app/src/main/res/drawable/ic_keystore_remove_white_24dp.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<group>
|
||||||
|
<path
|
||||||
|
android:fillColor="#ffffff"
|
||||||
|
android:strokeWidth="1"
|
||||||
|
android:pathData="M 20.630859 2.7929688 C 20.353595 2.7923499 20.076963 2.8957023 19.869141 3.1035156 L 3.6054688 19.367188 C 3.1898243 19.782836 3.1898065 20.478878 3.6054688 20.894531 C 4.0211131 21.310172 4.7171681 21.310181 5.1328125 20.894531 L 21.396484 4.6308594 C 21.812129 4.2152078 21.809529 3.5211095 21.394531 3.1054688 C 21.1867 2.8976421 20.908124 2.7935875 20.630859 2.7929688 z M 7.3476562 7.0878906 C 5.9187852 7.0878906 4.6995509 7.5934125 3.6894531 8.6035156 C 2.6793376 9.613617 2.1738281 10.832842 2.1738281 12.261719 C 2.1738281 13.690597 2.6793376 14.909822 3.6894531 15.919922 C 3.9044307 16.134901 4.1332804 16.315077 4.3671875 16.484375 L 6.9179688 13.933594 C 6.6374532 13.856562 6.382535 13.708063 6.15625 13.472656 C 5.8188811 13.121739 5.6484375 12.715365 5.6484375 12.257812 C 5.6484375 11.798322 5.8188633 11.395839 6.15625 11.044922 C 6.4935833 10.694003 6.8901097 10.519531 7.3476562 10.519531 C 7.8071585 10.519531 8.2115844 10.69399 8.5625 11.044922 C 8.7983688 11.280792 8.9465641 11.543693 9.0234375 11.828125 L 11.59375 9.2578125 C 11.268148 8.7936982 10.868281 8.3824011 10.380859 8.0351562 C 9.4909753 7.4011759 8.4799229 7.0878906 7.3476562 7.0878906 z M 17.626953 10.521484 L 14.148438 14 L 16 14 L 16 17.433594 L 19.435547 17.433594 L 19.435547 13.998047 L 21.173828 13.998047 L 21.173828 10.521484 L 17.626953 10.521484 z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
|
||||||
|
<group>
|
||||||
|
<path
|
||||||
|
android:fillColor="#ffffff"
|
||||||
|
android:strokeWidth="1"
|
||||||
|
android:pathData="M 13 2 L 8 11 L 11.777344 11 L 11.427734 14.140625 C 11.493169 14.182534 11.563348 14.214452 11.626953 14.259766 C 11.988993 14.517689 12.304 14.824694 12.576172 15.164062 L 16 9 L 12.222656 9 L 13 2 z M 8.8125 14.375 C 7.7596432 14.375 6.861473 14.747902 6.1171875 15.492188 C 5.372902 16.236473 5 17.134643 5 18.1875 C 5 19.240357 5.372902 20.138527 6.1171875 20.882812 C 6.861473 21.627098 7.7596432 22 8.8125 22 C 9.6467855 22 10.391161 21.767924 11.046875 21.300781 C 11.702589 20.835067 12.159397 20.223035 12.417969 19.46875 L 15.1875 19.46875 L 15.1875 21.998047 L 17.71875 21.998047 L 17.71875 19.466797 L 19 19.466797 L 19 16.90625 L 12.417969 16.90625 C 12.159397 16.151965 11.702589 15.541361 11.046875 15.074219 C 10.391161 14.607076 9.6467855 14.375 8.8125 14.375 z M 8.8125 16.904297 C 9.1510713 16.904297 9.4484599 17.032444 9.7070312 17.291016 C 9.9656026 17.549587 10.09375 17.848404 10.09375 18.185547 C 10.09375 18.524118 9.9656026 18.821507 9.7070312 19.080078 C 9.4484599 19.338649 9.1496428 19.466797 8.8125 19.466797 C 8.4753572 19.466797 8.1821651 19.338649 7.9335938 19.080078 C 7.6850224 18.821507 7.5605469 18.52269 7.5605469 18.185547 C 7.5605469 17.846976 7.6850224 17.549587 7.9335938 17.291016 C 8.1821651 17.032444 8.4753572 16.904297 8.8125 16.904297 z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
|
||||||
|
<group>
|
||||||
|
<path
|
||||||
|
android:fillColor="#ffffff"
|
||||||
|
android:strokeWidth="4"
|
||||||
|
android:pathData="M 12.013672 2 C 9.8636722 2 7.8228902 2.5192969 5.9628906 3.5292969 C 5.7228906 3.6592969 5.6336719 3.9709375 5.7636719 4.2109375 C 5.9036719 4.4509375 6.2033598 4.5401564 6.4433594 4.4101562 C 8.1533594 3.4701563 10.033672 3 12.013672 3 C 14.003672 3 15.663984 3.4201562 17.583984 4.4101562 C 17.653984 4.4501563 17.7325 4.4707031 17.8125 4.4707031 C 17.9925 4.4707031 18.163906 4.3694531 18.253906 4.1894531 C 18.383906 3.9494531 18.292966 3.6495314 18.042969 3.5195312 C 16.002969 2.4695312 14.143672 2 12.013672 2 z M 11.994141 4.4394531 C 10.202891 4.4419531 8.41375 4.8501563 6.84375 5.6601562 C 5.3437504 6.4301562 4.08375 7.5296875 3.09375 8.9296875 C 2.93375 9.1596875 2.9828906 9.4708594 3.2128906 9.6308594 C 3.3028906 9.6908594 3.4039062 9.7207031 3.5039062 9.7207031 C 3.6639063 9.7207031 3.8125781 9.6497661 3.8925781 9.5097656 C 4.7925781 8.2497656 5.9329691 7.2507813 7.2929688 6.5507812 C 10.152968 5.0707812 13.823359 5.0690628 16.693359 6.5390625 C 18.043359 7.2290625 19.183984 8.2204686 20.083984 9.4804688 C 20.243984 9.7104688 20.553203 9.7596094 20.783203 9.5996094 C 21.013203 9.4396094 21.062344 9.1203906 20.902344 8.9003906 C 19.912344 7.5103906 18.652344 6.4203906 17.152344 5.6503906 C 15.577344 4.8403906 13.785391 4.4369531 11.994141 4.4394531 z M 11.962891 6.8203125 C 8.7328906 6.8203125 5.783125 8.6299218 4.453125 11.419922 C 4.003125 12.369922 3.7734375 13.460156 3.7734375 14.660156 C 3.7734375 15.178762 3.8211765 15.688064 3.8925781 16.195312 C 4.1040664 15.673217 4.3977156 15.185736 4.765625 14.751953 C 4.7654412 14.724103 4.7636719 14.686946 4.7636719 14.660156 C 4.7636719 13.620156 4.9635156 12.669375 5.3535156 11.859375 C 6.5235152 9.409375 9.1228906 7.8300781 11.962891 7.8300781 C 15.962891 7.8300781 19.212891 10.890156 19.212891 14.660156 C 19.212891 14.924852 19.155811 15.176176 19.052734 15.40625 L 20.097656 15.40625 C 20.165726 15.163649 20.212891 14.913124 20.212891 14.650391 C 20.212891 10.330391 16.512891 6.8203125 11.962891 6.8203125 z M 12.003906 9.2695312 C 9.3367169 9.2695312 7.098881 11.041343 6.5039062 13.410156 C 6.8827574 13.227092 7.280825 13.087302 7.6933594 12.998047 C 8.3905548 11.400109 10.058802 10.269531 12.003906 10.269531 C 14.573906 10.269531 16.664062 12.240156 16.664062 14.660156 C 16.664062 14.940156 16.884062 15.160156 17.164062 15.160156 C 17.444063 15.160156 17.664062 14.940156 17.664062 14.660156 C 17.664062 11.690156 15.123906 9.2695312 12.003906 9.2695312 z M 11.972656 11.720703 C 10.954724 11.720703 10.058942 12.198213 9.4980469 12.925781 C 9.880498 12.973891 10.253824 13.064358 10.615234 13.191406 C 10.980214 12.895424 11.45052 12.710937 11.972656 12.710938 C 13.122656 12.710938 14.052734 13.580391 14.052734 14.650391 C 14.052734 14.913124 14.099894 15.163649 14.167969 15.40625 L 15.214844 15.40625 C 15.111767 15.176176 15.052734 14.924852 15.052734 14.660156 C 15.052734 13.040156 13.672656 11.720703 11.972656 11.720703 z M 8.8125 14.375 C 7.7596432 14.375 6.861473 14.747902 6.1171875 15.492188 C 5.372902 16.236473 5 17.134643 5 18.1875 C 5 19.240357 5.372902 20.138527 6.1171875 20.882812 C 6.861473 21.627098 7.7596432 22 8.8125 22 C 9.6467855 22 10.391161 21.767924 11.046875 21.300781 C 11.702589 20.835067 12.159397 20.223035 12.417969 19.46875 L 15.1875 19.46875 L 15.1875 21.998047 L 17.71875 21.998047 L 17.71875 19.466797 L 19 19.466797 L 19 16.90625 L 12.417969 16.90625 C 12.159397 16.151965 11.702589 15.541361 11.046875 15.074219 C 10.391161 14.607076 9.6467855 14.375 8.8125 14.375 z M 8.8125 16.904297 C 9.1510713 16.904297 9.4484599 17.032444 9.7070312 17.291016 C 9.9656026 17.549587 10.09375 17.848404 10.09375 18.185547 C 10.09375 18.524118 9.9656026 18.821507 9.7070312 19.080078 C 9.4484599 19.338649 9.1496428 19.466797 8.8125 19.466797 C 8.4753572 19.466797 8.1821651 19.338649 7.9335938 19.080078 C 7.6850224 18.821507 7.5605469 18.52269 7.5605469 18.185547 C 7.5605469 17.846976 7.6850224 17.549587 7.9335938 17.291016 C 8.1821651 17.032444 8.4753572 16.904297 8.8125 16.904297 z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
13
app/src/main/res/drawable/prefs_bolt_24dp.xml
Normal file
13
app/src/main/res/drawable/prefs_bolt_24dp.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24"
|
||||||
|
android:viewportHeight="24">
|
||||||
|
<group>
|
||||||
|
<path
|
||||||
|
android:fillColor="#7D7D7D"
|
||||||
|
android:strokeWidth="1"
|
||||||
|
android:pathData="M 13 4 L 8 13 L 11.777344 13 L 11 20 L 16 11 L 12.222656 11 L 13 4 z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="24dp"
|
|
||||||
android:height="24dp"
|
|
||||||
android:viewportWidth="24.0"
|
|
||||||
android:viewportHeight="24.0">
|
|
||||||
<path
|
|
||||||
android:fillColor="#7D7D7D"
|
|
||||||
android:pathData="M17.81,4.47c-0.08,0 -0.16,-0.02 -0.23,-0.06C15.66,3.42 14,3 12.01,3c-1.98,0 -3.86,0.47 -5.57,1.41 -0.24,0.13 -0.54,0.04 -0.68,-0.2 -0.13,-0.24 -0.04,-0.55 0.2,-0.68C7.82,2.52 9.86,2 12.01,2c2.13,0 3.99,0.47 6.03,1.52 0.25,0.13 0.34,0.43 0.21,0.67 -0.09,0.18 -0.26,0.28 -0.44,0.28zM3.5,9.72c-0.1,0 -0.2,-0.03 -0.29,-0.09 -0.23,-0.16 -0.28,-0.47 -0.12,-0.7 0.99,-1.4 2.25,-2.5 3.75,-3.27C9.98,4.04 14,4.03 17.15,5.65c1.5,0.77 2.76,1.86 3.75,3.25 0.16,0.22 0.11,0.54 -0.12,0.7 -0.23,0.16 -0.54,0.11 -0.7,-0.12 -0.9,-1.26 -2.04,-2.25 -3.39,-2.94 -2.87,-1.47 -6.54,-1.47 -9.4,0.01 -1.36,0.7 -2.5,1.7 -3.4,2.96 -0.08,0.14 -0.23,0.21 -0.39,0.21zM9.75,21.79c-0.13,0 -0.26,-0.05 -0.35,-0.15 -0.87,-0.87 -1.34,-1.43 -2.01,-2.64 -0.69,-1.23 -1.05,-2.73 -1.05,-4.34 0,-2.97 2.54,-5.39 5.66,-5.39s5.66,2.42 5.66,5.39c0,0.28 -0.22,0.5 -0.5,0.5s-0.5,-0.22 -0.5,-0.5c0,-2.42 -2.09,-4.39 -4.66,-4.39 -2.57,0 -4.66,1.97 -4.66,4.39 0,1.44 0.32,2.77 0.93,3.85 0.64,1.15 1.08,1.64 1.85,2.42 0.19,0.2 0.19,0.51 0,0.71 -0.11,0.1 -0.24,0.15 -0.37,0.15zM16.92,19.94c-1.19,0 -2.24,-0.3 -3.1,-0.89 -1.49,-1.01 -2.38,-2.65 -2.38,-4.39 0,-0.28 0.22,-0.5 0.5,-0.5s0.5,0.22 0.5,0.5c0,1.41 0.72,2.74 1.94,3.56 0.71,0.48 1.54,0.71 2.54,0.71 0.24,0 0.64,-0.03 1.04,-0.1 0.27,-0.05 0.53,0.13 0.58,0.41 0.05,0.27 -0.13,0.53 -0.41,0.58 -0.57,0.11 -1.07,0.12 -1.21,0.12zM14.91,22c-0.04,0 -0.09,-0.01 -0.13,-0.02 -1.59,-0.44 -2.63,-1.03 -3.72,-2.1 -1.4,-1.39 -2.17,-3.24 -2.17,-5.22 0,-1.62 1.38,-2.94 3.08,-2.94 1.7,0 3.08,1.32 3.08,2.94 0,1.07 0.93,1.94 2.08,1.94s2.08,-0.87 2.08,-1.94c0,-3.77 -3.25,-6.83 -7.25,-6.83 -2.84,0 -5.44,1.58 -6.61,4.03 -0.39,0.81 -0.59,1.76 -0.59,2.8 0,0.78 0.07,2.01 0.67,3.61 0.1,0.26 -0.03,0.55 -0.29,0.64 -0.26,0.1 -0.55,-0.04 -0.64,-0.29 -0.49,-1.31 -0.73,-2.61 -0.73,-3.96 0,-1.2 0.23,-2.29 0.68,-3.24 1.33,-2.79 4.28,-4.6 7.51,-4.6 4.55,0 8.25,3.51 8.25,7.83 0,1.62 -1.38,2.94 -3.08,2.94s-3.08,-1.32 -3.08,-2.94c0,-1.07 -0.93,-1.94 -2.08,-1.94s-2.08,0.87 -2.08,1.94c0,1.71 0.66,3.31 1.87,4.51 0.95,0.94 1.86,1.46 3.27,1.85 0.27,0.07 0.42,0.35 0.35,0.61 -0.05,0.23 -0.26,0.38 -0.47,0.38z" />
|
|
||||||
</vector>
|
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/biometric_message"
|
app:layout_constraintBottom_toTopOf="@+id/biometric_message"
|
||||||
tools:text="@string/biometric_prompt_store_credential_title"
|
tools:text="@string/advanced_unlock_prompt_store_credential_title"
|
||||||
style="@style/KeepassDXStyle.TextAppearance.Default.TextOnPrimary"
|
style="@style/KeepassDXStyle.TextAppearance.Default.TextOnPrimary"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:gravity="center" />
|
android:gravity="center" />
|
||||||
|
|||||||
@@ -119,7 +119,8 @@
|
|||||||
android:layout_marginStart="@dimen/image_list_margin"
|
android:layout_marginStart="@dimen/image_list_margin"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:text="@string/root"
|
android:text="@string/root"
|
||||||
android:maxLines="1"
|
android:maxLines="2"
|
||||||
|
android:ellipsize="end"
|
||||||
style="@style/KeepassDXStyle.TextAppearance.Title.TextOnPrimary" />
|
style="@style/KeepassDXStyle.TextAppearance.Title.TextOnPrimary" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@@ -67,6 +67,8 @@
|
|||||||
style="@style/KeepassDXStyle.ImageButton.Simple"
|
style="@style/KeepassDXStyle.ImageButton.Simple"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
android:contentDescription="@string/menu_copy"
|
android:contentDescription="@string/menu_copy"
|
||||||
|
|||||||
@@ -38,6 +38,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
android:maxLines="2"
|
||||||
|
android:ellipsize="end"
|
||||||
android:paddingRight="12dp"
|
android:paddingRight="12dp"
|
||||||
android:paddingEnd="12dp"
|
android:paddingEnd="12dp"
|
||||||
android:paddingLeft="0dp"
|
android:paddingLeft="0dp"
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/windowBackground"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
android:elevation="8dp">
|
android:elevation="8dp">
|
||||||
<androidx.appcompat.widget.AppCompatEditText
|
<androidx.appcompat.widget.AppCompatEditText
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/file_alias_save"
|
app:layout_constraintEnd_toStartOf="@+id/file_alias_save"
|
||||||
android:textColor="?attr/textColorInverse"
|
android:textColor="?android:attr/textColor"
|
||||||
tools:text="DatabaseAlias" />
|
tools:text="DatabaseAlias" />
|
||||||
<androidx.appcompat.widget.AppCompatImageButton
|
<androidx.appcompat.widget.AppCompatImageButton
|
||||||
android:id="@+id/file_alias_save"
|
android:id="@+id/file_alias_save"
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
android:src="@drawable/ic_save_white_24dp"
|
android:src="@drawable/ic_save_white_24dp"
|
||||||
android:contentDescription="@string/content_description_file_information"
|
android:contentDescription="@string/content_description_file_information"
|
||||||
style="@style/KeepassDXStyle.ImageButton.Simple.Secondary"/>
|
style="@style/KeepassDXStyle.ImageButton.Simple"/>
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</ViewSwitcher>
|
</ViewSwitcher>
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,8 @@
|
|||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/entry_history_username"
|
app:layout_constraintEnd_toStartOf="@+id/entry_history_username"
|
||||||
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem"
|
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem"
|
||||||
|
android:maxLines="6"
|
||||||
|
android:ellipsize="end"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
@@ -58,6 +60,8 @@
|
|||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/entry_history_url"
|
app:layout_constraintEnd_toStartOf="@+id/entry_history_url"
|
||||||
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem"
|
style="@style/KeepassDXStyle.TextAppearance.TextEntryItem"
|
||||||
|
android:maxLines="6"
|
||||||
|
android:ellipsize="end"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
|||||||
@@ -71,8 +71,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
tools:text="Node Title"
|
tools:text="Node Title"
|
||||||
android:lines="1"
|
android:maxLines="2"
|
||||||
android:singleLine="true"
|
android:ellipsize="end"
|
||||||
style="@style/KeepassDXStyle.TextAppearance.Entry.Title" />
|
style="@style/KeepassDXStyle.TextAppearance.Entry.Title" />
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/node_subtext"
|
android:id="@+id/node_subtext"
|
||||||
|
|||||||
@@ -87,8 +87,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
tools:text="Node Title"
|
tools:text="Node Title"
|
||||||
android:lines="1"
|
android:maxLines="2"
|
||||||
android:singleLine="true"
|
android:ellipsize="end"
|
||||||
style="@style/KeepassDXStyle.TextAppearance.Group.Title" />
|
style="@style/KeepassDXStyle.TextAppearance.Group.Title" />
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:id="@+id/node_subtext"
|
android:id="@+id/node_subtext"
|
||||||
|
|||||||
@@ -22,17 +22,20 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
|
android:paddingTop="3dp"
|
||||||
|
android:paddingBottom="3dp"
|
||||||
android:minHeight="32dp"
|
android:minHeight="32dp"
|
||||||
android:background="?attr/colorPrimary" >
|
android:background="?attr/colorPrimary" >
|
||||||
<androidx.appcompat.widget.AppCompatImageView android:id="@+id/entry_icon"
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/entry_icon"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:layout_marginBottom="4dp"
|
android:layout_marginBottom="4dp"
|
||||||
android:layout_marginLeft="@dimen/default_margin"
|
android:layout_marginLeft="8dp"
|
||||||
android:layout_marginStart="@dimen/default_margin"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_marginRight="@dimen/default_margin"
|
android:layout_marginRight="8dp"
|
||||||
android:layout_marginEnd="@dimen/default_margin"
|
android:layout_marginEnd="8dp"
|
||||||
android:scaleType="fitXY"
|
android:scaleType="fitXY"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_alignParentLeft="true"
|
android:layout_alignParentLeft="true"
|
||||||
@@ -41,25 +44,31 @@
|
|||||||
android:id="@+id/entry_text"
|
android:id="@+id/entry_text"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:lines="1"
|
android:maxLines="2"
|
||||||
android:singleLine="true"
|
android:ellipsize="end"
|
||||||
|
android:layout_marginRight="6dp"
|
||||||
|
android:layout_marginEnd="6dp"
|
||||||
style="@style/KeepassDXStyle.TextAppearance.Default.TextOnPrimary"
|
style="@style/KeepassDXStyle.TextAppearance.Default.TextOnPrimary"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:layout_centerVertical="true"
|
android:layout_alignParentTop="true"
|
||||||
android:layout_toRightOf="@+id/entry_icon"
|
android:layout_toRightOf="@+id/entry_icon"
|
||||||
android:layout_toEndOf="@+id/entry_icon" />
|
android:layout_toEndOf="@+id/entry_icon"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_alignParentEnd="true" />
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/entry_subtext"
|
android:id="@+id/entry_subtext"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:layout_marginLeft="6dp"
|
android:layout_marginLeft="-6dp"
|
||||||
android:layout_marginStart="6dp"
|
android:layout_marginStart="-6dp"
|
||||||
|
android:layout_marginRight="6dp"
|
||||||
|
android:layout_marginEnd="6dp"
|
||||||
style="@style/KeepassDXStyle.TextAppearance.Secondary.TextOnPrimary"
|
style="@style/KeepassDXStyle.TextAppearance.Secondary.TextOnPrimary"
|
||||||
android:layout_centerVertical="true"
|
android:layout_below="@+id/entry_text"
|
||||||
|
android:layout_toRightOf="@+id/entry_icon"
|
||||||
|
android:layout_toEndOf="@+id/entry_icon"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true" />
|
||||||
android:layout_toRightOf="@+id/entry_text"
|
|
||||||
android:layout_toEndOf="@+id/entry_text" />
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@@ -19,9 +19,9 @@
|
|||||||
-->
|
-->
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<item android:id="@+id/menu_biometric_remove_key"
|
<item android:id="@+id/menu_keystore_remove_key"
|
||||||
android:icon="@drawable/ic_fingerprint_remove_white_24dp"
|
android:icon="@drawable/ic_keystore_remove_white_24dp"
|
||||||
android:title="@string/menu_biometric_remove_key"
|
android:title="@string/menu_keystore_remove_key"
|
||||||
android:orderInCategory="85"
|
android:orderInCategory="85"
|
||||||
app:showAsAction="ifRoom" />
|
app:showAsAction="ifRoom" />
|
||||||
</menu>
|
</menu>
|
||||||
@@ -73,7 +73,6 @@
|
|||||||
<string name="menu_lock">اقفل قاعدة البيانات</string>
|
<string name="menu_lock">اقفل قاعدة البيانات</string>
|
||||||
<string name="menu_open">فتح</string>
|
<string name="menu_open">فتح</string>
|
||||||
<string name="menu_search">البحث</string>
|
<string name="menu_search">البحث</string>
|
||||||
<string name="menu_biometric_remove_key">إزالة بصمة المفتاح</string>
|
|
||||||
<string name="minus">ناقص</string>
|
<string name="minus">ناقص</string>
|
||||||
<string name="never">أبداً</string>
|
<string name="never">أبداً</string>
|
||||||
<string name="no_results">لا توجد نتائج للبحث</string>
|
<string name="no_results">لا توجد نتائج للبحث</string>
|
||||||
@@ -104,7 +103,6 @@
|
|||||||
<string name="warning_no_encryption_key">هل أنت متأكد من أنك لا تريد استخدام أي مفتاح تشفير ؟</string>
|
<string name="warning_no_encryption_key">هل أنت متأكد من أنك لا تريد استخدام أي مفتاح تشفير ؟</string>
|
||||||
<string name="version_label">الإصدار %1$s</string>
|
<string name="version_label">الإصدار %1$s</string>
|
||||||
<string name="education_new_node_title">أضف عناصر جديدة إلى قاعدتك</string>
|
<string name="education_new_node_title">أضف عناصر جديدة إلى قاعدتك</string>
|
||||||
<string name="education_biometric_title">قم بفتح قاعدة بياناتك ببصمتك</string>
|
|
||||||
<string name="education_entry_new_field_title">إضافة حقول مخصصة</string>
|
<string name="education_entry_new_field_title">إضافة حقول مخصصة</string>
|
||||||
<string name="education_field_copy_title">نسخ حقل</string>
|
<string name="education_field_copy_title">نسخ حقل</string>
|
||||||
<string name="education_lock_title">تأمين قاعدة البيانات</string>
|
<string name="education_lock_title">تأمين قاعدة البيانات</string>
|
||||||
@@ -115,7 +113,7 @@
|
|||||||
<string name="key_derivation_function">وظيفة اشتقاق المفتاح</string>
|
<string name="key_derivation_function">وظيفة اشتقاق المفتاح</string>
|
||||||
<string name="app_timeout">مهلة التطبيق</string>
|
<string name="app_timeout">مهلة التطبيق</string>
|
||||||
<string name="app_timeout_summary">مدة الانتظار قبل إقفال قاعدة البيانات</string>
|
<string name="app_timeout_summary">مدة الانتظار قبل إقفال قاعدة البيانات</string>
|
||||||
<string name="file_manager_install_description">تصفَّح الملفات بتثبيت مدير الملفات OpenIntents</string>
|
<string name="file_manager_install_description">المحرر الذي يقبل هاذا الفعل ACTION_CREATE_DOCUMENT و ACTION_OPEN_DOCUMENT ضروري لانتاج, فتح وحفض ملفات قاعدة البيانات.</string>
|
||||||
<string name="clipboard_error">بعض الأجهزة لا تسمح للتطبيقات باستعمال الحافظة.</string>
|
<string name="clipboard_error">بعض الأجهزة لا تسمح للتطبيقات باستعمال الحافظة.</string>
|
||||||
<string name="clipboard_timeout">مهلة الحافظة</string>
|
<string name="clipboard_timeout">مهلة الحافظة</string>
|
||||||
<string name="clipboard_timeout_summary">مدة التخزين في الحافظة(إذا كان جهازك يدعمها)</string>
|
<string name="clipboard_timeout_summary">مدة التخزين في الحافظة(إذا كان جهازك يدعمها)</string>
|
||||||
@@ -189,11 +187,7 @@
|
|||||||
<string name="unavailable_feature_version">نسخة الاندرويد %1$s لا تحقق ادنى متطلبات السنخة %2$s.</string>
|
<string name="unavailable_feature_version">نسخة الاندرويد %1$s لا تحقق ادنى متطلبات السنخة %2$s.</string>
|
||||||
<string name="file_name">اسم الملف</string>
|
<string name="file_name">اسم الملف</string>
|
||||||
<string name="path">مسار</string>
|
<string name="path">مسار</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">فحص البصمة</string>
|
|
||||||
<string name="biometric_invalid_key">لا يمكن قراءة مفتاح البصمة.
|
|
||||||
\nاستعد كلمة السر.</string>
|
|
||||||
<string name="biometric_not_recognized">لم يتعرّف على البصمة</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">استخدم البصمة لحفظ كلمة السر</string>
|
|
||||||
<string name="database_history">تأريخ</string>
|
<string name="database_history">تأريخ</string>
|
||||||
<string name="clipboard_notifications_summary">مكن اشعارات الحافظة لنسخ الحقول</string>
|
<string name="clipboard_notifications_summary">مكن اشعارات الحافظة لنسخ الحقول</string>
|
||||||
<string name="advanced_unlock">البصمة</string>
|
<string name="advanced_unlock">البصمة</string>
|
||||||
@@ -291,7 +285,7 @@
|
|||||||
<string name="otp_algorithm">الخوارزمية</string>
|
<string name="otp_algorithm">الخوارزمية</string>
|
||||||
<string name="otp_digits">أرقام</string>
|
<string name="otp_digits">أرقام</string>
|
||||||
<string name="otp_counter">العداد</string>
|
<string name="otp_counter">العداد</string>
|
||||||
<string name="entry_setup_otp">عين كلمة المرور للمرة الواحدة</string>
|
<string name="entry_setup_otp">كلمة المرور للمرة الواحدة</string>
|
||||||
<string name="entry_UUID">UUID</string>
|
<string name="entry_UUID">UUID</string>
|
||||||
<string name="html_about_contribution">من أجل <strong>حماية خصوصيتا</strong>٫<strong> إصلاح العلل</strong>٫ <strong>إضافة مميزات</strong> <strong>وجعلنا نشطاء دائما</strong>٫ نحن نعتمد على <strong>مساهمتك</strong>.</string>
|
<string name="html_about_contribution">من أجل <strong>حماية خصوصيتا</strong>٫<strong> إصلاح العلل</strong>٫ <strong>إضافة مميزات</strong> <strong>وجعلنا نشطاء دائما</strong>٫ نحن نعتمد على <strong>مساهمتك</strong>.</string>
|
||||||
<string name="content_description_keyfile_checkbox">خانة تأشير الملف المفتاحي</string>
|
<string name="content_description_keyfile_checkbox">خانة تأشير الملف المفتاحي</string>
|
||||||
@@ -326,10 +320,6 @@
|
|||||||
<string name="contribution">مساهمة</string>
|
<string name="contribution">مساهمة</string>
|
||||||
<string name="contact">"تواصل معنا "</string>
|
<string name="contact">"تواصل معنا "</string>
|
||||||
<string name="biometric">البصمة</string>
|
<string name="biometric">البصمة</string>
|
||||||
<string name="credential_before_click_biometric_button">اكتب كلمة السر ، ثم انقر زر \"البصمة\".</string>
|
|
||||||
<string name="biometric_scanning_error">خطأ بالبصمة: %1$s</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">افتح قاعدة البيانات بالبصمة</string>
|
|
||||||
<string name="biometric_prompt_store_credential_title">احفظ البصمة</string>
|
|
||||||
<string name="warning_empty_keyfile_explanation">يجب ألا تغير محتوى ملف المفتاح، في أحسن الحالات يجب أن يحتوي بيانات مولدة عشوائيا.</string>
|
<string name="warning_empty_keyfile_explanation">يجب ألا تغير محتوى ملف المفتاح، في أحسن الحالات يجب أن يحتوي بيانات مولدة عشوائيا.</string>
|
||||||
<string name="warning_empty_keyfile">من غير المستحسن اضافة ملف مفتاح فارغ.</string>
|
<string name="warning_empty_keyfile">من غير المستحسن اضافة ملف مفتاح فارغ.</string>
|
||||||
<string name="warning_sure_remove_data">أزل هذه البيانات عل أي حال؟</string>
|
<string name="warning_sure_remove_data">أزل هذه البيانات عل أي حال؟</string>
|
||||||
@@ -350,7 +340,6 @@
|
|||||||
<string name="database_data_compression_title">ضغط البيانات</string>
|
<string name="database_data_compression_title">ضغط البيانات</string>
|
||||||
<string name="data">البيانات</string>
|
<string name="data">البيانات</string>
|
||||||
<string name="unavailable_feature_hardware">تعذر العثور على ماسح البصمة.</string>
|
<string name="unavailable_feature_hardware">تعذر العثور على ماسح البصمة.</string>
|
||||||
<string name="biometric_delete_all_key_warning">هل تريد حذف كل مفاتيح التشفير المرتبطة بالبصمة؟</string>
|
|
||||||
<string name="biometric_delete_all_key_summary">احذف كل مفاتيح التشفير المرتبطة بالبصمة</string>
|
<string name="biometric_delete_all_key_summary">احذف كل مفاتيح التشفير المرتبطة بالبصمة</string>
|
||||||
<string name="advanced_unlock_explanation_summary">استخدم إلغاء القفل المتقدم لفتح قاعدة البيانات بسهولة</string>
|
<string name="advanced_unlock_explanation_summary">استخدم إلغاء القفل المتقدم لفتح قاعدة البيانات بسهولة</string>
|
||||||
<string name="lock_database_show_button_summary">يعرض زر القَفل في الواجهة</string>
|
<string name="lock_database_show_button_summary">يعرض زر القَفل في الواجهة</string>
|
||||||
@@ -361,7 +350,7 @@
|
|||||||
<string name="database_opened">قاعدة البيانات مفتوحة</string>
|
<string name="database_opened">قاعدة البيانات مفتوحة</string>
|
||||||
<string name="autofill_preference_title">إعدادات الملء التلقائي</string>
|
<string name="autofill_preference_title">إعدادات الملء التلقائي</string>
|
||||||
<string name="education_entry_edit_title">حرر المدخلة</string>
|
<string name="education_entry_edit_title">حرر المدخلة</string>
|
||||||
<string name="education_biometric_summary">لفتح قاعدة البيانات بسرعة اربط كلمة المرور بالبصمة.</string>
|
<string name="education_advanced_unlock_summary">لفتح قاعدة البيانات بسرعة اربط كلمة المرور بالبصمة.</string>
|
||||||
<string name="education_search_summary">لإيجاد كلمة المرور، أدخل العنوان أو اسم المستخدم أو محتوى أحد الحقول.</string>
|
<string name="education_search_summary">لإيجاد كلمة المرور، أدخل العنوان أو اسم المستخدم أو محتوى أحد الحقول.</string>
|
||||||
<string name="education_new_node_summary">المدخلات لإدارة معرفاتك الرقمية.
|
<string name="education_new_node_summary">المدخلات لإدارة معرفاتك الرقمية.
|
||||||
\n
|
\n
|
||||||
@@ -394,8 +383,6 @@
|
|||||||
<string name="magic_keyboard_explanation_summary">نشِّط لوحة مفاتيح مخصصة لملأ كلمة السر وحقول معرّفك</string>
|
<string name="magic_keyboard_explanation_summary">نشِّط لوحة مفاتيح مخصصة لملأ كلمة السر وحقول معرّفك</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">اطلب فحص البصمة ان كانت قاعدة البيانات معدّة لذلك</string>
|
<string name="biometric_auto_open_prompt_summary">اطلب فحص البصمة ان كانت قاعدة البيانات معدّة لذلك</string>
|
||||||
<string name="biometric_auto_open_prompt_title">افتح محث البصمة تلقائيا</string>
|
<string name="biometric_auto_open_prompt_title">افتح محث البصمة تلقائيا</string>
|
||||||
<string name="biometric_prompt_extract_credential_message">استخرج بيانات الاعتماد لقاعدة البيانات بالبصمة</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">تحذير: مازلت بحاجة لتذكر المفتاح الرئيسي عند استخدامك للبصمة.</string>
|
|
||||||
<string name="keystore_not_accessible">لم يُهيأ مخزن المفاتيح بشكل صحيح.</string>
|
<string name="keystore_not_accessible">لم يُهيأ مخزن المفاتيح بشكل صحيح.</string>
|
||||||
<string name="warning_remove_unlinked_attachment">حذف البيانات سيقلل من حجم قاعدة البيانات لكن احذر أن تكون إحدى هذه البيانات ملحقة لكي-باس.</string>
|
<string name="warning_remove_unlinked_attachment">حذف البيانات سيقلل من حجم قاعدة البيانات لكن احذر أن تكون إحدى هذه البيانات ملحقة لكي-باس.</string>
|
||||||
<string name="subdomain_search_summary">ابحث عن النطاقات في النطاقات الفرعية</string>
|
<string name="subdomain_search_summary">ابحث عن النطاقات في النطاقات الفرعية</string>
|
||||||
|
|||||||
268
app/src/main/res/values-b+sr+Latn/strings.xml
Normal file
268
app/src/main/res/values-b+sr+Latn/strings.xml
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="file_manager_install_description">Za kreiranje, otvaranje i čuvanje datoteka baze podataka potreban je menadžer datoteka koji prihvata Intent akcije ACTION_CREATE_DOCUMENT i ACTION_OPEN_DOCUMENT.</string>
|
||||||
|
<string name="extended_ASCII">Prošireni ASCII</string>
|
||||||
|
<string name="brackets">Zagrade</string>
|
||||||
|
<string name="application">Aplikacija</string>
|
||||||
|
<string name="app_timeout_summary">Neaktivno vreme pre zaključavanja baze podataka</string>
|
||||||
|
<string name="key_derivation_function">Funkcija za generisanje ključa</string>
|
||||||
|
<string name="encryption_algorithm">Algoritam šifrovanja</string>
|
||||||
|
<string name="encryption">Šifrovanje</string>
|
||||||
|
<string name="security">Sigurnost</string>
|
||||||
|
<string name="master_key">Glavni ključ</string>
|
||||||
|
<string name="homepage">Početna strana</string>
|
||||||
|
<string name="feedback">Povratne informacije</string>
|
||||||
|
<string name="contribution">Doprinos</string>
|
||||||
|
<string name="add_group">Dodaj grupu</string>
|
||||||
|
<string name="accept">Prihvati</string>
|
||||||
|
<string name="about_description">Android implementacija KeePass menadžera lozinki</string>
|
||||||
|
<string name="never">Nikada</string>
|
||||||
|
<string name="minus">Minus</string>
|
||||||
|
<string name="menu_delete_entry_history">Izbriši istoriju</string>
|
||||||
|
<string name="menu_restore_entry_history">Vrati istoriju u prethodno stanje</string>
|
||||||
|
<string name="menu_empty_recycle_bin">Isprazni korpu za otpatke</string>
|
||||||
|
<string name="menu_open_file_read_and_write">Izmenjivo</string>
|
||||||
|
<string name="menu_file_selection_read_only">Zaštićeno od upisivanja</string>
|
||||||
|
<string name="menu_url">Idi na URL adresu</string>
|
||||||
|
<string name="menu_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_lock">Zaključaj bazu podataka</string>
|
||||||
|
<string name="menu_hide_password">Sakrij lozinku</string>
|
||||||
|
<string name="menu_cancel">Otkaži</string>
|
||||||
|
<string name="menu_delete">Izbriši</string>
|
||||||
|
<string name="menu_paste">Nalepi</string>
|
||||||
|
<string name="menu_move">Premesti</string>
|
||||||
|
<string name="menu_copy">Kopiraj</string>
|
||||||
|
<string name="menu_edit">Izmeni</string>
|
||||||
|
<string name="menu_donate">Doniraj</string>
|
||||||
|
<string name="menu_master_key_settings">Postavke glavnog ključa</string>
|
||||||
|
<string name="menu_security_settings">Bezbednosne postavke</string>
|
||||||
|
<string name="menu_database_settings">Postavke baze podataka</string>
|
||||||
|
<string name="menu_advanced_unlock_settings">Napredno otključavanje</string>
|
||||||
|
<string name="menu_form_filling_settings">Popunjavanje obrasca</string>
|
||||||
|
<string name="menu_app_settings">Postavke aplikacije</string>
|
||||||
|
<string name="settings">Postavke</string>
|
||||||
|
<string name="copy_field">Kopija od %1$s</string>
|
||||||
|
<string name="menu_change_key_settings">Promeni glavni ključ</string>
|
||||||
|
<string name="about">O aplikaciji</string>
|
||||||
|
<string name="hide_password_summary">Podrazumevaj maskiranje lozinki sa (***)</string>
|
||||||
|
<string name="hide_password_title">Sakrij lozinke</string>
|
||||||
|
<string name="lowercase">Mala slova</string>
|
||||||
|
<string name="loading_database">Učitavanje baze podataka…</string>
|
||||||
|
<string name="creating_database">Kreiranje baze podataka…</string>
|
||||||
|
<string name="list_size_summary">Veličina teksta u listi elemenata</string>
|
||||||
|
<string name="list_size_title">Veličina stavki liste</string>
|
||||||
|
<string name="list_groups_show_number_entries_summary">Prikaži broj unosa u grupi</string>
|
||||||
|
<string name="list_groups_show_number_entries_title">Prikaži broj unosa</string>
|
||||||
|
<string name="list_entries_show_username_summary">Prikaži korisnička imena u listama unosa</string>
|
||||||
|
<string name="list_entries_show_username_title">Prikaži korisnička imena</string>
|
||||||
|
<string name="length">Dužina</string>
|
||||||
|
<string name="invalid_db_sig">Nije moguće prepoznati format baze podataka.</string>
|
||||||
|
<string name="invalid_db_same_uuid">%1$s sa istim UUID%2$s već postoji.</string>
|
||||||
|
<string name="invalid_algorithm">Pogrešan algoritam.</string>
|
||||||
|
<string name="invalid_credentials">Nije moguće pročitati podatke za prijavljivanje.</string>
|
||||||
|
<string name="password">Lozinka</string>
|
||||||
|
<string name="hint_pass">Lozinka</string>
|
||||||
|
<string name="hint_length">Dužina</string>
|
||||||
|
<string name="hint_group_name">Naziv grupe</string>
|
||||||
|
<string name="hint_generated_password">Generisana lozinka</string>
|
||||||
|
<string name="hint_conf_pass">Potvrdi lozinku</string>
|
||||||
|
<string name="generate_password">Generiši lozinku</string>
|
||||||
|
<string name="file_browser">Upravljač datotekama</string>
|
||||||
|
<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_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>
|
||||||
|
<string name="error_otp_counter">Brojač mora biti između %1$d i %2$d.</string>
|
||||||
|
<string name="error_otp_secret_key">Tajni ključ mora biti u Base32 formatu.</string>
|
||||||
|
<string name="error_save_database">Nije moguće sačuvati bazu podataka.</string>
|
||||||
|
<string name="error_create_database">Nije moguće kreirati datoteku baze podataka.</string>
|
||||||
|
<string name="error_copy_group_here">Ovde ne možete kopirati grupu.</string>
|
||||||
|
<string name="error_copy_entry_here">Ovde ne možete kopirati unos.</string>
|
||||||
|
<string name="error_move_entry_here">Ovde ne možete premestiti unos.</string>
|
||||||
|
<string name="error_move_folder_in_itself">Ne možete premestiti grupu u samu sebe.</string>
|
||||||
|
<string name="error_autofill_enable_service">Nije moguće omogućiti uslugu automatskog popunjavanja.</string>
|
||||||
|
<string name="error_wrong_length">Unesite pozitivan ceo broj u polje \"Dužina\".</string>
|
||||||
|
<string name="error_label_exists">Ova oznaka već postoji.</string>
|
||||||
|
<string name="error_string_key">Svaka niska mora imati ime polja.</string>
|
||||||
|
<string name="error_rounds_too_large">Vrednost transformacijskih prolaza je previsoka. Postavlja se na 2147483648.</string>
|
||||||
|
<string name="error_pass_match">Lozinke se ne podudaraju.</string>
|
||||||
|
<string name="error_disallow_no_credentials">Najmanje jedan podatak za prijavu mora biti unet.</string>
|
||||||
|
<string name="error_pass_gen_type">Mora biti izabran najmanje jedan tip generisanja lozinke.</string>
|
||||||
|
<string name="error_load_database_KDF_memory">Nije moguće učitati ključ. Pokušajte da smanjite korišćenje KDF memorije.</string>
|
||||||
|
<string name="error_load_database">Nije moguće učitati bazu podataka.</string>
|
||||||
|
<string name="error_out_of_memory">Nema dovoljno memorije za učitavanje cele baze podataka.</string>
|
||||||
|
<string name="error_no_name">Unesite ime.</string>
|
||||||
|
<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_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>
|
||||||
|
<string name="entry_url">URL</string>
|
||||||
|
<string name="entry_otp">OTP</string>
|
||||||
|
<string name="otp_algorithm">Algoritam</string>
|
||||||
|
<string name="otp_digits">Cifre</string>
|
||||||
|
<string name="otp_counter">Brojač</string>
|
||||||
|
<string name="otp_period">Period (u sekundama)</string>
|
||||||
|
<string name="otp_secret">Tajna</string>
|
||||||
|
<string name="otp_type">OTP tip</string>
|
||||||
|
<string name="entry_setup_otp">Podesi jednokratnu lozinku</string>
|
||||||
|
<string name="entry_title">Naslov</string>
|
||||||
|
<string name="save">Sačuvaj</string>
|
||||||
|
<string name="entry_password">Lozinka</string>
|
||||||
|
<string name="entry_not_found">Nije moguće pronaći podatke o unosu.</string>
|
||||||
|
<string name="content_description_node_children">Pod-čvor</string>
|
||||||
|
<string name="app_timeout">Vreme isteka aplikacije</string>
|
||||||
|
<string name="keyboard_auto_go_action_summary">Radnja tastera \"Go\" nakon pritiska na taster \"Polje\"</string>
|
||||||
|
<string name="keyboard_auto_go_action_title">Automatska radnja tastera</string>
|
||||||
|
<string name="keyboard_keys_category">Tasteri</string>
|
||||||
|
<string name="keyboard_theme_title">Tema tastature</string>
|
||||||
|
<string name="keyboard_appearance_category">Izgled</string>
|
||||||
|
<string name="keyboard_notification_entry_content_title">%1$s je na Magikeyboard-u</string>
|
||||||
|
<string name="keyboard_notification_entry_content_text">%1$s</string>
|
||||||
|
<string name="keyboard_notification_entry_content_title_text">Unos</string>
|
||||||
|
<string name="keyboard_entry_timeout_summary">Vremenski period nakon koga se briše unos sa tastature</string>
|
||||||
|
<string name="keyboard_entry_timeout_title">Vreme isteka</string>
|
||||||
|
<string name="keyboard_notification_entry_clear_close_summary">Zatvori bazu podataka prilikom zatvaranja obaveštenja</string>
|
||||||
|
<string name="keyboard_notification_entry_clear_close_title">Isprazni pri zatvaranju</string>
|
||||||
|
<string name="keyboard_save_search_info_summary">Pokušaj da sačuvaš podeljene informacije prilikom ručnog izbora unosa</string>
|
||||||
|
<string name="keyboard_search_share_summary">Automatski тражите заједничке информације да бисте попунили тастатуру</string>
|
||||||
|
<string name="keyboard_search_share_title">Traži podeljene informacije</string>
|
||||||
|
<string name="keyboard_notification_entry_summary">Prikaži obaveštenje kada je unos dostupn</string>
|
||||||
|
<string name="keyboard_notification_entry_title">Obaveštenje</string>
|
||||||
|
<string name="keyboard_selection_entry_summary">Prikaži polja za unos podataka u Magikeyboard-u prilikom prikazivanja unosa</string>
|
||||||
|
<string name="keyboard_selection_entry_title">Izbor unosa</string>
|
||||||
|
<string name="keyboard_entry_category">Unos</string>
|
||||||
|
<string name="keyboard_setting_label">Magikeyboard postavke</string>
|
||||||
|
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
|
||||||
|
<string name="keyboard_name">Magikeyboard</string>
|
||||||
|
<string name="device_keyboard_setting_title">Postavke tastature uređaja</string>
|
||||||
|
<string name="magic_keyboard_explanation_summary">Aktivirajte tastaturu koja će ispunjavati polja formi za unos sa Vašim lozinkama i podacima o identitetu</string>
|
||||||
|
<string name="magic_keyboard_title">Magikeyboard</string>
|
||||||
|
<string name="keyboard">Tastatura</string>
|
||||||
|
<string name="recycle_bin">Korpa za otpatke</string>
|
||||||
|
<string name="compression_gzip">Gzip</string>
|
||||||
|
<string name="compression_none">Bez kompresije</string>
|
||||||
|
<string name="compression">Kompresija</string>
|
||||||
|
<string name="other">Ostalo</string>
|
||||||
|
<string name="application_appearance">Aplikacija</string>
|
||||||
|
<string name="text_appearance">Tekst</string>
|
||||||
|
<string name="database_version_title">Verzija baze podataka</string>
|
||||||
|
<string name="database_custom_color_title">Prilagođena boja baze podataka</string>
|
||||||
|
<string name="database_default_username_title">Podrazumevano korisničko ime</string>
|
||||||
|
<string name="database_description_title">Opis baze podataka</string>
|
||||||
|
<string name="database_name_title">Naziv baze podataka</string>
|
||||||
|
<string name="clear_clipboard_notification_summary">Zaključaj bazu podataka kada istekne trajanje međuspremnika ili kada se obaveštenje zatvori nakon što počnete da je koristite</string>
|
||||||
|
<string name="clear_clipboard_notification_title">Isprazni pri zatvaranju</string>
|
||||||
|
<string name="notification">Obaveštenje</string>
|
||||||
|
<string name="disable">Onemogući</string>
|
||||||
|
<string name="enable">Omogući</string>
|
||||||
|
<string name="allow_copy_password_warning">Upozorenje: Međuspremnik se deli sa svim aplikacijama. Ako se kopiraju osetljivi podaci, drugi softver ih može videti.</string>
|
||||||
|
<string name="allow_copy_password_summary">Dozvoli kopiranje lozinke za unos i zaštićenih polja u međuspremnik</string>
|
||||||
|
<string name="allow_copy_password_title">Pouzdanost međuspremnika</string>
|
||||||
|
<string name="monospace_font_fields_enable_summary">Promeni font korišćen u poljima zbog bolje vidljivosti znakova</string>
|
||||||
|
<string name="monospace_font_fields_enable_title">Font polja</string>
|
||||||
|
<string name="settings_database_force_changing_master_key_next_time_summary">Zahtevaj promenu glavnog ključa sledeći put (jednom)</string>
|
||||||
|
<string name="settings_database_force_changing_master_key_next_time_title">Sledećeg puta forsiraj obnovu</string>
|
||||||
|
<string name="settings_database_force_changing_master_key_summary">Zahtevaj promene glavnog ključa (u danima)</string>
|
||||||
|
<string name="settings_database_force_changing_master_key_title">Forsiraj obnovu</string>
|
||||||
|
<string name="settings_database_recommend_changing_master_key_summary">Preporučiti promenu glavnog ključa (u danima)</string>
|
||||||
|
<string name="settings_database_recommend_changing_master_key_title">Preporučiti obnavljanje</string>
|
||||||
|
<string name="max_history_size_summary">Ograniči veličinu istorije (u bajtovima) po unosu</string>
|
||||||
|
<string name="max_history_size_title">Maksimalna veličina</string>
|
||||||
|
<string name="max_history_items_summary">Ograniči broja stavki istorije po unosu</string>
|
||||||
|
<string name="max_history_items_title">Maksimalan broj</string>
|
||||||
|
<string name="recycle_bin_group_title">Grupa korpe za otpatke</string>
|
||||||
|
<string name="recycle_bin_summary">Premešta grupe i stavke u grupu \"Korpa za otpatke\" pre brisanja</string>
|
||||||
|
<string name="recycle_bin_title">Korišćenje korpe za otpatke</string>
|
||||||
|
<string name="database_data_remove_unlinked_attachments_summary">Uklanja priloge koji su sadržani u bazi podataka, ali nisu povezani sa unosom</string>
|
||||||
|
<string name="database_data_remove_unlinked_attachments_title">Obriši podatake koji nisu povezani</string>
|
||||||
|
<string name="database_data_compression_summary">Kompresija podataka smanjuje veličinu baze podataka</string>
|
||||||
|
<string name="database_data_compression_title">Kompresija podataka</string>
|
||||||
|
<string name="data">Podaci</string>
|
||||||
|
<string name="assign_master_key">Dodeli glavni ključ</string>
|
||||||
|
<string name="path">Putanja</string>
|
||||||
|
<string name="file_name">Naziv datoteke</string>
|
||||||
|
<string name="unavailable_feature_hardware">Nije moguće pronaći odgovarajući hardver.</string>
|
||||||
|
<string name="unavailable_feature_version">Uređaj koristi Android verziju %1$s, ali potrebana verzija je %2$s ili novija.</string>
|
||||||
|
<string name="unavailable_feature_text">Nije moguće pokrenuti ovu funkciju.</string>
|
||||||
|
<string name="biometric_delete_all_key_summary">Izbriši sve ključeve za šifrovanje koji se odnose na biometrijsko prepoznavanje</string>
|
||||||
|
<string name="biometric_delete_all_key_title">Brisanje ključeva za šifrovanje</string>
|
||||||
|
<string name="biometric_auto_open_prompt_summary">Automatski zatraži biometriju ako je baza podataka podešena da je koristi</string>
|
||||||
|
<string name="biometric_auto_open_prompt_title">Automatski otvori biometrijski upit</string>
|
||||||
|
<string name="biometric_unlock_enable_summary">Omogućava Vam da skenirate svoju biometriju da biste otvorili bazu podataka</string>
|
||||||
|
<string name="biometric_unlock_enable_title">Biometrijsko otključavanje</string>
|
||||||
|
<string name="advanced_unlock_explanation_summary">Koristite napredno otključavanje kako bi ste lakše otvorili bazu podataka</string>
|
||||||
|
<string name="advanced_unlock">Napredno otključavanje</string>
|
||||||
|
<string name="education_unlock_summary">Unesite lozinku i/ili datoteku ključa da bi ste otključali bazu podataka.
|
||||||
|
\n
|
||||||
|
\nNapravite rezervnu kopiju datoteke baze podataka na bezbednom mestu nakon svake promene.</string>
|
||||||
|
<string name="warning_empty_keyfile_explanation">Sadržaj datoteke ključa nikada ne bi trebalo menjati, a u najboljem slučaju bi trebao da sadrži nasumično generisane podatke.</string>
|
||||||
|
<string name="warning_empty_keyfile">Nije preporučljivo dodavanje prazne datoteke ključa.</string>
|
||||||
|
<string name="remember_keyfile_locations_summary">Prati gde su datoteke ključeva uskladištene</string>
|
||||||
|
<string name="remember_keyfile_locations_title">Zapamti lokacije datoteka ključeva</string>
|
||||||
|
<string name="keyfile_is_empty">Datoteka ključa je prazna.</string>
|
||||||
|
<string name="hint_keyfile">Datoteka ključa</string>
|
||||||
|
<string name="error_create_database_file">Nije moguće kreirati bazu podataka sa datom lozinkom i datotekom ključa.</string>
|
||||||
|
<string name="error_nokeyfile">Izaberite datoteku ključa.</string>
|
||||||
|
<string name="content_description_keyfile_checkbox">Polje za potvrdu datoteke ključa</string>
|
||||||
|
<string name="entry_modified">Izmenjeno</string>
|
||||||
|
<string name="entry_keyfile">Datoteka ključa</string>
|
||||||
|
<string name="entry_attachments">Prilozi</string>
|
||||||
|
<string name="entry_history">Istorija</string>
|
||||||
|
<string name="entry_UUID">Jedinstveni indentifikator korisnika ( UUID )</string>
|
||||||
|
<string name="entry_expires">Ističe</string>
|
||||||
|
<string name="entry_created">Kreirano</string>
|
||||||
|
<string name="entry_confpassword">Potvrdi lozinku</string>
|
||||||
|
<string name="entry_notes">Napomene</string>
|
||||||
|
<string name="entry_cancel">Otkaži</string>
|
||||||
|
<string name="entry_accessed">Pristupljeno</string>
|
||||||
|
<string name="html_about_contribution">Kako bismo <strong>zadržali našu slobodu</strong>, <strong>ispravljali greške</strong>, <strong>dodavali nove opcije</strong> i <strong>uvek bili aktivni</strong>, računamo na Vaš <strong>doprinos</strong>.</string>
|
||||||
|
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft je <strong>otvorenog koda</strong> i <strong>ne sadrži reklame</strong>.
|
||||||
|
\nPonuđen je onakav kakav jeste, pod <strong>GPLv3</strong> licencom, bez ikakvih garancija.</string>
|
||||||
|
<string name="digits">Cifre</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="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>
|
||||||
|
<string name="content_description_remove_field">Obriši polje</string>
|
||||||
|
<string name="entry_add_attachment">Dodaj prilog</string>
|
||||||
|
<string name="entry_add_field">Dodaj polje</string>
|
||||||
|
<string name="content_description_password_length">Dužina lozinke</string>
|
||||||
|
<string name="entry_password_generator">Generator lozinki</string>
|
||||||
|
<string name="discard">Odbaci</string>
|
||||||
|
<string name="discard_changes">Odbaci izmene\?</string>
|
||||||
|
<string name="validate">Provera valjanosti</string>
|
||||||
|
<string name="content_description_entry_icon">Ikonica unosa</string>
|
||||||
|
<string name="content_description_repeat_toggle_password_visibility">Ponovi promenu vidljivosti lozinke</string>
|
||||||
|
<string name="content_description_password_checkbox">Polje za potvrdu lozinke</string>
|
||||||
|
<string name="content_description_credentials_information">Informacije o podacima prijave</string>
|
||||||
|
<string name="content_description_file_information">Informacije o datoteci</string>
|
||||||
|
<string name="content_description_add_item">Dodaj stavku</string>
|
||||||
|
<string name="content_description_add_entry">Dodaj unos</string>
|
||||||
|
<string name="content_description_add_group">Dodaj grupu</string>
|
||||||
|
<string name="content_description_add_node">Dodaj čvor</string>
|
||||||
|
<string name="content_description_open_file">Otvori datoteku</string>
|
||||||
|
<string name="content_description_background">Pozadina</string>
|
||||||
|
<string name="clipboard_timeout_summary">Trajanje pohrane u međuspremniku ( ako je podržano od strane uređaja )</string>
|
||||||
|
<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_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>
|
||||||
|
</resources>
|
||||||
@@ -193,10 +193,7 @@
|
|||||||
<string name="biometric">Biomètric</string>
|
<string name="biometric">Biomètric</string>
|
||||||
<string name="menu_appearance_settings">Apariència</string>
|
<string name="menu_appearance_settings">Apariència</string>
|
||||||
<string name="database_history">Història</string>
|
<string name="database_history">Història</string>
|
||||||
<string name="credential_before_click_biometric_button">Escriviu la contrasenya abans de fer clic en el botó biomètric.</string>
|
|
||||||
<string name="encrypted_value_stored">Contrasenya xifrada desada</string>
|
<string name="encrypted_value_stored">Contrasenya xifrada desada</string>
|
||||||
<string name="biometric_prompt_extract_credential_title">Obri la base de dades amb reconeixement biomètric</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">Alerta: Heu de recordar la vostra contrasenya mestra encara que feu servir el reconeixement biomètrica.</string>
|
|
||||||
<string name="warning_permanently_delete_nodes">Voleu suprimir definitivament els nodes seleccionats\?</string>
|
<string name="warning_permanently_delete_nodes">Voleu suprimir definitivament els nodes seleccionats\?</string>
|
||||||
<string name="warning_no_encryption_key">Voleu continuar sense contrasenya de xifrat\?</string>
|
<string name="warning_no_encryption_key">Voleu continuar sense contrasenya de xifrat\?</string>
|
||||||
<string name="warning_database_link_revoked">L\'accés al fitxer ha estat revocat pel gestor de fitxers</string>
|
<string name="warning_database_link_revoked">L\'accés al fitxer ha estat revocat pel gestor de fitxers</string>
|
||||||
@@ -232,7 +229,6 @@
|
|||||||
<string name="menu_empty_recycle_bin">Buida la paperera</string>
|
<string name="menu_empty_recycle_bin">Buida la paperera</string>
|
||||||
<string name="menu_open_file_read_and_write">Modificable</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_file_selection_read_only">Protegit contra escriptura</string>
|
||||||
<string name="menu_biometric_remove_key">Suprimeix la clau biomètrica desada</string>
|
|
||||||
<string name="menu_save_database">Desa la base de dades</string>
|
<string name="menu_save_database">Desa la base de dades</string>
|
||||||
<string name="menu_cancel">Cancel·la</string>
|
<string name="menu_cancel">Cancel·la</string>
|
||||||
<string name="menu_paste">Enganxa</string>
|
<string name="menu_paste">Enganxa</string>
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
<string name="error_pass_match">Zadaná hesla se neshodují.</string>
|
<string name="error_pass_match">Zadaná hesla se neshodují.</string>
|
||||||
<string name="error_rounds_too_large">Příliš vysoký „Počet průchodů“. Nastavuji na 2147483648.</string>
|
<string name="error_rounds_too_large">Příliš vysoký „Počet průchodů“. Nastavuji na 2147483648.</string>
|
||||||
<string name="error_string_key">Je třeba, aby každý řetězec měl název kolonky.</string>
|
<string name="error_string_key">Je třeba, aby každý řetězec měl název kolonky.</string>
|
||||||
<string name="error_wrong_length">Do nastavení „Délka“ zadejte celé kladné číslo.</string>
|
<string name="error_wrong_length">Do pole „Délka“ zadejte celé kladné číslo.</string>
|
||||||
<string name="field_name">Název pole</string>
|
<string name="field_name">Název pole</string>
|
||||||
<string name="field_value">Hodnota pole</string>
|
<string name="field_value">Hodnota pole</string>
|
||||||
<string name="file_browser">Správce souborů</string>
|
<string name="file_browser">Správce souborů</string>
|
||||||
@@ -169,7 +169,6 @@
|
|||||||
<string name="menu_move">Přesunout</string>
|
<string name="menu_move">Přesunout</string>
|
||||||
<string name="menu_paste">Vložit</string>
|
<string name="menu_paste">Vložit</string>
|
||||||
<string name="menu_cancel">Storno</string>
|
<string name="menu_cancel">Storno</string>
|
||||||
<string name="menu_biometric_remove_key">Smazat uložený biometrický klíč</string>
|
|
||||||
<string name="menu_file_selection_read_only">Chráněno před zápisem</string>
|
<string name="menu_file_selection_read_only">Chráněno před zápisem</string>
|
||||||
<string name="menu_open_file_read_and_write">Čtení a zápis</string>
|
<string name="menu_open_file_read_and_write">Čtení a zápis</string>
|
||||||
<string name="read_only">Chráněno před zápisem</string>
|
<string name="read_only">Chráněno před zápisem</string>
|
||||||
@@ -192,12 +191,7 @@
|
|||||||
<string name="warning_password_encoding">Nepoužívejte v hesle pro databázový soubor znaky mimo znakovou sadu Latin-1 (nepoužívejte znaky s diakritikou).</string>
|
<string name="warning_password_encoding">Nepoužívejte v hesle pro databázový soubor znaky mimo znakovou sadu Latin-1 (nepoužívejte znaky s diakritikou).</string>
|
||||||
<string name="warning_empty_password">Pokračovat bez ochrany odemknutím heslem\?</string>
|
<string name="warning_empty_password">Pokračovat bez ochrany odemknutím heslem\?</string>
|
||||||
<string name="warning_no_encryption_key">Pokračovat bez šifrovacího klíče\?</string>
|
<string name="warning_no_encryption_key">Pokračovat bez šifrovacího klíče\?</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">Otevřít biometrickou pobídku k otevření databáze</string>
|
|
||||||
<string name="encrypted_value_stored">Šifrované heslo uloženo</string>
|
<string name="encrypted_value_stored">Šifrované heslo uloženo</string>
|
||||||
<string name="biometric_invalid_key">Nelze načíst biometrický klíč. Prosím, smažte jej a opakujte proceduru biometrického rozpoznání.</string>
|
|
||||||
<string name="biometric_not_recognized">Biometrický prvek nerozpoznán</string>
|
|
||||||
<string name="biometric_scanning_error">Chyba s biometrickým prvkem: %1$s</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">Otevři biometrickou pobídku k uložení hesel</string>
|
|
||||||
<string name="no_credentials_stored">Tato databáze zatím nemá uložené heslo.</string>
|
<string name="no_credentials_stored">Tato databáze zatím nemá uložené heslo.</string>
|
||||||
<string name="database_history">Historie</string>
|
<string name="database_history">Historie</string>
|
||||||
<string name="menu_appearance_settings">Vzhled</string>
|
<string name="menu_appearance_settings">Vzhled</string>
|
||||||
@@ -222,8 +216,7 @@
|
|||||||
<string name="biometric_unlock_enable_title">Biometrické odemčení</string>
|
<string name="biometric_unlock_enable_title">Biometrické odemčení</string>
|
||||||
<string name="biometric_unlock_enable_summary">Nechá otevřít databázi snímáním biometrického údaje</string>
|
<string name="biometric_unlock_enable_summary">Nechá otevřít databázi snímáním biometrického údaje</string>
|
||||||
<string name="biometric_delete_all_key_title">Smazat šifrovací klíče</string>
|
<string name="biometric_delete_all_key_title">Smazat šifrovací klíče</string>
|
||||||
<string name="biometric_delete_all_key_summary">Smazat všechny šifrovací klíče související s biometrickým rozlišením</string>
|
<string name="biometric_delete_all_key_summary">Smazat všechny šifrovací klíče související s rozpoznáním pokročilého odemknutí</string>
|
||||||
<string name="biometric_delete_all_key_warning">Smazat všechny šifrovací klíče související s biometrickým rozlišením\?</string>
|
|
||||||
<string name="unavailable_feature_text">Tuto funkci se nedaří spustit.</string>
|
<string name="unavailable_feature_text">Tuto funkci se nedaří spustit.</string>
|
||||||
<string name="unavailable_feature_version">V zařízení je instalován Android %1$s, ale potřebná je verze %2$s a novější.</string>
|
<string name="unavailable_feature_version">V zařízení je instalován Android %1$s, ale potřebná je verze %2$s a novější.</string>
|
||||||
<string name="unavailable_feature_hardware">Hardware nebyl rozpoznán.</string>
|
<string name="unavailable_feature_hardware">Hardware nebyl rozpoznán.</string>
|
||||||
@@ -242,7 +235,7 @@
|
|||||||
<string name="database_description_title">Popis databáze</string>
|
<string name="database_description_title">Popis databáze</string>
|
||||||
<string name="database_version_title">Verze databáze</string>
|
<string name="database_version_title">Verze databáze</string>
|
||||||
<string name="text_appearance">Text</string>
|
<string name="text_appearance">Text</string>
|
||||||
<string name="application_appearance">Aplikace</string>
|
<string name="application_appearance">Rozhraní</string>
|
||||||
<string name="other">Ostatní</string>
|
<string name="other">Ostatní</string>
|
||||||
<string name="keyboard">Klávesnice</string>
|
<string name="keyboard">Klávesnice</string>
|
||||||
<string name="magic_keyboard_title">Magikeyboard</string>
|
<string name="magic_keyboard_title">Magikeyboard</string>
|
||||||
@@ -266,8 +259,6 @@
|
|||||||
\nSkupiny (ekvivalent složek) organizují záznamy v databázi.</string>
|
\nSkupiny (ekvivalent složek) organizují záznamy v databázi.</string>
|
||||||
<string name="education_search_title">Hledejte v položkách</string>
|
<string name="education_search_title">Hledejte v položkách</string>
|
||||||
<string name="education_search_summary">Zadejte název, uživatelské jméno nebo jiné položky k nalezení svých hesel.</string>
|
<string name="education_search_summary">Zadejte název, uživatelské jméno nebo jiné položky k nalezení svých hesel.</string>
|
||||||
<string name="education_biometric_title">Odemknutí databáze biometricky</string>
|
|
||||||
<string name="education_biometric_summary">Propojte své heslo s načtenou biometrikou pro rychlé odemknutí databáze.</string>
|
|
||||||
<string name="education_entry_edit_title">Upravit položku</string>
|
<string name="education_entry_edit_title">Upravit položku</string>
|
||||||
<string name="education_entry_edit_summary">Přidejte ke své položce vlastní kolonky. Společná data mohou být sdílena mezi více různými kolonkami.</string>
|
<string name="education_entry_edit_summary">Přidejte ke své položce vlastní kolonky. Společná data mohou být sdílena mezi více různými kolonkami.</string>
|
||||||
<string name="education_generate_password_title">Vytvořit silné heslo</string>
|
<string name="education_generate_password_title">Vytvořit silné heslo</string>
|
||||||
@@ -276,10 +267,10 @@
|
|||||||
<string name="education_entry_new_field_summary">Registrovat další kolonku, zadat hodnotu a volitelně ji ochránit.</string>
|
<string name="education_entry_new_field_summary">Registrovat další kolonku, zadat hodnotu a volitelně ji ochránit.</string>
|
||||||
<string name="education_unlock_title">Odemknout databázi</string>
|
<string name="education_unlock_title">Odemknout databázi</string>
|
||||||
<string name="education_read_only_title">Ochraňte svou databázi před zápisem</string>
|
<string name="education_read_only_title">Ochraňte svou databázi před zápisem</string>
|
||||||
<string name="education_read_only_summary">Změnit režim otevírání pro dané sezení.
|
<string name="education_read_only_summary">Změnit režim otevírání pro dané sezení.
|
||||||
\n
|
\n
|
||||||
\nV režimu pouze pro čtení zabráníte nechtěným změnám do databáze.
|
\nV režimu \"pouze pro čtení\" zabráníte nechtěným změnám do databáze.
|
||||||
\n V režimu zápisu je možné přidávat, mazat nebo měnit všechny prvky dle libosti.</string>
|
\nV režimu \"zápisu\" je možné přidávat, mazat nebo měnit všechny prvky podle libosti.</string>
|
||||||
<string name="education_field_copy_title">Zkopírujte kolonku</string>
|
<string name="education_field_copy_title">Zkopírujte kolonku</string>
|
||||||
<string name="education_field_copy_summary">Zkopírované kolonky lze vkládat kam chcete
|
<string name="education_field_copy_summary">Zkopírované kolonky lze vkládat kam chcete
|
||||||
\n
|
\n
|
||||||
@@ -300,12 +291,11 @@
|
|||||||
<string name="html_text_dev_feature_encourage">povzbudíte vývojáře k přidávání <strong>nových funkcí</strong> a <strong>opravování chyb</strong> dle vašich připomínek.</string>
|
<string name="html_text_dev_feature_encourage">povzbudíte vývojáře k přidávání <strong>nových funkcí</strong> a <strong>opravování chyb</strong> dle vašich připomínek.</string>
|
||||||
<string name="html_text_dev_feature_thanks">Mnohé díky za vaše přispění.</string>
|
<string name="html_text_dev_feature_thanks">Mnohé díky za vaše přispění.</string>
|
||||||
<string name="html_text_dev_feature_work_hard">Tvrdě pracujeme na brzkém vydání této funkce.</string>
|
<string name="html_text_dev_feature_work_hard">Tvrdě pracujeme na brzkém vydání této funkce.</string>
|
||||||
<string name="html_text_dev_feature_upgrade">Nezapomeňte aplikaci aktualizovat instalováním nových verzí.</string>
|
<string name="html_text_dev_feature_upgrade">Pamatujte na aktualizaci aplikace instalováním nových verzí.</string>
|
||||||
<string name="download">Stáhnout</string>
|
<string name="download">Stáhnout</string>
|
||||||
<string name="contribute">Zapojit se</string>
|
<string name="contribute">Zapojit se</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string name="style_choose_title">Vzhled aplikace</string>
|
<string name="style_choose_title">Vzhled aplikace</string>
|
||||||
<string name="style_choose_summary">Motiv vzhledu aplikace</string>
|
<string name="style_choose_summary">Motiv vzhledu aplikace</string>
|
||||||
<string name="icon_pack_choose_title">Sada ikon</string>
|
<string name="icon_pack_choose_title">Sada ikon</string>
|
||||||
@@ -364,13 +354,9 @@
|
|||||||
<string name="content_description_keyboard_close_fields">Zavři kolonky</string>
|
<string name="content_description_keyboard_close_fields">Zavři kolonky</string>
|
||||||
<string name="error_create_database_file">Nelze vytvořit databázi s tímto heslem a klíčem ze souboru.</string>
|
<string name="error_create_database_file">Nelze vytvořit databázi s tímto heslem a klíčem ze souboru.</string>
|
||||||
<string name="menu_advanced_unlock_settings">Pokročilé odemčení</string>
|
<string name="menu_advanced_unlock_settings">Pokročilé odemčení</string>
|
||||||
<string name="biometric_prompt_store_credential_title">Uložit biometrické rozlišení</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">VAROVÁNÍ: I s použitím biometrického rozlišení budete muset znát své hlavní heslo.</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">Otevřít databázi skrze biometrické rozlišení</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_message">Vytáhnout heslo databáze biometrickými daty</string>
|
|
||||||
<string name="biometric">Biometrika</string>
|
<string name="biometric">Biometrika</string>
|
||||||
<string name="biometric_auto_open_prompt_title">Automaticky otevřít biometrickou pobídku</string>
|
<string name="biometric_auto_open_prompt_title">Automaticky otevřít pobídku</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">Automaticky žádat biometriku, je-li databáze nastavena k jejímu použití</string>
|
<string name="biometric_auto_open_prompt_summary">Automaticky žádat pokročilé odemknutí, je-li databáze nastavena k jejímu použití</string>
|
||||||
<string name="enable">Zapnout</string>
|
<string name="enable">Zapnout</string>
|
||||||
<string name="disable">Vypnout</string>
|
<string name="disable">Vypnout</string>
|
||||||
<string name="master_key">Hlavní klíč</string>
|
<string name="master_key">Hlavní klíč</string>
|
||||||
@@ -424,7 +410,6 @@
|
|||||||
<string name="command_execution">Provádím příkaz…</string>
|
<string name="command_execution">Provádím příkaz…</string>
|
||||||
<string name="warning_permanently_delete_nodes">Natrvalo smazat vybrané uzly\?</string>
|
<string name="warning_permanently_delete_nodes">Natrvalo smazat vybrané uzly\?</string>
|
||||||
<string name="keystore_not_accessible">Úložiště klíčů není řádně inicializováno.</string>
|
<string name="keystore_not_accessible">Úložiště klíčů není řádně inicializováno.</string>
|
||||||
<string name="credential_before_click_biometric_button">Zadejte heslo a pak klikněte na tlačítko \"Biometrika\".</string>
|
|
||||||
<string name="recycle_bin_group_title">Skupina Koš</string>
|
<string name="recycle_bin_group_title">Skupina Koš</string>
|
||||||
<string name="enable_auto_save_database_title">Uložit databázi automaticky</string>
|
<string name="enable_auto_save_database_title">Uložit databázi automaticky</string>
|
||||||
<string name="enable_auto_save_database_summary">Uložit databázi po každé důležité akci (v režimu \"Zápis\")</string>
|
<string name="enable_auto_save_database_summary">Uložit databázi po každé důležité akci (v režimu \"Zápis\")</string>
|
||||||
@@ -505,4 +490,48 @@
|
|||||||
<string name="database_data_remove_unlinked_attachments_summary">Odstraní přílohy obsažené v databázi, ale nikoli přílohy propojené se záznamem</string>
|
<string name="database_data_remove_unlinked_attachments_summary">Odstraní přílohy obsažené v databázi, ale nikoli přílohy propojené se záznamem</string>
|
||||||
<string name="education_add_attachment_title">Přidat přílohu</string>
|
<string name="education_add_attachment_title">Přidat přílohu</string>
|
||||||
<string name="education_add_attachment_summary">Nahrát přílohu k záznamu pro uložení důležitých externích dat.</string>
|
<string name="education_add_attachment_summary">Nahrát přílohu k záznamu pro uložení důležitých externích dat.</string>
|
||||||
|
<string name="show_uuid_summary">Ukáže UUID propojené se záznamem</string>
|
||||||
|
<string name="show_uuid_title">Ukázat UUID</string>
|
||||||
|
<string name="autofill_read_only_save">Uložení dat není povoleno, je-li databáze v režimu pouze pro čtení.</string>
|
||||||
|
<string name="autofill_ask_to_save_data_summary">Zeptat se na uložení dat, jakmile byl formulář přezkoušen</string>
|
||||||
|
<string name="autofill_ask_to_save_data_title">Zeptat se před uložením</string>
|
||||||
|
<string name="autofill_save_search_info_summary">Pokuste se uložit údaje hledání, když manuálně vybíráte položku</string>
|
||||||
|
<string name="autofill_save_search_info_title">Uložit info hledání</string>
|
||||||
|
<string name="autofill_close_database_summary">Zavřít databázi po samodoplnění polí</string>
|
||||||
|
<string name="autofill_close_database_title">Zavřít databázi</string>
|
||||||
|
<string name="keyboard_previous_lock_summary">Po uzamknutí databáze automaticky přepnout zpět na předchozí klávesnici</string>
|
||||||
|
<string name="keyboard_previous_lock_title">Uzamknout databázi</string>
|
||||||
|
<string name="keyboard_save_search_info_summary">Pokuste se uložit sdílené info, když manuálné vybíráte položku</string>
|
||||||
|
<string name="keyboard_save_search_info_title">Uložit sdílené info</string>
|
||||||
|
<string name="notification">Oznámení</string>
|
||||||
|
<string name="crypto_object_not_initialized">Krypto objekt nelze načíst.</string>
|
||||||
|
<string name="biometric_security_update_required">Vyžadována aktualizace biometrického zabezpečení.</string>
|
||||||
|
<string name="configure_biometric">Žádné přihlašovací ani biometrické údaje nejsou registrovány.</string>
|
||||||
|
<string name="warning_empty_recycle_bin">Trvale odstranit všechny položky z koše\?</string>
|
||||||
|
<string name="registration_mode">Režim registrace</string>
|
||||||
|
<string name="save_mode">Režim ukládání</string>
|
||||||
|
<string name="search_mode">Režim vyhledávání</string>
|
||||||
|
<string name="error_field_name_already_exists">Jméno položky již existuje.</string>
|
||||||
|
<string name="error_registration_read_only">Uložení nové položky v režimu databáze pouze pro čtení není povoleno</string>
|
||||||
|
<string name="enter">Enter</string>
|
||||||
|
<string name="backspace">Backspace</string>
|
||||||
|
<string name="select_entry">Vybrat záznam</string>
|
||||||
|
<string name="back_to_previous_keyboard">Zpět na předchozí klávesnici</string>
|
||||||
|
<string name="custom_fields">Vlastní položky</string>
|
||||||
|
<string name="advanced_unlock_delete_all_key_warning">Smazat všechny šifrovací klíče související s rozpoznáním pokročilého odemknutí\?</string>
|
||||||
|
<string name="device_credential_unlock_enable_summary">Dovolí pro otevření databáze použít heslo Vašeho zařízení</string>
|
||||||
|
<string name="device_credential_unlock_enable_title">Odemknutí heslem zařízení</string>
|
||||||
|
<string name="device_credential">Heslo zařízení</string>
|
||||||
|
<string name="credential_before_click_advanced_unlock_button">Zadejte heslo a klikněte na tlačítko \"Pokročilé odemknutí\".</string>
|
||||||
|
<string name="advanced_unlock_prompt_not_initialized">Nelze inicializovat pobídku pro pokročilé odemknutí.</string>
|
||||||
|
<string name="advanced_unlock_scanning_error">Chyba při pokročilém odemknutí: %1$s</string>
|
||||||
|
<string name="advanced_unlock_not_recognized">Otisk pro pokročilé odemknutí nebyl rozpoznán</string>
|
||||||
|
<string name="advanced_unlock_invalid_key">Nelze načíst klíč pokročilého odemknutí. Prosím, smažte jej a opakujte proces rozpoznání uzamknutí.</string>
|
||||||
|
<string name="advanced_unlock_prompt_extract_credential_message">Načíst důvěrný údaj pomocí dat pokročilého odemknutí</string>
|
||||||
|
<string name="advanced_unlock_prompt_extract_credential_title">Otevřít databázi pomocí rozpoznání pokročilého odemknutí</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_message">Varování: Pokud použijete rozpoznání pokročilého odemknutí, musíte si i nadále pamatovat hlavní heslo.</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_title">Rozpoznání pokročilého odemknutí</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_store_credential">Pro uložení důvěrných údajů otevřete pobídku pokročilého odemknutí</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_unlock_database">Pro odemknutí databáze otevřete pobídku pokročilého odemknutí</string>
|
||||||
|
<string name="menu_keystore_remove_key">Smazat klíč pokročilého odemknutí</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
<string name="clipboard_error">Nogle enheder, vil ikke lade programmer bruge udklipsholderen.</string>
|
<string name="clipboard_error">Nogle enheder, vil ikke lade programmer bruge udklipsholderen.</string>
|
||||||
<string name="clipboard_error_clear">Kunne ikke rydde udklipsholderen</string>
|
<string name="clipboard_error_clear">Kunne ikke rydde udklipsholderen</string>
|
||||||
<string name="clipboard_timeout">Udklipsholder timeout</string>
|
<string name="clipboard_timeout">Udklipsholder timeout</string>
|
||||||
<string name="clipboard_timeout_summary">Varighed af opbevaring i udklipsholder</string>
|
<string name="clipboard_timeout_summary">Varighed af opbevaring i udklipsholder (hvis det understøttes)</string>
|
||||||
<string name="select_to_copy">Vælg for at kopiere %1$s til udklipsholder</string>
|
<string name="select_to_copy">Vælg for at kopiere %1$s til udklipsholder</string>
|
||||||
<string name="retrieving_db_key">Opretter databasenøgle…</string>
|
<string name="retrieving_db_key">Opretter databasenøgle…</string>
|
||||||
<string name="database">Database</string>
|
<string name="database">Database</string>
|
||||||
@@ -168,7 +168,6 @@
|
|||||||
<string name="menu_move">Flyt</string>
|
<string name="menu_move">Flyt</string>
|
||||||
<string name="menu_paste">Indsæt</string>
|
<string name="menu_paste">Indsæt</string>
|
||||||
<string name="menu_cancel">Annuller</string>
|
<string name="menu_cancel">Annuller</string>
|
||||||
<string name="menu_biometric_remove_key">Slet gemt fingeraftryk</string>
|
|
||||||
<string name="menu_file_selection_read_only">Skrivebeskyttet</string>
|
<string name="menu_file_selection_read_only">Skrivebeskyttet</string>
|
||||||
<string name="menu_open_file_read_and_write">Modificerbar</string>
|
<string name="menu_open_file_read_and_write">Modificerbar</string>
|
||||||
<string name="read_only">Skrivebeskyttet</string>
|
<string name="read_only">Skrivebeskyttet</string>
|
||||||
@@ -191,12 +190,7 @@
|
|||||||
<string name="warning_password_encoding">Undgå adgangskodetegn uden for tekstkodningsformatet i databasefilen (ukendte tegn konverteres til samme bogstav).</string>
|
<string name="warning_password_encoding">Undgå adgangskodetegn uden for tekstkodningsformatet i databasefilen (ukendte tegn konverteres til samme bogstav).</string>
|
||||||
<string name="warning_empty_password">Bekræft brug af ingen adgangskode til beskyttelse mod oplåsning\?</string>
|
<string name="warning_empty_password">Bekræft brug af ingen adgangskode til beskyttelse mod oplåsning\?</string>
|
||||||
<string name="warning_no_encryption_key">Fortsæt uden krypteringsnøgle\?</string>
|
<string name="warning_no_encryption_key">Fortsæt uden krypteringsnøgle\?</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">Åbn biometriske forespørgsel for at låse databasen op</string>
|
|
||||||
<string name="encrypted_value_stored">Krypteret adgangskode er gemt</string>
|
<string name="encrypted_value_stored">Krypteret adgangskode er gemt</string>
|
||||||
<string name="biometric_invalid_key">Kan ikke læse den biometriske nøgle. Slet den og gentag den biometriske genkendelsesprocedure.</string>
|
|
||||||
<string name="biometric_not_recognized">Kunne ikke genkende biometrisk</string>
|
|
||||||
<string name="biometric_scanning_error">Biometrisk fejl: %1$s</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">Åbn den biometriske prompt for at gemme legitimationsoplysninger</string>
|
|
||||||
<string name="no_credentials_stored">Databasen har endnu ikke en adgangskode.</string>
|
<string name="no_credentials_stored">Databasen har endnu ikke en adgangskode.</string>
|
||||||
<string name="database_history">Historik</string>
|
<string name="database_history">Historik</string>
|
||||||
<string name="menu_appearance_settings">Udseende</string>
|
<string name="menu_appearance_settings">Udseende</string>
|
||||||
@@ -212,7 +206,7 @@
|
|||||||
<string name="list_password_generator_options_summary">Angiv tilladte tegn for adgangskodegenerator</string>
|
<string name="list_password_generator_options_summary">Angiv tilladte tegn for adgangskodegenerator</string>
|
||||||
<string name="clipboard">Udklipsholder</string>
|
<string name="clipboard">Udklipsholder</string>
|
||||||
<string name="clipboard_notifications_title">Udklipsholdermeddelelser</string>
|
<string name="clipboard_notifications_title">Udklipsholdermeddelelser</string>
|
||||||
<string name="clipboard_notifications_summary">Aktivér udklipsholder for at kopiere felter når en post vises</string>
|
<string name="clipboard_notifications_summary">Vis udklipsholder for at kopiere felter når en post vises</string>
|
||||||
<string name="clipboard_warning">Hvis automatisk sletning af udklipsholder mislykkes, slet historikken manuelt.</string>
|
<string name="clipboard_warning">Hvis automatisk sletning af udklipsholder mislykkes, slet historikken manuelt.</string>
|
||||||
<string name="lock">Lås</string>
|
<string name="lock">Lås</string>
|
||||||
<string name="lock_database_screen_off_title">Skærmlås</string>
|
<string name="lock_database_screen_off_title">Skærmlås</string>
|
||||||
@@ -222,9 +216,8 @@
|
|||||||
<string name="biometric_unlock_enable_summary">Giver mulighed for at scanne biometriske for at åbne databasen</string>
|
<string name="biometric_unlock_enable_summary">Giver mulighed for at scanne biometriske for at åbne databasen</string>
|
||||||
<string name="biometric_delete_all_key_title">Slet krypteringsnøgler</string>
|
<string name="biometric_delete_all_key_title">Slet krypteringsnøgler</string>
|
||||||
<string name="biometric_delete_all_key_summary">Slet alle krypteringsnøgler, der er relateret til biometrisk genkendelse</string>
|
<string name="biometric_delete_all_key_summary">Slet alle krypteringsnøgler, der er relateret til biometrisk genkendelse</string>
|
||||||
<string name="biometric_delete_all_key_warning">Slet alle krypteringsnøgler, der er relateret til biometrisk genkendelse\?</string>
|
|
||||||
<string name="unavailable_feature_text">Funktionen kunne ikke startes.</string>
|
<string name="unavailable_feature_text">Funktionen kunne ikke startes.</string>
|
||||||
<string name="unavailable_feature_version">Android-version %1$s opfylder ikke minimum versionskrav %2$s.</string>
|
<string name="unavailable_feature_version">Enheden kører Android %1$s, men har brug for %2$s eller nyere.</string>
|
||||||
<string name="unavailable_feature_hardware">Kunne ikke finde den tilsvarende hardware.</string>
|
<string name="unavailable_feature_hardware">Kunne ikke finde den tilsvarende hardware.</string>
|
||||||
<string name="file_name">Filnavn</string>
|
<string name="file_name">Filnavn</string>
|
||||||
<string name="path">Sti</string>
|
<string name="path">Sti</string>
|
||||||
@@ -247,13 +240,13 @@
|
|||||||
<string name="magic_keyboard_title">Magikeyboard</string>
|
<string name="magic_keyboard_title">Magikeyboard</string>
|
||||||
<string name="magic_keyboard_explanation_summary">Aktiver et brugerdefineret tastatur, der udfylder adgangskoder og alle identitetsfelter</string>
|
<string name="magic_keyboard_explanation_summary">Aktiver et brugerdefineret tastatur, der udfylder adgangskoder og alle identitetsfelter</string>
|
||||||
<string name="allow_no_password_title">Tillad ingen hovednøgle</string>
|
<string name="allow_no_password_title">Tillad ingen hovednøgle</string>
|
||||||
<string name="allow_no_password_summary">Aktiver knappen \"Åbn\", hvis der ikke er valgt nogen legitimationsoplysninger</string>
|
<string name="allow_no_password_summary">Tillader at trykke på knappen \"Åbn\", hvis der ikke er valgt nogen legitimationsoplysninger</string>
|
||||||
<string name="enable_read_only_title">Skrivebeskyttet</string>
|
<string name="enable_read_only_title">Skrivebeskyttet</string>
|
||||||
<string name="enable_read_only_summary">Åbn database skrivebeskyttet som standard</string>
|
<string name="enable_read_only_summary">Åbn database skrivebeskyttet som standard</string>
|
||||||
<string name="enable_education_screens_title">Pædagogiske tips</string>
|
<string name="enable_education_screens_title">Pædagogiske tips</string>
|
||||||
<string name="enable_education_screens_summary">Fremhæv elementer for at lære, hvordan programmet fungerer</string>
|
<string name="enable_education_screens_summary">Fremhæv elementer for at lære, hvordan programmet fungerer</string>
|
||||||
<string name="reset_education_screens_title">Nulstil pædagogiske tip</string>
|
<string name="reset_education_screens_title">Nulstil pædagogiske tip</string>
|
||||||
<string name="reset_education_screens_summary">Vis alle pædagogiske info igen</string>
|
<string name="reset_education_screens_summary">Vis al uddannelsesinformation igen</string>
|
||||||
<string name="reset_education_screens_text">Nulstilling af pædagogiske tips</string>
|
<string name="reset_education_screens_text">Nulstilling af pædagogiske tips</string>
|
||||||
<string name="education_create_database_title">Opret databasefilen</string>
|
<string name="education_create_database_title">Opret databasefilen</string>
|
||||||
<string name="education_create_database_summary">Opret den første adgangskodeadministrationsfil.</string>
|
<string name="education_create_database_summary">Opret den første adgangskodeadministrationsfil.</string>
|
||||||
@@ -265,8 +258,6 @@
|
|||||||
\nGrupper (~mapper) organiserer poster i databasen.</string>
|
\nGrupper (~mapper) organiserer poster i databasen.</string>
|
||||||
<string name="education_search_title">Søg i poster</string>
|
<string name="education_search_title">Søg i poster</string>
|
||||||
<string name="education_search_summary">Indtast titel, brugernavn eller indhold af andre felter for at hente adgangskoder.</string>
|
<string name="education_search_summary">Indtast titel, brugernavn eller indhold af andre felter for at hente adgangskoder.</string>
|
||||||
<string name="education_biometric_title">Biometrisk oplåsning af databasen</string>
|
|
||||||
<string name="education_biometric_summary">Knyt adgangskoden til det scannede biometri for hurtigt at låse databasen op.</string>
|
|
||||||
<string name="education_entry_edit_title">Rediger posten</string>
|
<string name="education_entry_edit_title">Rediger posten</string>
|
||||||
<string name="education_entry_edit_summary">Rediger post med brugerdefinerede felter. Pool data kan refereres mellem forskellige indtastningsfelter.</string>
|
<string name="education_entry_edit_summary">Rediger post med brugerdefinerede felter. Pool data kan refereres mellem forskellige indtastningsfelter.</string>
|
||||||
<string name="education_generate_password_title">Opret en stærk adgangskode</string>
|
<string name="education_generate_password_title">Opret en stærk adgangskode</string>
|
||||||
@@ -304,7 +295,6 @@
|
|||||||
<string name="contribute">Bidrag</string>
|
<string name="contribute">Bidrag</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string name="style_choose_title">Tema</string>
|
<string name="style_choose_title">Tema</string>
|
||||||
<string name="style_choose_summary">Tema, der bruges i programmet</string>
|
<string name="style_choose_summary">Tema, der bruges i programmet</string>
|
||||||
<string name="icon_pack_choose_title">Ikonpakke</string>
|
<string name="icon_pack_choose_title">Ikonpakke</string>
|
||||||
@@ -364,10 +354,6 @@
|
|||||||
<string name="content_description_keyboard_close_fields">Luk felter</string>
|
<string name="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="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">Avanceret oplåsning</string>
|
||||||
<string name="biometric_prompt_store_credential_title">Gem biometrisk genkendelse</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">Advarsel: hovedadgangskoden skal stadig huskes, hvis der bruges biometrisk genkendelse.</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">Åbn database med biometrisk genkendelse</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_message">Uddrag databasens legitimationsoplysninger med biometriske data</string>
|
|
||||||
<string name="biometric">Biometrisk</string>
|
<string name="biometric">Biometrisk</string>
|
||||||
<string name="biometric_auto_open_prompt_title">Åbn automatisk biometrisk prompt</string>
|
<string name="biometric_auto_open_prompt_title">Åbn automatisk biometrisk prompt</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">Spørg automatisk efter biometri, hvis databasen er konfigureret til at bruge den</string>
|
<string name="biometric_auto_open_prompt_summary">Spørg automatisk efter biometri, hvis databasen er konfigureret til at bruge den</string>
|
||||||
@@ -401,7 +387,7 @@
|
|||||||
<string name="clipboard_explanation_summary">Kopier indtastningsfelter ved hjælp af enhedens udklipsholder</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 avanceret oplåsning for at gøre det lettere at åbne en database</string>
|
||||||
<string name="database_data_compression_title">Datakomprimering</string>
|
<string name="database_data_compression_title">Datakomprimering</string>
|
||||||
<string name="database_data_compression_summary">Datakomprimering reducerer databasens størrelse.</string>
|
<string name="database_data_compression_summary">Datakomprimering reducerer databasens størrelse</string>
|
||||||
<string name="max_history_items_title">Max. antal</string>
|
<string name="max_history_items_title">Max. antal</string>
|
||||||
<string name="max_history_items_summary">Begræns antallet af historikposter pr. indtastning</string>
|
<string name="max_history_items_summary">Begræns antallet af historikposter pr. indtastning</string>
|
||||||
<string name="max_history_size_title">Max. størrelse</string>
|
<string name="max_history_size_title">Max. størrelse</string>
|
||||||
@@ -424,7 +410,6 @@
|
|||||||
<string name="command_execution">Udfører kommandoen…</string>
|
<string name="command_execution">Udfører kommandoen…</string>
|
||||||
<string name="warning_permanently_delete_nodes">Slet markerede noder permanent\?</string>
|
<string name="warning_permanently_delete_nodes">Slet markerede noder permanent\?</string>
|
||||||
<string name="keystore_not_accessible">Nøglelageret er ikke korrekt initialiseret.</string>
|
<string name="keystore_not_accessible">Nøglelageret er ikke korrekt initialiseret.</string>
|
||||||
<string name="credential_before_click_biometric_button">Indtast adgangskoden, og klik derefter på knappen \"Biometrisk\".</string>
|
|
||||||
<string name="recycle_bin_group_title">Papirkurvsgruppe</string>
|
<string name="recycle_bin_group_title">Papirkurvsgruppe</string>
|
||||||
<string name="enable_auto_save_database_title">Gem automatisk database</string>
|
<string name="enable_auto_save_database_title">Gem automatisk database</string>
|
||||||
<string name="enable_auto_save_database_summary">Gem databasen efter hver en vigtig handling (i tilstanden \"Modificerbar\")</string>
|
<string name="enable_auto_save_database_summary">Gem databasen efter hver en vigtig handling (i tilstanden \"Modificerbar\")</string>
|
||||||
@@ -448,10 +433,10 @@
|
|||||||
<string name="html_about_contribution">For at <strong>holde vores frihed</strong>, <strong>rette fejl</strong>, <strong>tilføje funktioner</strong> og <strong>at være altid aktiv</strong>, regner vi med <strong>bidrag</strong>.</string>
|
<string name="html_about_contribution">For at <strong>holde vores frihed</strong>, <strong>rette fejl</strong>, <strong>tilføje funktioner</strong> og <strong>at være altid aktiv</strong>, regner vi med <strong>bidrag</strong>.</string>
|
||||||
<string name="auto_focus_search_title">Hurtig søgning</string>
|
<string name="auto_focus_search_title">Hurtig søgning</string>
|
||||||
<string name="auto_focus_search_summary">Anmod om en søgning når en database åbnes</string>
|
<string name="auto_focus_search_summary">Anmod om en søgning når en database åbnes</string>
|
||||||
<string name="remember_database_locations_title">Gem placering af databaser</string>
|
<string name="remember_database_locations_title">Husk placeringer af databaser</string>
|
||||||
<string name="remember_database_locations_summary">Husk placeringen af databaser</string>
|
<string name="remember_database_locations_summary">Holder styr på, hvor databaserne gemmes</string>
|
||||||
<string name="remember_keyfile_locations_title">Gem placering af nøglefiler</string>
|
<string name="remember_keyfile_locations_title">Husk placering af nøglefiler</string>
|
||||||
<string name="remember_keyfile_locations_summary">Husker placeringen af databasernøglefiler</string>
|
<string name="remember_keyfile_locations_summary">Holder styr på, hvor nøglefiler gemmes</string>
|
||||||
<string name="show_recent_files_title">Vis seneste filer</string>
|
<string name="show_recent_files_title">Vis seneste filer</string>
|
||||||
<string name="show_recent_files_summary">Vis placeringer af de seneste databaser</string>
|
<string name="show_recent_files_summary">Vis placeringer af de seneste databaser</string>
|
||||||
<string name="hide_broken_locations_title">Skjule brudte databaselinks</string>
|
<string name="hide_broken_locations_title">Skjule brudte databaselinks</string>
|
||||||
@@ -464,7 +449,7 @@
|
|||||||
<string name="discard">Kassér</string>
|
<string name="discard">Kassér</string>
|
||||||
<string name="discard_changes">Kasser ændringer\?</string>
|
<string name="discard_changes">Kasser ændringer\?</string>
|
||||||
<string name="validate">Valider</string>
|
<string name="validate">Valider</string>
|
||||||
<string name="autofill_auto_search_summary">Foreslår automatisk søgeresultater fra webdomænet eller applikationsId</string>
|
<string name="autofill_auto_search_summary">Foreslår automatisk søgeresultater fra webdomænet eller applikations-id</string>
|
||||||
<string name="autofill_auto_search_title">Automatisk søgning</string>
|
<string name="autofill_auto_search_title">Automatisk søgning</string>
|
||||||
<string name="lock_database_show_button_summary">Viser låseknappen i brugergrænsefladen</string>
|
<string name="lock_database_show_button_summary">Viser låseknappen i brugergrænsefladen</string>
|
||||||
<string name="lock_database_show_button_title">Vis låseknap</string>
|
<string name="lock_database_show_button_title">Vis låseknap</string>
|
||||||
@@ -479,14 +464,53 @@
|
|||||||
<string name="autofill_web_domain_blocklist_title">Blokeringsliste for webdomæne</string>
|
<string name="autofill_web_domain_blocklist_title">Blokeringsliste for webdomæne</string>
|
||||||
<string name="autofill_application_id_blocklist_summary">Blokeringsliste der forhindrer automatisk udfyldning af programmer</string>
|
<string name="autofill_application_id_blocklist_summary">Blokeringsliste der forhindrer automatisk udfyldning af programmer</string>
|
||||||
<string name="autofill_application_id_blocklist_title">Blokeringsliste for program</string>
|
<string name="autofill_application_id_blocklist_title">Blokeringsliste for program</string>
|
||||||
<string name="keyboard_previous_fill_in_summary">Skift automatisk tilbage til det forrige tastatur efter udførelse af automatisk tastehandling</string>
|
<string name="keyboard_previous_fill_in_summary">Skift automatisk tilbage til det forrige tastatur efter udførelse af \"Automatisk tastehandling\"</string>
|
||||||
<string name="keyboard_previous_fill_in_title">Auto nøglehandling</string>
|
<string name="keyboard_previous_fill_in_title">Auto nøglehandling</string>
|
||||||
<string name="keyboard_previous_database_credentials_summary">Skift automatisk tilbage til det forrige tastatur på databasens legitimationsskærm</string>
|
<string name="keyboard_previous_database_credentials_summary">Skift automatisk tilbage til det forrige tastatur på databasens legitimationsskærm</string>
|
||||||
<string name="keyboard_previous_database_credentials_title">Database legitimationsoplysninger skærm</string>
|
<string name="keyboard_previous_database_credentials_title">Skærmbilledet til databaselegitimationsoplysninger</string>
|
||||||
<string name="keyboard_change">Skifte tastatur</string>
|
<string name="keyboard_change">Skifte tastatur</string>
|
||||||
<string name="filter">Filter</string>
|
<string name="filter">Filter</string>
|
||||||
<string name="subdomain_search_summary">Søg på webdomæner med begrænsninger på underdomæner</string>
|
<string name="subdomain_search_summary">Søg på webdomæner med begrænsninger på underdomæner</string>
|
||||||
<string name="subdomain_search_title">Underdomæne søgning</string>
|
<string name="subdomain_search_title">Underdomæne søgning</string>
|
||||||
<string name="error_string_type">Teksten stemmer ikke overens med det ønskede element.</string>
|
<string name="error_string_type">Teksten stemmer ikke overens med det ønskede element.</string>
|
||||||
<string name="content_description_add_item">Tilføj element</string>
|
<string name="content_description_add_item">Tilføj element</string>
|
||||||
|
<string name="show_uuid_summary">Viser UUID\'en, der er knyttet til en post</string>
|
||||||
|
<string name="show_uuid_title">Vis UUID</string>
|
||||||
|
<string name="upload_attachment">Overfør %1$s</string>
|
||||||
|
<string name="education_add_attachment_title">Vedhæft fil</string>
|
||||||
|
<string name="autofill_read_only_save">Lagring af data er ikke tilladt for en database, der er åbnet som skrivebeskyttet.</string>
|
||||||
|
<string name="autofill_ask_to_save_data_summary">Bed om at gemme data, når en formular er valideret</string>
|
||||||
|
<string name="autofill_ask_to_save_data_title">Bed om at gemme data</string>
|
||||||
|
<string name="autofill_save_search_info_title">Gem søgeoplysninger</string>
|
||||||
|
<string name="autofill_close_database_summary">Luk databasen efter en markering af autofyld</string>
|
||||||
|
<string name="autofill_close_database_title">Luk database</string>
|
||||||
|
<string name="keyboard_previous_lock_summary">Skift automatisk tilbage til det forrige tastatur efter låsning af databasen</string>
|
||||||
|
<string name="keyboard_previous_lock_title">Lås databasen</string>
|
||||||
|
<string name="keyboard_save_search_info_title">Gem delte oplysninger</string>
|
||||||
|
<string name="notification">Anmeldelse</string>
|
||||||
|
<string name="database_data_remove_unlinked_attachments_summary">Fjerner vedhæftede filer indeholdt i databasen, men ikke knyttet til en post</string>
|
||||||
|
<string name="database_data_remove_unlinked_attachments_title">Fjern ikke-sammenkædede data</string>
|
||||||
|
<string name="data">Data</string>
|
||||||
|
<string name="crypto_object_not_initialized">Kryptoobjektet kunne ikke hentes.</string>
|
||||||
|
<string name="biometric_security_update_required">Biometrisk sikkerhedsopdatering påkrævet.</string>
|
||||||
|
<string name="warning_empty_keyfile_explanation">Indholdet af nøglefilen bør aldrig ændres og bør i bedste fald indeholde tilfældigt genererede data.</string>
|
||||||
|
<string name="warning_empty_keyfile">Det anbefales ikke at tilføje en tom nøglefil.</string>
|
||||||
|
<string name="warning_sure_remove_data">Fjern alligevel disse data\?</string>
|
||||||
|
<string name="warning_remove_unlinked_attachment">Fjernelse af ikke-linkede data kan mindske størrelsen på databasen, men kan også slette data, der bruges til KeePass-plugins.</string>
|
||||||
|
<string name="warning_sure_add_file">Tilføj alligevel filen\?</string>
|
||||||
|
<string name="warning_replace_file">Overførelsen af filen erstatter den eksisterende.</string>
|
||||||
|
<string name="warning_file_too_big">En KeePass database formodes kun at indeholde små hjælpefiler (såsom PGP nøglefiler).
|
||||||
|
\n
|
||||||
|
\nDatabasen kan blive meget stor og reducere ydeevnen med denne overførelse.</string>
|
||||||
|
<string name="warning_empty_recycle_bin">Slet alle noder permanent fra papirkurven\?</string>
|
||||||
|
<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="content_description_credentials_information">Oplysninger om legitimationsoplysninger</string>
|
||||||
|
<string name="configure_biometric">Der er ikke tilmeldt biometriske legitimationsoplysninger eller enhedsoplysninger.</string>
|
||||||
|
<string name="education_add_attachment_summary">Overfør en vedhæftet fil til posten for at gemme vigtige eksterne data.</string>
|
||||||
|
<string name="autofill_save_search_info_summary">Forsøger at gemme delte oplysninger, når der foretages et manuelt indtastningsvalg</string>
|
||||||
|
<string name="keyboard_save_search_info_summary">Forsøger at gemme delte oplysninger, når der foretages et manuelt indtastningsvalg</string>
|
||||||
|
<string name="error_field_name_already_exists">Feltnavnet findes allerede.</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
Translations from David Ramiro
|
Translations from David Ramiro
|
||||||
--><resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
--><resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||||
<string name="contact">Kontakt</string>
|
<string name="contact">Kontakt</string>
|
||||||
<string name="contribution">Beitrag</string>
|
<string name="contribution">Beiträge</string>
|
||||||
<string name="feedback">Rückmeldung</string>
|
<string name="feedback">Rückmeldung</string>
|
||||||
<string name="homepage">Webseite</string>
|
<string name="homepage">Webseite</string>
|
||||||
<string name="about_description">Android-Implementierung des Passwortmanagers KeePass</string>
|
<string name="about_description">Android-Implementierung des Passwortmanagers KeePass</string>
|
||||||
@@ -43,9 +43,9 @@
|
|||||||
<string name="clipboard_timeout">Zwischenablage-Timeout</string>
|
<string name="clipboard_timeout">Zwischenablage-Timeout</string>
|
||||||
<string name="clipboard_timeout_summary">Dauer der Speicherung in der Zwischenablage (falls vom Gerät unterstützt)</string>
|
<string name="clipboard_timeout_summary">Dauer der Speicherung in der Zwischenablage (falls vom Gerät unterstützt)</string>
|
||||||
<string name="select_to_copy">%1$s in die Zwischenablage kopieren</string>
|
<string name="select_to_copy">%1$s in die Zwischenablage kopieren</string>
|
||||||
<string name="retrieving_db_key">Datenbank-Schlüsseldatei erzeugen…</string>
|
<string name="retrieving_db_key">Datenbank-Schlüsseldatei erzeugen …</string>
|
||||||
<string name="database">Datenbank</string>
|
<string name="database">Datenbank</string>
|
||||||
<string name="decrypting_db">Entschlüsselung der Datenbankinhalte…</string>
|
<string name="decrypting_db">Entschlüsselung der Datenbankinhalte …</string>
|
||||||
<string name="default_checkbox">Als Standard-Datenbank verwenden</string>
|
<string name="default_checkbox">Als Standard-Datenbank verwenden</string>
|
||||||
<string name="digits">Zahlen</string>
|
<string name="digits">Zahlen</string>
|
||||||
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft ist <strong>quelloffen</strong> und <strong>ohne Werbung</strong>.\nDie Nutzung der Software erfolgt auf eigene Verantwortung und ohne jegliche Garantie. Die Applikation wird unter den Bedingungen der <strong>GPLv3</strong> lizenziert.</string>
|
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft ist <strong>quelloffen</strong> und <strong>ohne Werbung</strong>.\nDie Nutzung der Software erfolgt auf eigene Verantwortung und ohne jegliche Garantie. Die Applikation wird unter den Bedingungen der <strong>GPLv3</strong> lizenziert.</string>
|
||||||
@@ -97,7 +97,7 @@
|
|||||||
<string name="length">Länge</string>
|
<string name="length">Länge</string>
|
||||||
<string name="list_size_title">Größe der Listenelemente</string>
|
<string name="list_size_title">Größe der Listenelemente</string>
|
||||||
<string name="list_size_summary">Schriftgröße der Listenelemente</string>
|
<string name="list_size_summary">Schriftgröße der Listenelemente</string>
|
||||||
<string name="loading_database">Datenbank wird geladen…</string>
|
<string name="loading_database">Datenbank wird geladen …</string>
|
||||||
<string name="lowercase">Kleinbuchstaben</string>
|
<string name="lowercase">Kleinbuchstaben</string>
|
||||||
<string name="hide_password_title">Passwort verstecken</string>
|
<string name="hide_password_title">Passwort verstecken</string>
|
||||||
<string name="hide_password_summary">Passwörter standardmäßig mit (***) maskieren</string>
|
<string name="hide_password_summary">Passwörter standardmäßig mit (***) maskieren</string>
|
||||||
@@ -118,12 +118,12 @@
|
|||||||
<string name="never">Nie</string>
|
<string name="never">Nie</string>
|
||||||
<string name="no_results">Keine Suchergebnisse</string>
|
<string name="no_results">Keine Suchergebnisse</string>
|
||||||
<string name="no_url_handler">Bitte einen Webbrowser installieren, um diese URL zu öffnen.</string>
|
<string name="no_url_handler">Bitte einen Webbrowser installieren, um diese URL zu öffnen.</string>
|
||||||
<string name="omit_backup_search_title">Papierkorb/Backup nicht durchsuchen</string>
|
<string name="omit_backup_search_title">Papierkorb/Sicherung nicht durchsuchen</string>
|
||||||
<string name="omit_backup_search_summary">Die Gruppen „Backup“ und „Papierkorb“ werden bei der Suche nicht berücksichtigt</string>
|
<string name="omit_backup_search_summary">Die Gruppen „Sicherung“ und „Papierkorb“ werden bei der Suche nicht berücksichtigt</string>
|
||||||
<string name="auto_focus_search_title">Schnellsuche</string>
|
<string name="auto_focus_search_title">Schnellsuche</string>
|
||||||
<string name="auto_focus_search_summary">Beim Öffnen einer Datenbank eine Suche veranlassen</string>
|
<string name="auto_focus_search_summary">Beim Öffnen einer Datenbank eine Suche veranlassen</string>
|
||||||
<string name="progress_create">Neue Datenbank anlegen…</string>
|
<string name="progress_create">Neue Datenbank anlegen …</string>
|
||||||
<string name="progress_title">Ausführen…</string>
|
<string name="progress_title">Ausführen …</string>
|
||||||
<string name="protection">Sicherheit</string>
|
<string name="protection">Sicherheit</string>
|
||||||
<string name="read_only">Schreibgeschützt</string>
|
<string name="read_only">Schreibgeschützt</string>
|
||||||
<string name="read_only_warning">KeePassDX benötigt Schreibrechte, um etwas an der Datenbank zu ändern.</string>
|
<string name="read_only_warning">KeePassDX benötigt Schreibrechte, um etwas an der Datenbank zu ändern.</string>
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
<string name="root">Start</string>
|
<string name="root">Start</string>
|
||||||
<string name="rounds">Schlüsseltransformationen</string>
|
<string name="rounds">Schlüsseltransformationen</string>
|
||||||
<string name="rounds_explanation">Zusätzliche Schlüsseltransformationen bieten einen besseren Schutz gegen Wörterbuch- oder Brute-Force-Angriffe. Allerdings dauert dann auch das Laden und Speichern der Datenbank entsprechend länger.</string>
|
<string name="rounds_explanation">Zusätzliche Schlüsseltransformationen bieten einen besseren Schutz gegen Wörterbuch- oder Brute-Force-Angriffe. Allerdings dauert dann auch das Laden und Speichern der Datenbank entsprechend länger.</string>
|
||||||
<string name="saving_database">Datenbank wird gespeichert…</string>
|
<string name="saving_database">Datenbank wird gespeichert …</string>
|
||||||
<string name="space">Leerzeichen</string>
|
<string name="space">Leerzeichen</string>
|
||||||
<string name="search_label">Suchen</string>
|
<string name="search_label">Suchen</string>
|
||||||
<string name="sort_db">Natürliche Sortierung</string>
|
<string name="sort_db">Natürliche Sortierung</string>
|
||||||
@@ -185,13 +185,9 @@
|
|||||||
<string name="lock">Sperren</string>
|
<string name="lock">Sperren</string>
|
||||||
<string name="list_password_generator_options_summary">Erlaubte Zeichen für Passwortgenerator festlegen</string>
|
<string name="list_password_generator_options_summary">Erlaubte Zeichen für Passwortgenerator festlegen</string>
|
||||||
<string name="list_password_generator_options_title">Passwortzeichen</string>
|
<string name="list_password_generator_options_title">Passwortzeichen</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">Biometrie-Abfrage öffnen, um die Datenbank zu entsperren</string>
|
|
||||||
<string name="encrypted_value_stored">Verschlüsseltes Passwort wurde gespeichert</string>
|
<string name="encrypted_value_stored">Verschlüsseltes Passwort wurde gespeichert</string>
|
||||||
<string name="biometric_invalid_key">Der biometrische Schlüssel kann nicht gelesen werden. Bitte löschen Sie ihn und wiederholen Sie den biometrischen Erkennungsprozess.</string>
|
|
||||||
<string name="biometric_scanning_error">Biometrischer Fehler: %1$s</string>
|
|
||||||
<string name="database_history">Verlauf</string>
|
<string name="database_history">Verlauf</string>
|
||||||
<string name="general">Allgemein</string>
|
<string name="general">Allgemein</string>
|
||||||
<string name="open_biometric_prompt_store_credential">Biometrische Abfrage öffnen, um Anmeldedaten zu speichern.</string>
|
|
||||||
<string name="no_credentials_stored">Diese Datenbank hat noch kein Passwort.</string>
|
<string name="no_credentials_stored">Diese Datenbank hat noch kein Passwort.</string>
|
||||||
<string name="encryption">Verschlüsselung</string>
|
<string name="encryption">Verschlüsselung</string>
|
||||||
<string name="key_derivation_function">Schlüsselableitungsfunktion</string>
|
<string name="key_derivation_function">Schlüsselableitungsfunktion</string>
|
||||||
@@ -200,7 +196,6 @@
|
|||||||
<string name="error_autofill_enable_service">Dienst für automatisches Ausfüllen kann nicht aktiviert werden.</string>
|
<string name="error_autofill_enable_service">Dienst für automatisches Ausfüllen kann nicht aktiviert werden.</string>
|
||||||
<string name="copy_field">Kopie von %1$s</string>
|
<string name="copy_field">Kopie von %1$s</string>
|
||||||
<string name="menu_form_filling_settings">Formularausfüllung</string>
|
<string name="menu_form_filling_settings">Formularausfüllung</string>
|
||||||
<string name="menu_biometric_remove_key">Gespeicherten biometrischen Schlüssel löschen</string>
|
|
||||||
<string name="encryption_explanation">Verschlüsselungsalgorithmus der Datenbank wird für sämtliche Daten verwendet.</string>
|
<string name="encryption_explanation">Verschlüsselungsalgorithmus der Datenbank wird für sämtliche Daten verwendet.</string>
|
||||||
<string name="kdf_explanation">Um den Schlüssel für den Verschlüsselungsalgorithmus zu generieren, wird der Hauptschlüssel umgewandelt, wobei ein zufälliger Salt in der Schlüsselberechnung verwendet wird.</string>
|
<string name="kdf_explanation">Um den Schlüssel für den Verschlüsselungsalgorithmus zu generieren, wird der Hauptschlüssel umgewandelt, wobei ein zufälliger Salt in der Schlüsselberechnung verwendet wird.</string>
|
||||||
<string name="memory_usage">Speichernutzung</string>
|
<string name="memory_usage">Speichernutzung</string>
|
||||||
@@ -216,7 +211,6 @@
|
|||||||
<string name="sort_creation_time">Erstelldatum</string>
|
<string name="sort_creation_time">Erstelldatum</string>
|
||||||
<string name="sort_last_modify_time">Änderungsdatum</string>
|
<string name="sort_last_modify_time">Änderungsdatum</string>
|
||||||
<string name="sort_last_access_time">Zugriffsdatum</string>
|
<string name="sort_last_access_time">Zugriffsdatum</string>
|
||||||
<string name="biometric_not_recognized">Biometrische Daten nicht erkannt</string>
|
|
||||||
<string name="autofill">Automatisches Ausfüllen</string>
|
<string name="autofill">Automatisches Ausfüllen</string>
|
||||||
<string name="autofill_service_name">KeePassDX autom. Formularausfüllung</string>
|
<string name="autofill_service_name">KeePassDX autom. Formularausfüllung</string>
|
||||||
<string name="autofill_sign_in_prompt">Mit KeePassDX anmelden</string>
|
<string name="autofill_sign_in_prompt">Mit KeePassDX anmelden</string>
|
||||||
@@ -225,7 +219,6 @@
|
|||||||
<string name="clipboard">Zwischenablage</string>
|
<string name="clipboard">Zwischenablage</string>
|
||||||
<string name="biometric_delete_all_key_title">Verschlüsselungsschlüssel löschen</string>
|
<string name="biometric_delete_all_key_title">Verschlüsselungsschlüssel löschen</string>
|
||||||
<string name="biometric_delete_all_key_summary">Alle mit der biometrischen Erkennung verbundenen Verschlüsselungsschlüssel löschen.</string>
|
<string name="biometric_delete_all_key_summary">Alle mit der biometrischen Erkennung verbundenen Verschlüsselungsschlüssel löschen.</string>
|
||||||
<string name="biometric_delete_all_key_warning">Sind Sie sicher, dass Sie alle mit der biometrischen Erkennung verknüpften Schlüssel löschen möchten\?</string>
|
|
||||||
<string name="unavailable_feature_version">Auf dem Gerät läuft Android %1$s, eine Version ab %2$s wäre aber nötig.</string>
|
<string name="unavailable_feature_version">Auf dem Gerät läuft Android %1$s, eine Version ab %2$s wäre aber nötig.</string>
|
||||||
<string name="unavailable_feature_hardware">Keine entsprechende Hardware.</string>
|
<string name="unavailable_feature_hardware">Keine entsprechende Hardware.</string>
|
||||||
<string name="recycle_bin_title">Papierkorb-Nutzung</string>
|
<string name="recycle_bin_title">Papierkorb-Nutzung</string>
|
||||||
@@ -256,8 +249,6 @@
|
|||||||
\nGruppen (wie Ordner) helfen, Einträge in der Datenbank zu ordnen.</string>
|
\nGruppen (wie Ordner) helfen, Einträge in der Datenbank zu ordnen.</string>
|
||||||
<string name="education_search_title">Einträge durchsuchen</string>
|
<string name="education_search_title">Einträge durchsuchen</string>
|
||||||
<string name="education_search_summary">Titel, Benutzernamen oder Inhalte anderer Feldern eingeben, um die Passwörter wiederzufinden.</string>
|
<string name="education_search_summary">Titel, Benutzernamen oder Inhalte anderer Feldern eingeben, um die Passwörter wiederzufinden.</string>
|
||||||
<string name="education_biometric_title">Biometrische Datenbank-Entsperrung</string>
|
|
||||||
<string name="education_biometric_summary">Verknüpft Ihr Passwort mit Ihrer gescannten Biometrie, um Ihre Datenbank schnell zu entsperren.</string>
|
|
||||||
<string name="education_entry_edit_title">Eintrag bearbeiten</string>
|
<string name="education_entry_edit_title">Eintrag bearbeiten</string>
|
||||||
<string name="education_entry_edit_summary">Bearbeiten Sie Ihren Eintrag mit persönlichen Feldern. Persönliche Felder können mit Querverweisen aus anderen Einträgen ergänzt werden.</string>
|
<string name="education_entry_edit_summary">Bearbeiten Sie Ihren Eintrag mit persönlichen Feldern. Persönliche Felder können mit Querverweisen aus anderen Einträgen ergänzt werden.</string>
|
||||||
<string name="education_generate_password_title">Ein starkes Passwort erstellen</string>
|
<string name="education_generate_password_title">Ein starkes Passwort erstellen</string>
|
||||||
@@ -285,12 +276,11 @@
|
|||||||
<string name="html_text_dev_feature_encourage">Sie ermutigen die Entwickler:innen, <strong>neue Funktionen</strong> einzuführen und gemäß Ihren Anmerkungen <strong>Fehler zu beheben</strong>.</string>
|
<string name="html_text_dev_feature_encourage">Sie ermutigen die Entwickler:innen, <strong>neue Funktionen</strong> einzuführen und gemäß Ihren Anmerkungen <strong>Fehler zu beheben</strong>.</string>
|
||||||
<string name="html_text_dev_feature_thanks">Vielen Dank für Ihre Unterstützung.</string>
|
<string name="html_text_dev_feature_thanks">Vielen Dank für Ihre Unterstützung.</string>
|
||||||
<string name="html_text_dev_feature_work_hard">Wir bemühen uns, diese Funktion bald zu veröffentlichen.</string>
|
<string name="html_text_dev_feature_work_hard">Wir bemühen uns, diese Funktion bald zu veröffentlichen.</string>
|
||||||
<string name="html_text_dev_feature_upgrade">Vergessen Sie nicht, Ihre App aktuell zu halten, indem Sie neue Versionen installieren.</string>
|
<string name="html_text_dev_feature_upgrade">Vergessen Sie nicht, Ihre Anwendung aktuell zu halten, indem Sie neue Versionen installieren.</string>
|
||||||
<string name="download">Download</string>
|
<string name="download">Download</string>
|
||||||
<string name="contribute">Unterstützen</string>
|
<string name="contribute">Unterstützen</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string name="icon_pack_choose_title">Symbolpaket</string>
|
<string name="icon_pack_choose_title">Symbolpaket</string>
|
||||||
<string name="icon_pack_choose_summary">In der App verwendetes Symbolpaket</string>
|
<string name="icon_pack_choose_summary">In der App verwendetes Symbolpaket</string>
|
||||||
<string name="error_move_folder_in_itself">Eine Gruppe kann nicht in sich selbst verschoben werden.</string>
|
<string name="error_move_folder_in_itself">Eine Gruppe kann nicht in sich selbst verschoben werden.</string>
|
||||||
@@ -346,7 +336,7 @@
|
|||||||
<string name="show_recent_files_summary">Speicherort zuletzt verwendeter Datenbanken anzeigen</string>
|
<string name="show_recent_files_summary">Speicherort zuletzt verwendeter Datenbanken anzeigen</string>
|
||||||
<string name="hide_broken_locations_title">Defekte Datenbankverknüpfungen ausblenden</string>
|
<string name="hide_broken_locations_title">Defekte Datenbankverknüpfungen ausblenden</string>
|
||||||
<string name="hide_broken_locations_summary">Nicht funktionierende Verknüpfungen in der Liste der zuletzt verwendeten Datenbanken ausblenden</string>
|
<string name="hide_broken_locations_summary">Nicht funktionierende Verknüpfungen in der Liste der zuletzt verwendeten Datenbanken ausblenden</string>
|
||||||
<string name="do_not_kill_app">Nicht die App beenden…</string>
|
<string name="do_not_kill_app">Nicht die Anwendung beenden …</string>
|
||||||
<string name="lock_database_back_root_summary">Datenbank sperren, wenn auf dem Hauptbildschirm der Zurück-Button gedrückt wird</string>
|
<string name="lock_database_back_root_summary">Datenbank sperren, wenn auf dem Hauptbildschirm der Zurück-Button gedrückt wird</string>
|
||||||
<string name="clear_clipboard_notification_title">Beim Schließen löschen</string>
|
<string name="clear_clipboard_notification_title">Beim Schließen löschen</string>
|
||||||
<string name="recycle_bin">Papierkorb</string>
|
<string name="recycle_bin">Papierkorb</string>
|
||||||
@@ -357,7 +347,7 @@
|
|||||||
<string name="content_description_open_file">Datei öffnen</string>
|
<string name="content_description_open_file">Datei öffnen</string>
|
||||||
<string name="content_description_add_entry">Eintrag hinzufügen</string>
|
<string name="content_description_add_entry">Eintrag hinzufügen</string>
|
||||||
<string name="content_description_add_group">Gruppe hinzufügen</string>
|
<string name="content_description_add_group">Gruppe hinzufügen</string>
|
||||||
<string name="content_description_file_information">Datei-Info</string>
|
<string name="content_description_file_information">Dateiinformationen</string>
|
||||||
<string name="content_description_entry_icon">Symbol für den Eintrag</string>
|
<string name="content_description_entry_icon">Symbol für den Eintrag</string>
|
||||||
<string name="entry_password_generator">Passwort-Generator</string>
|
<string name="entry_password_generator">Passwort-Generator</string>
|
||||||
<string name="content_description_password_length">Passwortlänge</string>
|
<string name="content_description_password_length">Passwortlänge</string>
|
||||||
@@ -380,13 +370,9 @@
|
|||||||
<string name="content_description_keyboard_close_fields">Felder schließen</string>
|
<string name="content_description_keyboard_close_fields">Felder schließen</string>
|
||||||
<string name="error_create_database_file">Es ist nicht möglich, eine Datenbank mit diesem Passwort und dieser Schlüsseldatei zu erstellen.</string>
|
<string name="error_create_database_file">Es ist nicht möglich, eine Datenbank mit diesem Passwort und dieser Schlüsseldatei zu erstellen.</string>
|
||||||
<string name="menu_advanced_unlock_settings">Erweitertes Entsperren</string>
|
<string name="menu_advanced_unlock_settings">Erweitertes Entsperren</string>
|
||||||
<string name="biometric_prompt_store_credential_title">Biometrische Erkennung speichern</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">Datenbank mit biometrischer Erkennung öffnen</string>
|
|
||||||
<string name="biometric">Biometrisch</string>
|
<string name="biometric">Biometrisch</string>
|
||||||
<string name="enable">Aktivieren</string>
|
<string name="enable">Aktivieren</string>
|
||||||
<string name="disable">Deaktivieren</string>
|
<string name="disable">Deaktivieren</string>
|
||||||
<string name="biometric_prompt_store_credential_message">Achtung: Wenn Sie die biometrische Erkennung verwenden, müssen Sie sich trotzdem Ihr Master-Passwort merken.</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_message">Datenbank-Anmeldeinformationen aus biometrischen Daten extrahieren</string>
|
|
||||||
<string name="biometric_auto_open_prompt_title">Biometrische Abfrage automatisch öffnen</string>
|
<string name="biometric_auto_open_prompt_title">Biometrische Abfrage automatisch öffnen</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">Automatisch nach Biometrie fragen, wenn die Datenbank dafür eingerichtet ist</string>
|
<string name="biometric_auto_open_prompt_summary">Automatisch nach Biometrie fragen, wenn die Datenbank dafür eingerichtet ist</string>
|
||||||
<string name="master_key">Hauptschlüssel</string>
|
<string name="master_key">Hauptschlüssel</string>
|
||||||
@@ -408,7 +394,7 @@
|
|||||||
<string name="error_otp_period">Zeitraum muss zwischen %1$d und %2$d Sekunden liegen.</string>
|
<string name="error_otp_period">Zeitraum muss zwischen %1$d und %2$d Sekunden liegen.</string>
|
||||||
<string name="error_otp_digits">Token muss %1$d bis %2$d Stellen enthalten.</string>
|
<string name="error_otp_digits">Token muss %1$d bis %2$d Stellen enthalten.</string>
|
||||||
<string name="invalid_db_same_uuid">%1$s mit derselben UUID %2$s existiert bereits.</string>
|
<string name="invalid_db_same_uuid">%1$s mit derselben UUID %2$s existiert bereits.</string>
|
||||||
<string name="creating_database">Datenbank wird erstellt…</string>
|
<string name="creating_database">Datenbank wird erstellt …</string>
|
||||||
<string name="menu_security_settings">Sicherheits-Einstellungen</string>
|
<string name="menu_security_settings">Sicherheits-Einstellungen</string>
|
||||||
<string name="menu_master_key_settings">Hauptschlüssel-Einstellungen</string>
|
<string name="menu_master_key_settings">Hauptschlüssel-Einstellungen</string>
|
||||||
<string name="contains_duplicate_uuid">Die Datenbank enthält UUID-Duplikate.</string>
|
<string name="contains_duplicate_uuid">Die Datenbank enthält UUID-Duplikate.</string>
|
||||||
@@ -437,22 +423,21 @@
|
|||||||
<string name="error_save_database">Die Datenbank konnte nicht gespeichert werden.</string>
|
<string name="error_save_database">Die Datenbank konnte nicht gespeichert werden.</string>
|
||||||
<string name="menu_save_database">Datenbank speichern</string>
|
<string name="menu_save_database">Datenbank speichern</string>
|
||||||
<string name="menu_empty_recycle_bin">Papierkorb leeren</string>
|
<string name="menu_empty_recycle_bin">Papierkorb leeren</string>
|
||||||
<string name="command_execution">Befehl ausführen…</string>
|
<string name="command_execution">Befehl ausführen …</string>
|
||||||
<string name="warning_permanently_delete_nodes">Sind Sie sicher, dass Sie die ausgewählten Knoten dauerhaft löschen möchten\?</string>
|
<string name="warning_permanently_delete_nodes">Sollen die ausgewählten Knoten wirklich gelöscht werden\?</string>
|
||||||
<string name="keystore_not_accessible">Der Schlüsselspeicher ist nicht richtig initialisiert.</string>
|
<string name="keystore_not_accessible">Der Schlüsselspeicher ist nicht richtig initialisiert.</string>
|
||||||
<string name="credential_before_click_biometric_button">Geben Sie das Passwort ein und klicken Sie auf die Biometrie-Schaltfläche.</string>
|
|
||||||
<string name="recycle_bin_group_title">Papierkorb-Gruppe</string>
|
<string name="recycle_bin_group_title">Papierkorb-Gruppe</string>
|
||||||
<string name="enable_auto_save_database_title">Datenbank automatisch speichern</string>
|
<string name="enable_auto_save_database_title">Datenbank automatisch speichern</string>
|
||||||
<string name="enable_auto_save_database_summary">Automatisches Speichern der Datenbank nach einer wichtigen Aktion (im Modus \"Bearbeiten\")</string>
|
<string name="enable_auto_save_database_summary">Automatisches Speichern der Datenbank nach einer wichtigen Aktion (im Modus „Bearbeiten“)</string>
|
||||||
<string name="entry_attachments">Anhänge</string>
|
<string name="entry_attachments">Anhänge</string>
|
||||||
<string name="menu_restore_entry_history">Historie wiederherstellen</string>
|
<string name="menu_restore_entry_history">Historie wiederherstellen</string>
|
||||||
<string name="menu_delete_entry_history">Historie löschen</string>
|
<string name="menu_delete_entry_history">Historie löschen</string>
|
||||||
<string name="keyboard_auto_go_action_title">Auto-Key-Aktion</string>
|
<string name="keyboard_auto_go_action_title">Auto-Key-Aktion</string>
|
||||||
<string name="keyboard_auto_go_action_summary">Aktion der Go-Taste, die automatisch nach dem Drücken einer Feldtaste ausgeführt wird</string>
|
<string name="keyboard_auto_go_action_summary">Aktion der Go-Taste, die automatisch nach dem Drücken einer Feldtaste ausgeführt wird</string>
|
||||||
<string name="download_attachment">%1$s herunterladen</string>
|
<string name="download_attachment">%1$s herunterladen</string>
|
||||||
<string name="download_initialization">Initialisieren…</string>
|
<string name="download_initialization">Initialisieren …</string>
|
||||||
<string name="download_progression">Fortschritt: %1$d%%</string>
|
<string name="download_progression">Fortschritt: %1$d%%</string>
|
||||||
<string name="download_finalization">Fertigstellen…</string>
|
<string name="download_finalization">Fertigstellen …</string>
|
||||||
<string name="download_complete">Vollständig!</string>
|
<string name="download_complete">Vollständig!</string>
|
||||||
<string name="hide_expired_entries_title">Abgelaufene Einträge ausblenden</string>
|
<string name="hide_expired_entries_title">Abgelaufene Einträge ausblenden</string>
|
||||||
<string name="hide_expired_entries_summary">Abgelaufene Einträge werden nicht angezeigt</string>
|
<string name="hide_expired_entries_summary">Abgelaufene Einträge werden nicht angezeigt</string>
|
||||||
@@ -486,9 +471,9 @@
|
|||||||
<string name="keyboard_search_share_title">Gemeinsame Infos durchsuchen</string>
|
<string name="keyboard_search_share_title">Gemeinsame Infos durchsuchen</string>
|
||||||
<string name="autofill_block_restart">Starten Sie die Anwendung, die das Formular enthält, neu, um die Sperrung zu aktivieren.</string>
|
<string name="autofill_block_restart">Starten Sie die Anwendung, die das Formular enthält, neu, um die Sperrung zu aktivieren.</string>
|
||||||
<string name="autofill_block">Automatisches Ausfüllen sperren</string>
|
<string name="autofill_block">Automatisches Ausfüllen sperren</string>
|
||||||
<string name="autofill_web_domain_blocklist_summary">Liste der Domains, auf denen ein automatisches Ausfüllen unterbunden wird</string>
|
<string name="autofill_web_domain_blocklist_summary">Liste der Domains, auf denen ein automatisches Ausfüllen unterlassen wird</string>
|
||||||
<string name="autofill_web_domain_blocklist_title">Liste gesperrter Web-Domains</string>
|
<string name="autofill_web_domain_blocklist_title">Liste gesperrter Web-Domains</string>
|
||||||
<string name="autofill_application_id_blocklist_summary">Liste der Apps, in denen ein automatisches Ausfüllen unterbunden wird</string>
|
<string name="autofill_application_id_blocklist_summary">Liste der Apps, in denen ein automatisches Ausfüllen verhindert wird</string>
|
||||||
<string name="autofill_application_id_blocklist_title">Liste gesperrter Anwendungen</string>
|
<string name="autofill_application_id_blocklist_title">Liste gesperrter Anwendungen</string>
|
||||||
<string name="subdomain_search_summary">Suche Web-Domains mit Subdomain-Beschränkungen</string>
|
<string name="subdomain_search_summary">Suche Web-Domains mit Subdomain-Beschränkungen</string>
|
||||||
<string name="subdomain_search_title">Subdomain-Suche</string>
|
<string name="subdomain_search_title">Subdomain-Suche</string>
|
||||||
@@ -498,7 +483,7 @@
|
|||||||
<string name="keyboard_change">Tastatur wechseln</string>
|
<string name="keyboard_change">Tastatur wechseln</string>
|
||||||
<string name="keyboard_previous_fill_in_title">Auto-Key-Aktion</string>
|
<string name="keyboard_previous_fill_in_title">Auto-Key-Aktion</string>
|
||||||
<string name="keyboard_previous_database_credentials_title">Datenbank-Anmeldebildschirm</string>
|
<string name="keyboard_previous_database_credentials_title">Datenbank-Anmeldebildschirm</string>
|
||||||
<string name="keyboard_previous_fill_in_summary">Automatisches Zurückschalten auf die vorherige Tastatur nach Ausführung der automatischen Tastenaktion</string>
|
<string name="keyboard_previous_fill_in_summary">Nach Ausführung der automatischen Tastenaktion automatisch zur vorherigen Tastatur wechseln</string>
|
||||||
<string name="keyboard_previous_database_credentials_summary">Automatisches Zurückschalten zur vorherigen Tastatur auf dem Datenbank-Anmeldebildschirm</string>
|
<string name="keyboard_previous_database_credentials_summary">Automatisches Zurückschalten zur vorherigen Tastatur auf dem Datenbank-Anmeldebildschirm</string>
|
||||||
<string name="education_add_attachment_summary">Laden Sie einen Anhang für Ihren Eintrag hoch, um wichtige externe Daten zu speichern.</string>
|
<string name="education_add_attachment_summary">Laden Sie einen Anhang für Ihren Eintrag hoch, um wichtige externe Daten zu speichern.</string>
|
||||||
<string name="content_description_credentials_information">Anmeldeinformationen</string>
|
<string name="content_description_credentials_information">Anmeldeinformationen</string>
|
||||||
@@ -516,4 +501,32 @@
|
|||||||
<string name="education_add_attachment_title">Anhang hinzufügen</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="database_data_remove_unlinked_attachments_summary">Entfernt Anhänge die in der Datenbank enthalten, aber keinem Eintrag zugeordnet sind</string>
|
||||||
<string name="warning_sure_add_file">Die Datei trotzdem hinzufügen\?</string>
|
<string name="warning_sure_add_file">Die Datei trotzdem hinzufügen\?</string>
|
||||||
|
<string name="show_uuid_summary">Zeigt die mit einem Eintrag verknüpfte UUID an</string>
|
||||||
|
<string name="show_uuid_title">UUID anzeigen</string>
|
||||||
|
<string name="autofill_read_only_save">Das Speichern von Daten ist für eine als schreibgeschützt geöffnete Datenbank nicht zulässig.</string>
|
||||||
|
<string name="autofill_close_database_title">Datenbank schließen</string>
|
||||||
|
<string name="keyboard_previous_lock_summary">Automatisches Zurückschalten zur vorherigen Tastatur nach dem Sperren der Datenbank</string>
|
||||||
|
<string name="keyboard_previous_lock_title">Datenbank sperren</string>
|
||||||
|
<string name="notification">Benachrichtigung</string>
|
||||||
|
<string name="crypto_object_not_initialized">Kryptoobjekt kann nicht abgerufen werden.</string>
|
||||||
|
<string name="biometric_security_update_required">Biometrisches Sicherheitsupdate erforderlich.</string>
|
||||||
|
<string name="configure_biometric">Es sind keine biometrischen oder Geräteanmeldeinformationen registriert.</string>
|
||||||
|
<string name="registration_mode">Registrierungsmodus</string>
|
||||||
|
<string name="save_mode">Speichermodus</string>
|
||||||
|
<string name="search_mode">Suchmodus</string>
|
||||||
|
<string name="error_registration_read_only">Das Speichern eines neuen Elements in einer schreibgeschützten Datenbank ist nicht zulässig</string>
|
||||||
|
<string name="autofill_save_search_info_summary">Versuche bei manueller Eingabeauswahl gemeinsam genutzte Informationen zu speichern</string>
|
||||||
|
<string name="autofill_ask_to_save_data_summary">Speichern von Daten anfordern, wenn ein Formular überprüft wird</string>
|
||||||
|
<string name="autofill_ask_to_save_data_title">Speichern von Daten anfordern</string>
|
||||||
|
<string name="autofill_save_search_info_title">Suchinformationen speichern</string>
|
||||||
|
<string name="autofill_close_database_summary">Datenbank nach der Auswahl des automatischen Ausfüllens schließen</string>
|
||||||
|
<string name="keyboard_save_search_info_summary">Versuche bei manueller Eingabeauswahl gemeinsam genutzte Informationen zu speichern</string>
|
||||||
|
<string name="keyboard_save_search_info_title">Gemeinsam genutzte Informationen speichern</string>
|
||||||
|
<string name="warning_empty_recycle_bin">Sollen alle ausgewählten Knoten wirklich aus dem Papierkorb gelöscht werden\?</string>
|
||||||
|
<string name="error_field_name_already_exists">Der Feldname existiert bereits.</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_message">Warnung: Sie müssen sich immer noch an ihr Masterpasswort erinnern, wenn sie die erweiterte Entsperrerkennung verwenden.</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_store_credential">Öffne den erweiterten Entsperrdialog zum Speichern von Anmeldeinformationen</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_unlock_database">Öffnen des erweiterten Entsperrdialogs zum Entsperren der Datenbank</string>
|
||||||
|
<string name="menu_keystore_remove_key">Löschen des Schlüssels zum erweiterten Entsperren</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_title">Fortschrittliche Entsperrerkennung</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -213,7 +213,7 @@
|
|||||||
<string name="database_description_title">Περιγραφή Βάσης Δεδομένων</string>
|
<string name="database_description_title">Περιγραφή Βάσης Δεδομένων</string>
|
||||||
<string name="database_version_title">Έκδοση Βάσης Δεδομένων</string>
|
<string name="database_version_title">Έκδοση Βάσης Δεδομένων</string>
|
||||||
<string name="text_appearance">Κείμενο</string>
|
<string name="text_appearance">Κείμενο</string>
|
||||||
<string name="application_appearance">Εφαρμογή</string>
|
<string name="application_appearance">Διεπαφή</string>
|
||||||
<string name="other">Άλλα</string>
|
<string name="other">Άλλα</string>
|
||||||
<string name="keyboard">Πληκτρολόγιο</string>
|
<string name="keyboard">Πληκτρολόγιο</string>
|
||||||
<string name="magic_keyboard_title">Magikeyboard</string>
|
<string name="magic_keyboard_title">Magikeyboard</string>
|
||||||
@@ -257,12 +257,11 @@
|
|||||||
<string name="html_text_dev_feature_encourage">ενθαρρύνετε τους προγραμματιστές να δημιουργούν <strong>νέες λειτουργίες</strong> και να <strong>διορθώνουν σφάλματα</strong> σύμφωνα με τις παρατηρήσεις σας.</string>
|
<string name="html_text_dev_feature_encourage">ενθαρρύνετε τους προγραμματιστές να δημιουργούν <strong>νέες λειτουργίες</strong> και να <strong>διορθώνουν σφάλματα</strong> σύμφωνα με τις παρατηρήσεις σας.</string>
|
||||||
<string name="html_text_dev_feature_thanks">Ευχαριστούμε πολύ για τη συνεισφορά σας.</string>
|
<string name="html_text_dev_feature_thanks">Ευχαριστούμε πολύ για τη συνεισφορά σας.</string>
|
||||||
<string name="html_text_dev_feature_work_hard">Εργαζόμαστε σκληρά για να διαθέσουμε αυτό το χαρακτηριστικό γρήγορα.</string>
|
<string name="html_text_dev_feature_work_hard">Εργαζόμαστε σκληρά για να διαθέσουμε αυτό το χαρακτηριστικό γρήγορα.</string>
|
||||||
<string name="html_text_dev_feature_upgrade">Μην ξεχνάτε να ενημερώνετε την εφαρμογή σας, εγκαθιστώντας νέες εκδόσεις.</string>
|
<string name="html_text_dev_feature_upgrade">Θυμηθείτε να ενημερώνετε την εφαρμογή σας, εγκαθιστώντας νέες εκδόσεις.</string>
|
||||||
<string name="download">Download</string>
|
<string name="download">Download</string>
|
||||||
<string name="contribute">Συνεισφορά</string>
|
<string name="contribute">Συνεισφορά</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string name="style_choose_title">Θέμα Εφαρμογής</string>
|
<string name="style_choose_title">Θέμα Εφαρμογής</string>
|
||||||
<string name="style_choose_summary">Θέμα που χρησιμοποιείται στην εφαρμογή</string>
|
<string name="style_choose_summary">Θέμα που χρησιμοποιείται στην εφαρμογή</string>
|
||||||
<string name="icon_pack_choose_title">Πακέτο Εικονιδίων</string>
|
<string name="icon_pack_choose_title">Πακέτο Εικονιδίων</string>
|
||||||
@@ -286,7 +285,7 @@
|
|||||||
<string name="education_read_only_summary">Αλλάξτε τη λειτουργία ανοίγματος για το session.
|
<string name="education_read_only_summary">Αλλάξτε τη λειτουργία ανοίγματος για το session.
|
||||||
\n
|
\n
|
||||||
\nΤο \"Προστατευμένο από εγγραφή\" αποτρέπει τυχόν μη επιθυμητές αλλαγές στη βάση δεδομένων.
|
\nΤο \"Προστατευμένο από εγγραφή\" αποτρέπει τυχόν μη επιθυμητές αλλαγές στη βάση δεδομένων.
|
||||||
\nΤο \"Τροποποιητικό\" σάς επιτρέπει να προσθέσετε, να διαγράψετε ή να τροποποιήσετε όλα τα στοιχεία.</string>
|
\nΤο \"Τροποποιητικό\" σάς επιτρέπει να προσθέσετε, να διαγράψετε ή να τροποποιήσετε όλα τα στοιχεία όπως επιθυμείτε.</string>
|
||||||
<string name="edit_entry">Επεξεργασία καταχώρησης</string>
|
<string name="edit_entry">Επεξεργασία καταχώρησης</string>
|
||||||
<string name="error_load_database">Δεν ήταν δυνατή η φόρτωση της βάσης δεδομένων σας.</string>
|
<string name="error_load_database">Δεν ήταν δυνατή η φόρτωση της βάσης δεδομένων σας.</string>
|
||||||
<string name="error_load_database_KDF_memory">Δεν ήταν δυνατή η φόρτωση του κλειδιού. Προσπαθήστε να μειώσετε την KDF \"Χρήση μνήμης\".</string>
|
<string name="error_load_database_KDF_memory">Δεν ήταν δυνατή η φόρτωση του κλειδιού. Προσπαθήστε να μειώσετε την KDF \"Χρήση μνήμης\".</string>
|
||||||
@@ -315,7 +314,7 @@
|
|||||||
<string name="selection_mode">Λειτουργία επιλογής</string>
|
<string name="selection_mode">Λειτουργία επιλογής</string>
|
||||||
<string name="do_not_kill_app">Μη κλείσιμο της εφαρμογής …</string>
|
<string name="do_not_kill_app">Μη κλείσιμο της εφαρμογής …</string>
|
||||||
<string name="lock_database_back_root_title">Πατήστε \'Πίσω\' για να κλειδώσετε</string>
|
<string name="lock_database_back_root_title">Πατήστε \'Πίσω\' για να κλειδώσετε</string>
|
||||||
<string name="lock_database_back_root_summary">Κλείδωμα της βάσης δεδομένων όταν ο χρήστης κάνει κλικ στο κουμπί \"πίσω\" στη αρχική οθόνη</string>
|
<string name="lock_database_back_root_summary">Κλείδωμα της βάσης δεδομένων όταν ο χρήστης κάνει κλικ στο κουμπί \"πίσω\" στην οθόνη προέλευσης</string>
|
||||||
<string name="clear_clipboard_notification_title">Καθαρισμός στο κλείσιμο</string>
|
<string name="clear_clipboard_notification_title">Καθαρισμός στο κλείσιμο</string>
|
||||||
<string name="clear_clipboard_notification_summary">Κλείδωμα της βάσης δεδομένων όταν λήξει η διάρκεια του προχείρου ή η ειδοποίηση κλείσει αφού αρχίσετε να την χρησιμοποιείτε</string>
|
<string name="clear_clipboard_notification_summary">Κλείδωμα της βάσης δεδομένων όταν λήξει η διάρκεια του προχείρου ή η ειδοποίηση κλείσει αφού αρχίσετε να την χρησιμοποιείτε</string>
|
||||||
<string name="recycle_bin">Κάδος ανακύκλωσης</string>
|
<string name="recycle_bin">Κάδος ανακύκλωσης</string>
|
||||||
@@ -347,27 +346,16 @@
|
|||||||
<string name="content_description_keyboard_close_fields">Κλείσιμο πεδίων</string>
|
<string name="content_description_keyboard_close_fields">Κλείσιμο πεδίων</string>
|
||||||
<string name="error_create_database_file">Δεν είναι δυνατή η δημιουργία βάσης δεδομένων με αυτόν τον κωδικό πρόσβασης και το αρχείο κλειδί.</string>
|
<string name="error_create_database_file">Δεν είναι δυνατή η δημιουργία βάσης δεδομένων με αυτόν τον κωδικό πρόσβασης και το αρχείο κλειδί.</string>
|
||||||
<string name="menu_advanced_unlock_settings">Προηγμένο ξεκλείδωμα</string>
|
<string name="menu_advanced_unlock_settings">Προηγμένο ξεκλείδωμα</string>
|
||||||
<string name="menu_biometric_remove_key">Διαγράψτε το αποθηκευμένο βιομετρικό κλειδί</string>
|
|
||||||
<string name="open_biometric_prompt_unlock_database">Ανοίξτε τη βιομετρική προτροπή για να ξεκλειδώσετε τη βάση δεδομένων</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">Ανοίξτε τη βιομετρική προτροπή για την αποθήκευση διαπιστευτηρίων</string>
|
|
||||||
<string name="biometric_prompt_store_credential_title">Αποθήκευση βιομετρικής αναγνώρισης</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">Προειδοποίηση: Πρέπει ακόμα να θυμάστε τον κύριο κωδικό πρόσβασης σας εάν χρησιμοποιείτε βιομετρική αναγνώριση.</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">Άνοιγμα βάσης δεδομένων με βιομετρική αναγνώριση</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_message">Εξαγωγή της πιστοποίησης βάσης δεδομένων με βιομετρικά δεδομένα</string>
|
|
||||||
<string name="biometric_invalid_key">Δεν είναι δυνατή η ανάγνωση του βιομετρικού κλειδιού. Διαγράψτε το και επαναλάβετε τη διαδικασία βιομετρικής αναγνώρισης.</string>
|
|
||||||
<string name="biometric_not_recognized">Δεν ήταν δυνατή η αναγνώριση βιομετρικών στοιχείων</string>
|
|
||||||
<string name="biometric_scanning_error">Βιομετρικό σφάλμα: %1$s</string>
|
|
||||||
<string name="no_credentials_stored">Αυτή η βάση δεδομένων δεν έχει αποθηκευμένα διαπιστευτήρια ακόμα.</string>
|
<string name="no_credentials_stored">Αυτή η βάση δεδομένων δεν έχει αποθηκευμένα διαπιστευτήρια ακόμα.</string>
|
||||||
<string name="menu_appearance_settings">Εμφάνιση</string>
|
<string name="menu_appearance_settings">Εμφάνιση</string>
|
||||||
<string name="biometric">Βιομετρία</string>
|
<string name="biometric">Βιομετρία</string>
|
||||||
<string name="advanced_unlock">Προηγμένο ξεκλείδωμα</string>
|
<string name="advanced_unlock">Προηγμένο ξεκλείδωμα</string>
|
||||||
<string name="biometric_unlock_enable_title">Βιομετρικό ξεκλείδωμα</string>
|
<string name="biometric_unlock_enable_title">Βιομετρικό ξεκλείδωμα</string>
|
||||||
<string name="biometric_unlock_enable_summary">Σας επιτρέπει να σαρώσετε το βιομετρικό σας για να ανοίξετε τη βάση δεδομένων</string>
|
<string name="biometric_unlock_enable_summary">Σας επιτρέπει να σαρώσετε το βιομετρικό σας για να ανοίξετε τη βάση δεδομένων</string>
|
||||||
<string name="biometric_auto_open_prompt_title">Αυτόματο άνοιγμα βιομετρικής προτροπής</string>
|
<string name="biometric_auto_open_prompt_title">Αυτόματο άνοιγμα προτροπής</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">Ζητήστε αυτόματα βιομετρία εάν η βάση δεδομένων έχει ρυθμιστεί για να τη χρησιμοποιήσει</string>
|
<string name="biometric_auto_open_prompt_summary">Ζητήστε αυτόματα προηγμένο ξεκλείδωμα εάν η βάση δεδομένων έχει ρυθμιστεί για να το χρησιμοποιήσει</string>
|
||||||
<string name="biometric_delete_all_key_title">Διαγράψτε τα κλειδιά κρυπτογράφησης</string>
|
<string name="biometric_delete_all_key_title">Διαγράψτε τα κλειδιά κρυπτογράφησης</string>
|
||||||
<string name="biometric_delete_all_key_summary">Διαγράψτε όλα τα κλειδιά κρυπτογράφησης που σχετίζονται με τη βιομετρική αναγνώριση</string>
|
<string name="biometric_delete_all_key_summary">Διαγράψτε όλα τα κλειδιά κρυπτογράφησης που σχετίζονται με το προηγμένο ξεκλείδωμα</string>
|
||||||
<string name="biometric_delete_all_key_warning">Διαγραφή όλων των κλειδιών κρυπτογράφησης που σχετίζονται με τη βιομετρική αναγνώριση;</string>
|
|
||||||
<string name="enable">Ενεργοποίηση</string>
|
<string name="enable">Ενεργοποίηση</string>
|
||||||
<string name="disable">Απενεργοποίηση</string>
|
<string name="disable">Απενεργοποίηση</string>
|
||||||
<string name="master_key">Κύριο κλειδί</string>
|
<string name="master_key">Κύριο κλειδί</string>
|
||||||
@@ -418,15 +406,12 @@
|
|||||||
<string name="compression_gzip">Gzip</string>
|
<string name="compression_gzip">Gzip</string>
|
||||||
<string name="magic_keyboard_explanation_summary">Ενεργοποιώντας ένα προσαρμοσμένο πληκτρολόγιο συγκεντρώνει τους κωδικούς πρόσβασής σας και όλα τα πεδία ταυτότητας</string>
|
<string name="magic_keyboard_explanation_summary">Ενεργοποιώντας ένα προσαρμοσμένο πληκτρολόγιο συγκεντρώνει τους κωδικούς πρόσβασής σας και όλα τα πεδία ταυτότητας</string>
|
||||||
<string name="device_keyboard_setting_title">Ρυθμίσεις πληκτρολογίου συσκευής</string>
|
<string name="device_keyboard_setting_title">Ρυθμίσεις πληκτρολογίου συσκευής</string>
|
||||||
<string name="education_biometric_title">Βιομετρικό ξεκλείδωμα βάσης δεδομένων</string>
|
|
||||||
<string name="education_biometric_summary">Συνδέστε τον κωδικό πρόσβασής σας στο σαρωμένο βιομετρικό σας για να ξεκλειδώσετε γρήγορα τη βάση δεδομένων σας.</string>
|
|
||||||
<string name="error_save_database">Δεν ήταν δυνατή η αποθήκευση της βάσης δεδομένων.</string>
|
<string name="error_save_database">Δεν ήταν δυνατή η αποθήκευση της βάσης δεδομένων.</string>
|
||||||
<string name="menu_save_database">Αποθήκευση βάσης δεδομένων</string>
|
<string name="menu_save_database">Αποθήκευση βάσης δεδομένων</string>
|
||||||
<string name="menu_empty_recycle_bin">Αδειάστε τον κάδο ανακύκλωσης</string>
|
<string name="menu_empty_recycle_bin">Αδειάστε τον κάδο ανακύκλωσης</string>
|
||||||
<string name="command_execution">Εκτέλεση της εντολής…</string>
|
<string name="command_execution">Εκτέλεση της εντολής…</string>
|
||||||
<string name="warning_permanently_delete_nodes">Οριστική διαγραφή επιλεγμένων κόμβων;</string>
|
<string name="warning_permanently_delete_nodes">Οριστική διαγραφή επιλεγμένων κόμβων;</string>
|
||||||
<string name="keystore_not_accessible">Η κλειδοθήκη δεν έχει προετοιμαστεί σωστά.</string>
|
<string name="keystore_not_accessible">Η κλειδοθήκη δεν έχει προετοιμαστεί σωστά.</string>
|
||||||
<string name="credential_before_click_biometric_button">Πληκτρολογήστε τον κωδικό πρόσβασης και στη συνέχεια κάντε κλικ στο κουμπί \"Biometric\".</string>
|
|
||||||
<string name="recycle_bin_group_title">Ομάδα Κάδου Ανακύκλωσης</string>
|
<string name="recycle_bin_group_title">Ομάδα Κάδου Ανακύκλωσης</string>
|
||||||
<string name="enable_auto_save_database_title">Αυτόματη αποθήκευση βάσης δεδομένων</string>
|
<string name="enable_auto_save_database_title">Αυτόματη αποθήκευση βάσης δεδομένων</string>
|
||||||
<string name="enable_auto_save_database_summary">Αποθήκευση της βάσης δεδομένων μετά από κάθε σημαντική ενέργεια (σε λειτουργία \"Τροποποιήσιμο\")</string>
|
<string name="enable_auto_save_database_summary">Αποθήκευση της βάσης δεδομένων μετά από κάθε σημαντική ενέργεια (σε λειτουργία \"Τροποποιήσιμο\")</string>
|
||||||
@@ -480,7 +465,7 @@
|
|||||||
<string name="autofill_application_id_blocklist_title">Λίστα αποκλεισμού Εφαρμογών</string>
|
<string name="autofill_application_id_blocklist_title">Λίστα αποκλεισμού Εφαρμογών</string>
|
||||||
<string name="autofill_application_id_blocklist_summary">Λίστα αποκλεισμού που αποτρέπει την αυτόματη συμπλήρωση εφαρμογών</string>
|
<string name="autofill_application_id_blocklist_summary">Λίστα αποκλεισμού που αποτρέπει την αυτόματη συμπλήρωση εφαρμογών</string>
|
||||||
<string name="keyboard_previous_fill_in_title">Αυτόματη ενέργεια πλήκτρου</string>
|
<string name="keyboard_previous_fill_in_title">Αυτόματη ενέργεια πλήκτρου</string>
|
||||||
<string name="keyboard_previous_fill_in_summary">Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο μετά την εκτέλεση της ενέργειας του αυτόματου πλήκτρου</string>
|
<string name="keyboard_previous_fill_in_summary">Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο μετά την εκτέλεση της ενέργειας του \"Αυτόματου πλήκτρου\"</string>
|
||||||
<string name="keyboard_previous_database_credentials_summary">Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο στην οθόνη διαπιστευτηρίων βάσης δεδομένων</string>
|
<string name="keyboard_previous_database_credentials_summary">Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο στην οθόνη διαπιστευτηρίων βάσης δεδομένων</string>
|
||||||
<string name="keyboard_previous_database_credentials_title">Οθόνη διαπιστευτηρίων βάσης δεδομένων</string>
|
<string name="keyboard_previous_database_credentials_title">Οθόνη διαπιστευτηρίων βάσης δεδομένων</string>
|
||||||
<string name="keyboard_change">Εναλλαγή πληκτρολογίου</string>
|
<string name="keyboard_change">Εναλλαγή πληκτρολογίου</string>
|
||||||
@@ -504,4 +489,57 @@
|
|||||||
<string name="error_string_type">Αυτό το κείμενο δεν ταιριάζει με το ζητούμενο στοιχείο.</string>
|
<string name="error_string_type">Αυτό το κείμενο δεν ταιριάζει με το ζητούμενο στοιχείο.</string>
|
||||||
<string name="content_description_credentials_information">Πληροφορίες Διαπιστευτηρίων</string>
|
<string name="content_description_credentials_information">Πληροφορίες Διαπιστευτηρίων</string>
|
||||||
<string name="content_description_add_item">Προσθήκη είδους</string>
|
<string name="content_description_add_item">Προσθήκη είδους</string>
|
||||||
|
<string name="show_uuid_summary">Εμφανίζει το UUID που είναι συνδεδεμένο σε μια καταχώριση</string>
|
||||||
|
<string name="show_uuid_title">Εμφάνιση UUID</string>
|
||||||
|
<string name="autofill_read_only_save">Δεν επιτρέπεται η αποθήκευση δεδομένων για μια βάση δεδομένων που ανοίγει ως μόνο για ανάγνωση.</string>
|
||||||
|
<string name="autofill_ask_to_save_data_summary">Ζητήστε να αποθηκεύσετε δεδομένα όταν επικυρώνεται μια φόρμα</string>
|
||||||
|
<string name="autofill_ask_to_save_data_title">Ζητήστε να αποθηκεύσετε δεδομένα</string>
|
||||||
|
<string name="autofill_save_search_info_summary">Προσπαθήστε να αποθηκεύσετε πληροφορίες αναζήτησης κατά την επιλογή χειροκίνητης καταχώρισης</string>
|
||||||
|
<string name="autofill_save_search_info_title">Αποθήκευση πληροφοριών αναζήτησης</string>
|
||||||
|
<string name="autofill_close_database_summary">Κλείστε τη βάση δεδομένων μετά από μια επιλογή αυτόματης συμπλήρωσης</string>
|
||||||
|
<string name="autofill_close_database_title">Κλείσιμο βάσης δεδομένων</string>
|
||||||
|
<string name="keyboard_previous_lock_summary">Επιστρέψτε αυτόματα στο προηγούμενο πληκτρολόγιο μετά το κλείδωμα της βάσης δεδομένων</string>
|
||||||
|
<string name="keyboard_previous_lock_title">Κλείδωμα βάσης δεδομένων</string>
|
||||||
|
<string name="keyboard_save_search_info_summary">Προσπαθήστε να αποθηκεύσετε κοινόχρηστες πληροφορίες όταν κάνετε μια χειροκίνητη επιλογή καταχώρησης</string>
|
||||||
|
<string name="keyboard_save_search_info_title">Αποθήκευση κοινόχρηστων πληροφοριών</string>
|
||||||
|
<string name="notification">Ειδοποίηση</string>
|
||||||
|
<string name="crypto_object_not_initialized">Δεν είναι δυνατή η ανάκτηση κρυπτογραφικού αντικειμένου.</string>
|
||||||
|
<string name="biometric_security_update_required">Απαιτείται ενημέρωση βιομετρικής ασφάλειας.</string>
|
||||||
|
<string name="configure_biometric">Κανένα πιστοποιητικό βιομετρίας ή συσκευής δεν είναι εγγεγραμμένο.</string>
|
||||||
|
<string name="warning_empty_recycle_bin">Να διαγραφούν οριστικά όλοι οι κόμβοι από τον κάδο ανακύκλωσης;</string>
|
||||||
|
<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_field_name_already_exists">Το όνομα πεδίου υπάρχει ήδη.</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_title">Προηγμένο ξεκλείδωμα αναγνώρισης</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_message">Προειδοποίηση: Θα πρέπει να θυμάστε τον κύριο κωδικό πρόσβασης εάν χρησιμοποιείτε προηγμένο ξεκλείδωμα αναγνώρισης.</string>
|
||||||
|
<string name="advanced_unlock_prompt_extract_credential_title">Ανοίξτε τη βάση δεδομένων με προηγμένο ξεκλείδωμα αναγνώρισης</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_store_credential">Ανοίξτε τη προηγμένη προτροπή ξεκλειδώματος για αποθήκευση διαπιστευτηρίων</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_unlock_database">Ανοίξτε τη προηγμένη προτροπή ξεκλειδώματος για να ξεκλείιδώσετε τη βάση δεδομένων</string>
|
||||||
|
<string name="menu_keystore_remove_key">Διαγραφή προηγμένου κλειδιού ξεκλειδώματος</string>
|
||||||
|
<string name="enter">Enter</string>
|
||||||
|
<string name="backspace">Backspace</string>
|
||||||
|
<string name="select_entry">Επιλέξτε καταχώριση</string>
|
||||||
|
<string name="back_to_previous_keyboard">Επιστροφή στο προηγούμενο πληκτρολόγιο</string>
|
||||||
|
<string name="custom_fields">Προσαρμοσμένα πεδία</string>
|
||||||
|
<string name="advanced_unlock_delete_all_key_warning">Διαγραφή όλων των κλειδιών κρυπτογράφησης που σχετίζονται με το προηγμένο ξεκλείδωμα αναγνώρισης;</string>
|
||||||
|
<string name="device_credential_unlock_enable_summary">Σας επιτρέπει να χρησιμοποιήσετε τα διαπιστευτήρια της συσκευής σας για να ανοίξετε τη βάση δεδομένων</string>
|
||||||
|
<string name="device_credential_unlock_enable_title">Ξεκλείδωμα διαπιστευτηρίων συσκευής</string>
|
||||||
|
<string name="device_credential">Διαπιστευτήρια συσκευής</string>
|
||||||
|
<string name="credential_before_click_advanced_unlock_button">Πληκτρολογήστε τον κωδικό πρόσβασης, και στη συνέχεια κάντε κλικ στο κουμπί \"Προηγμένο ξεκλείδωμα\".</string>
|
||||||
|
<string name="advanced_unlock_prompt_not_initialized">Δεν είναι δυνατή η προετοιμασία προτροπής προηγμένου ξεκλειδώματος.</string>
|
||||||
|
<string name="advanced_unlock_not_recognized">Δεν ήταν δυνατή η αναγνώριση αποτυπώματος προηγμένου ξεκλειδώματος</string>
|
||||||
|
<string name="advanced_unlock_scanning_error">Προηγμένο ξεκλείδωμα σφάλμα: %1$s</string>
|
||||||
|
<string name="advanced_unlock_invalid_key">Δεν είναι δυνατή η ανάγνωση του προηγμένου κλειδιού ξεκλειδώματος. Διαγράψτε το και επαναλάβετε τη διαδικασία αναγνώρισης ξεκλειδώματος.</string>
|
||||||
|
<string name="advanced_unlock_prompt_extract_credential_message">Εξαγωγή διαπιστευτηρίων βάσης δεδομένων με προηγμένο ξεκλείδωμα δεδομένων</string>
|
||||||
|
<string name="education_advanced_unlock_summary">Συνδέστε τον κωδικό πρόσβασής σας με το σαρωμένο βιομετρικό ή τα διαπιστευτήρια της συσκευής σας για να ξεκλειδώσετε γρήγορα τη βάση δεδομένων σας.</string>
|
||||||
|
<string name="education_advanced_unlock_title">Προηγμένο ξεκλείδωμα βάσης δεδομένων</string>
|
||||||
|
<string name="advanced_unlock_timeout">Χρονικό όριο προηγμένου ξεκλειδώματος</string>
|
||||||
|
<string name="temp_advanced_unlock_enable_title">Προσωρινό προηγμένο ξεκλείδωμα</string>
|
||||||
|
<string name="temp_advanced_unlock_enable_summary">Μην αποθηκεύετε κανένα κρυπτογραφημένο περιεχόμενο για να χρησιμοποιήσετε προηγμένο ξεκλείδωμα</string>
|
||||||
|
<string name="temp_advanced_unlock_timeout_summary">Διάρκεια της χρήσης προηγμένου ξεκλειδώματος πριν την διαγραφή του περιεχομένου</string>
|
||||||
|
<string name="temp_advanced_unlock_timeout_title">Λήξη προηγμένου ξεκλειδώματος</string>
|
||||||
|
<string name="advanced_unlock_tap_delete">Πατήστε για διαγραφή προηγμένων κλειδιών ξεκλειδώματος</string>
|
||||||
|
<string name="content">Περιεχόμενα</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -157,7 +157,6 @@
|
|||||||
<string name="keyfile_is_empty">El archivo de clave está vacío.</string>
|
<string name="keyfile_is_empty">El archivo de clave está vacío.</string>
|
||||||
<string name="copy_field">Copia de %1$s</string>
|
<string name="copy_field">Copia de %1$s</string>
|
||||||
<string name="menu_form_filling_settings">Llenado de formulario</string>
|
<string name="menu_form_filling_settings">Llenado de formulario</string>
|
||||||
<string name="menu_biometric_remove_key">Quite la clave de huella dactilar</string>
|
|
||||||
<string name="protection">Protección</string>
|
<string name="protection">Protección</string>
|
||||||
<string name="read_only">Protegida contra escritura</string>
|
<string name="read_only">Protegida contra escritura</string>
|
||||||
<string name="read_only_warning">KeePassDX necesita permiso de escritura para modificar la base de datos.</string>
|
<string name="read_only_warning">KeePassDX necesita permiso de escritura para modificar la base de datos.</string>
|
||||||
@@ -182,14 +181,9 @@
|
|||||||
<string name="warning_password_encoding">Evite emplear en la base de datos caracteres que no pertenezcan al formato de codificación del texto (los caracteres no reconocidos se convierten a la misma letra).</string>
|
<string name="warning_password_encoding">Evite emplear en la base de datos caracteres que no pertenezcan al formato de codificación del texto (los caracteres no reconocidos se convierten a la misma letra).</string>
|
||||||
<string name="warning_empty_password">¿Continuar sin la protección de desbloqueo de contraseña\?</string>
|
<string name="warning_empty_password">¿Continuar sin la protección de desbloqueo de contraseña\?</string>
|
||||||
<string name="warning_no_encryption_key">¿Continuar sin clave de cifrado\?</string>
|
<string name="warning_no_encryption_key">¿Continuar sin clave de cifrado\?</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">Abra la petición de datos biométricos para desbloquear la base de datos</string>
|
|
||||||
<string name="encrypted_value_stored">Contraseña cifrada almacenada</string>
|
<string name="encrypted_value_stored">Contraseña cifrada almacenada</string>
|
||||||
<string name="biometric_invalid_key">No se puede leer la clave biométrica. Bórrela y repita el procedimiento de reconocimiento biométrico.</string>
|
|
||||||
<string name="biometric_not_recognized">No fue posible identificar los datos biométricos</string>
|
|
||||||
<string name="biometric_scanning_error">Error de biometría: %1$s</string>
|
|
||||||
<string name="database_history">Historial</string>
|
<string name="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 completar formularios fácilmente desde otras aplicaciones</string>
|
||||||
<string name="open_biometric_prompt_store_credential">Abra la petición de datos biométricos para almacenar credenciales</string>
|
|
||||||
<string name="no_credentials_stored">Esta base de datos aún no tiene credenciales almacenadas.</string>
|
<string name="no_credentials_stored">Esta base de datos aún no tiene credenciales almacenadas.</string>
|
||||||
<string name="menu_appearance_settings">Apariencia</string>
|
<string name="menu_appearance_settings">Apariencia</string>
|
||||||
<string name="general">General</string>
|
<string name="general">General</string>
|
||||||
@@ -212,7 +206,6 @@
|
|||||||
<string name="biometric_unlock_enable_summary">Le permite escanear su huella dactilar u otro dato biométrico para abrir la base de datos</string>
|
<string name="biometric_unlock_enable_summary">Le permite escanear su huella dactilar u otro dato biométrico 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_title">Eliminar claves de cifrado</string>
|
||||||
<string name="biometric_delete_all_key_summary">Eliminar todas las claves de cifrado relacionadas con el reconocimiento biométrico</string>
|
<string name="biometric_delete_all_key_summary">Eliminar todas las claves de cifrado relacionadas con el reconocimiento biométrico</string>
|
||||||
<string name="biometric_delete_all_key_warning">¿Confirma que quiere eliminar todas las claves relativas al reconocimiento biométrico\?</string>
|
|
||||||
<string name="unavailable_feature_text">No se pudo iniciar esta funcionalidad.</string>
|
<string name="unavailable_feature_text">No se pudo iniciar esta funcionalidad.</string>
|
||||||
<string name="unavailable_feature_version">La versión de Android del dispositivo es %1$s, pero es necesaria la %2$s o posterior.</string>
|
<string name="unavailable_feature_version">La versión de Android del dispositivo es %1$s, pero es necesaria la %2$s o posterior.</string>
|
||||||
<string name="unavailable_feature_hardware">No se encontró el hardware correspondiente.</string>
|
<string name="unavailable_feature_hardware">No se encontró el hardware correspondiente.</string>
|
||||||
@@ -248,8 +241,6 @@
|
|||||||
\nLos grupos (~carpetas) organizan las entradas en su base de datos.</string>
|
\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_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_search_summary">Busque entradas por título, nombre de usuario u otros campos para recuperar fácilmente sus contraseñas.</string>
|
||||||
<string name="education_biometric_title">Desbloquee su base de datos con su huella digital</string>
|
|
||||||
<string name="education_biometric_summary">Vincule la contraseña a su escaneo biométrico para desbloquear rápidamente la base de datos.</string>
|
|
||||||
<string name="education_entry_edit_title">Editar la entrada</string>
|
<string name="education_entry_edit_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_entry_edit_summary">Edite la entrada con campos personalizados, puede agregar referencias a los datos de la agrupación entre campos de diferentes entradas.</string>
|
||||||
<string name="education_generate_password_title">Crear una contraseña segura</string>
|
<string name="education_generate_password_title">Crear una contraseña segura</string>
|
||||||
@@ -282,7 +273,6 @@
|
|||||||
<string name="contribute">Contribuir</string>
|
<string name="contribute">Contribuir</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES-KDF</string>
|
<string name="kdf_AES">AES-KDF</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string name="style_choose_title">Tema de aplicación</string>
|
<string name="style_choose_title">Tema de aplicación</string>
|
||||||
<string name="style_choose_summary">Tema utilizado en la aplicación</string>
|
<string name="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_title">Seleccione un paquete de iconos</string>
|
||||||
@@ -360,10 +350,6 @@
|
|||||||
<string name="content_description_keyboard_close_fields">Cerrar campos</string>
|
<string name="content_description_keyboard_close_fields">Cerrar campos</string>
|
||||||
<string name="error_create_database_file">No se puede crear la base de datos con esta contraseña y este archivo de clave.</string>
|
<string name="error_create_database_file">No se puede crear la base de datos con esta contraseña y este archivo de clave.</string>
|
||||||
<string name="menu_advanced_unlock_settings">Desbloqueo avanzado</string>
|
<string name="menu_advanced_unlock_settings">Desbloqueo avanzado</string>
|
||||||
<string name="biometric_prompt_store_credential_title">Guardar reconocimiento biométrico</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">Atención: debe recordar su contraseña maestra aunque use el reconocimiento biométrico.</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">Abrir base de datos con reconocimiento biométrico</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_message">Extraer credencial de base de datos con datos biométricos</string>
|
|
||||||
<string name="biometric">Biometría</string>
|
<string name="biometric">Biometría</string>
|
||||||
<string name="biometric_auto_open_prompt_title">Abrir petición de datos biométricos automáticamente</string>
|
<string name="biometric_auto_open_prompt_title">Abrir petición de datos biométricos automáticamente</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">Abrir automáticamente la petición de datos biométricos cuando se define una clave biométrica para una base de datos</string>
|
<string name="biometric_auto_open_prompt_summary">Abrir automáticamente la petición de datos biométricos cuando se define una clave biométrica para una base de datos</string>
|
||||||
@@ -409,7 +395,7 @@
|
|||||||
<string name="compression_none">Ninguna</string>
|
<string name="compression_none">Ninguna</string>
|
||||||
<string name="compression">Compresión</string>
|
<string name="compression">Compresión</string>
|
||||||
<string name="database_default_username_title">Nombre de usuario predeterminado</string>
|
<string name="database_default_username_title">Nombre de usuario predeterminado</string>
|
||||||
<string name="settings_database_force_changing_master_key_next_time_summary">Requerir cambiar la contraseña maestra la próxima vez (una sóla vez)</string>
|
<string name="settings_database_force_changing_master_key_next_time_summary">Requerir cambiar la contraseña maestra la próxima vez (una sola 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_next_time_title">Forzar renovación la próxima vez</string>
|
||||||
<string name="settings_database_force_changing_master_key_summary">Requerir un cambio de contraseña maestra (días)</string>
|
<string name="settings_database_force_changing_master_key_summary">Requerir un cambio de contraseña maestra (días)</string>
|
||||||
<string name="settings_database_force_changing_master_key_title">Forzar renovación</string>
|
<string name="settings_database_force_changing_master_key_title">Forzar renovación</string>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
--><resources>
|
--><resources>
|
||||||
<string name="feedback">Feedback</string>
|
<string name="feedback">Feedback</string>
|
||||||
<string name="homepage">Hasiera orria</string>
|
<string name="homepage">Hasiera orria</string>
|
||||||
<string name="about_description">Keepass pasahitza kudeatzailearen Androiderako inplementazioa</string>
|
<string name="about_description">KeePass pasahitza kudeatzailearen Androiderako inplementazioa</string>
|
||||||
<string name="accept">Onartu</string>
|
<string name="accept">Onartu</string>
|
||||||
<string name="add_entry">Sarrera gehitu</string>
|
<string name="add_entry">Sarrera gehitu</string>
|
||||||
<string name="add_group">Taldea gehitu</string>
|
<string name="add_group">Taldea gehitu</string>
|
||||||
|
|||||||
@@ -2,18 +2,8 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<string name="menu_appearance_settings">ظاهر</string>
|
<string name="menu_appearance_settings">ظاهر</string>
|
||||||
<string name="database_history">تاریخچه</string>
|
<string name="database_history">تاریخچه</string>
|
||||||
<string name="credential_before_click_biometric_button">رمز ورود را وارد کنید و سپس روی دکمه \"بیومتریک\" کلیک کنید.</string>
|
|
||||||
<string name="no_credentials_stored">این پایگاه داده هنوز اطلاعات کاربری ذخیره نشده است.</string>
|
<string name="no_credentials_stored">این پایگاه داده هنوز اطلاعات کاربری ذخیره نشده است.</string>
|
||||||
<string name="biometric_scanning_error">خطای بیومتریک:%1$s</string>
|
|
||||||
<string name="biometric_not_recognized">بایومتریک قابل تشخیص نیست</string>
|
|
||||||
<string name="biometric_invalid_key">"کلید بیومتریک را نمی توان خواند. لطفاً آن را حذف کرده و روش شناخت بیومتریک را تکرار کنید."</string>
|
|
||||||
<string name="encrypted_value_stored">رمز رمزگذاری شده ذخیره شده است</string>
|
<string name="encrypted_value_stored">رمز رمزگذاری شده ذخیره شده است</string>
|
||||||
<string name="biometric_prompt_extract_credential_message">استخراج اطلاعات کاربری پایگاه داده با داده های بیومتریک</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">پایگاه داده را با تشخیص بیومتریک باز کنید</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">هشدار: اگر از تشخیص بیومتریک استفاده می کنید ، هنوز باید رمز عبور اصلی خود را به خاطر بسپارید.</string>
|
|
||||||
<string name="biometric_prompt_store_credential_title">تشخیص بیومتریک را ذخیره کنید</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">اعلان بیومتریک را برای ذخیره اعتبارنامه باز کنید</string>
|
|
||||||
<string name="open_biometric_prompt_unlock_database">برای باز کردن قفل پایگاه داده ، دستور بیومتریک را باز کنید</string>
|
|
||||||
<string name="keystore_not_accessible">فروشگاه اصلی به درستی تنظیم نشده است.</string>
|
<string name="keystore_not_accessible">فروشگاه اصلی به درستی تنظیم نشده است.</string>
|
||||||
<string name="build_label">%1$s را بسازید</string>
|
<string name="build_label">%1$s را بسازید</string>
|
||||||
<string name="version_label">نسخه %1$s</string>
|
<string name="version_label">نسخه %1$s</string>
|
||||||
@@ -88,7 +78,6 @@
|
|||||||
<string name="menu_open_file_read_and_write">قابل تغییر</string>
|
<string name="menu_open_file_read_and_write">قابل تغییر</string>
|
||||||
<string name="menu_file_selection_read_only">نوشتن-محافظت شده</string>
|
<string name="menu_file_selection_read_only">نوشتن-محافظت شده</string>
|
||||||
<string name="menu_url">رفتن به آدرس اینترنتی</string>
|
<string name="menu_url">رفتن به آدرس اینترنتی</string>
|
||||||
<string name="menu_biometric_remove_key">حذف کلید بیومتریک ذخیره شده</string>
|
|
||||||
<string name="menu_showpass">نمایش رمز عبور</string>
|
<string name="menu_showpass">نمایش رمز عبور</string>
|
||||||
<string name="menu_search">جستجو</string>
|
<string name="menu_search">جستجو</string>
|
||||||
<string name="menu_open">باز</string>
|
<string name="menu_open">باز</string>
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
<string name="menu_app_settings">Ohjelman asetukset</string>
|
<string name="menu_app_settings">Ohjelman asetukset</string>
|
||||||
<string name="brackets">Hakasulkeet</string>
|
<string name="brackets">Hakasulkeet</string>
|
||||||
<string name="file_manager_install_description">Tietokantojen avaamista, luomista ja tallentamista varten tarvitaan tiedostonhallintaohjelma, joka tukee ACTION_CREATE_DOCUMENT ja ACTION_OPEN_DOCUMENT Intent-toimintoja.</string>
|
<string name="file_manager_install_description">Tietokantojen avaamista, luomista ja tallentamista varten tarvitaan tiedostonhallintaohjelma, joka tukee ACTION_CREATE_DOCUMENT ja ACTION_OPEN_DOCUMENT Intent-toimintoja.</string>
|
||||||
<string name="clipboard_cleared">Leikepöytä tyhjennetty.</string>
|
<string name="clipboard_cleared">Leikepöytä tyhjennetty</string>
|
||||||
<string name="clipboard_error_title">Leikepöytävirhe</string>
|
<string name="clipboard_error_title">Leikepöytävirhe</string>
|
||||||
<string name="clipboard_error">Jotkin laitteet eivät anna sovellusten käyttää leikepöytää.</string>
|
<string name="clipboard_error">Jotkin laitteet eivät anna sovellusten käyttää leikepöytää.</string>
|
||||||
<string name="clipboard_error_clear">Leikepöytää ei voitu tyhjentää</string>
|
<string name="clipboard_error_clear">Leikepöytää ei voitu tyhjentää</string>
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
<string name="error_pass_match">Salasanat eivät täsmää.</string>
|
<string name="error_pass_match">Salasanat eivät täsmää.</string>
|
||||||
<string name="error_rounds_too_large">Kierroksia on liian paljon. Asetetaan se arvoon 2147483648.</string>
|
<string name="error_rounds_too_large">Kierroksia on liian paljon. Asetetaan se arvoon 2147483648.</string>
|
||||||
<string name="error_string_key">Jokaisella tekstillä tulee olla kentässä nimi.</string>
|
<string name="error_string_key">Jokaisella tekstillä tulee olla kentässä nimi.</string>
|
||||||
<string name="error_wrong_length">Syötä positiivinen kokonaisluku pituus-kenttään</string>
|
<string name="error_wrong_length">Syötä positiivinen kokonaisluku pituus-kenttään.</string>
|
||||||
<string name="field_name">Kentän nimi</string>
|
<string name="field_name">Kentän nimi</string>
|
||||||
<string name="field_value">Kentän arvo</string>
|
<string name="field_value">Kentän arvo</string>
|
||||||
<string name="file_browser">Tiedostoselain</string>
|
<string name="file_browser">Tiedostoselain</string>
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
<string name="security">Turvallisuus</string>
|
<string name="security">Turvallisuus</string>
|
||||||
<string name="edit_entry">Muokkaa merkintää</string>
|
<string name="edit_entry">Muokkaa merkintää</string>
|
||||||
<string name="error_disallow_no_credentials">Ainakin yksi pääsytieto tulee olla asetettuna.</string>
|
<string name="error_disallow_no_credentials">Ainakin yksi pääsytieto tulee olla asetettuna.</string>
|
||||||
<string name="error_load_database_KDF_memory">Avainta ei pystytty lataamaan. Kokeile vähentää KDF \"Muistin käyttöä\".</string>
|
<string name="error_load_database_KDF_memory">Avainta ei pystytty lataamaan. Kokeile vähentää KDF ”Muistin käyttöä”.</string>
|
||||||
<string name="error_load_database">Tietokantaa ei pystytty avaamaan.</string>
|
<string name="error_load_database">Tietokantaa ei pystytty avaamaan.</string>
|
||||||
<string name="error_invalid_OTP">Virheellinen OTP salaisuus.</string>
|
<string name="error_invalid_OTP">Virheellinen OTP salaisuus.</string>
|
||||||
<string name="entry_otp">OTP</string>
|
<string name="entry_otp">OTP</string>
|
||||||
@@ -208,17 +208,8 @@
|
|||||||
<string name="autofill_explanation_summary">Ota käyttöön automaattinen täyttö täyttääksesi lomakkeita nopeasti muissa sovelluksissa</string>
|
<string name="autofill_explanation_summary">Ota käyttöön automaattinen täyttö täyttääksesi lomakkeita nopeasti muissa sovelluksissa</string>
|
||||||
<string name="menu_appearance_settings">Ulkonäkö</string>
|
<string name="menu_appearance_settings">Ulkonäkö</string>
|
||||||
<string name="database_history">Historia</string>
|
<string name="database_history">Historia</string>
|
||||||
<string name="credential_before_click_biometric_button">Kirjoita salana ja paina \"Biometrinen\" painiketta.</string>
|
|
||||||
<string name="biometric">Biometrinen</string>
|
<string name="biometric">Biometrinen</string>
|
||||||
<string name="no_credentials_stored">Tässä salasanatietokannassa ei ole vielä pääsytietoja.</string>
|
<string name="no_credentials_stored">Tässä salasanatietokannassa ei ole vielä pääsytietoja.</string>
|
||||||
<string name="biometric_scanning_error">Biometrinen virhe: %1$s</string>
|
|
||||||
<string name="biometric_not_recognized">Biometristä tunnistusta ei tunnistettu</string>
|
|
||||||
<string name="biometric_invalid_key">Biometristä avainta ei voitu lukea. Poista se ja toista biometrinen tunnistus.</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">Avaa salasanatietokanta biometrisellä tunnistuksella</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">Varoitus: Sinun pitää vielä muistaa pääsalasanasi jos käytät biometristä tunnistusta.</string>
|
|
||||||
<string name="biometric_prompt_store_credential_title">Tallenna biometrinen tunnistus</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">Avaa biometrinen komentokehote tallentaaksesi pääsytiedot</string>
|
|
||||||
<string name="open_biometric_prompt_unlock_database">Avaa biometrinen komentokehote avataksesi salasanatietokannan</string>
|
|
||||||
<string name="keystore_not_accessible">Avainsäilöä ei ole kunnolla alustettu.</string>
|
<string name="keystore_not_accessible">Avainsäilöä ei ole kunnolla alustettu.</string>
|
||||||
<string name="build_label">Koontiversio %1$s</string>
|
<string name="build_label">Koontiversio %1$s</string>
|
||||||
<string name="warning_database_link_revoked">Tiedostoon pääsy evätty</string>
|
<string name="warning_database_link_revoked">Tiedostoon pääsy evätty</string>
|
||||||
@@ -241,7 +232,7 @@
|
|||||||
<string name="allow_copy_password_title">Luota leikepöytään</string>
|
<string name="allow_copy_password_title">Luota leikepöytään</string>
|
||||||
<string name="monospace_font_fields_enable_summary">Vaihda fontti, jota käytetään kentissä parantaaksesi merkkien näkyvyyttä</string>
|
<string name="monospace_font_fields_enable_summary">Vaihda fontti, jota käytetään kentissä parantaaksesi merkkien näkyvyyttä</string>
|
||||||
<string name="monospace_font_fields_enable_title">Kenttäfontti</string>
|
<string name="monospace_font_fields_enable_title">Kenttäfontti</string>
|
||||||
<string name="recycle_bin_summary">Siirrä ryhmät ja tietueet \"Roskakori\" ryhmään ennen poistamista</string>
|
<string name="recycle_bin_summary">Siirrä ryhmät ja tietueet ”Roskakori” ryhmään ennen poistamista</string>
|
||||||
<string name="recycle_bin_title">Roskakorin käyttö</string>
|
<string name="recycle_bin_title">Roskakorin käyttö</string>
|
||||||
<string name="assign_master_key">Aseta pääavain</string>
|
<string name="assign_master_key">Aseta pääavain</string>
|
||||||
<string name="path">Polku</string>
|
<string name="path">Polku</string>
|
||||||
@@ -302,7 +293,6 @@
|
|||||||
<string name="menu_restore_entry_history">Palauta historia</string>
|
<string name="menu_restore_entry_history">Palauta historia</string>
|
||||||
<string name="menu_empty_recycle_bin">Tyhjennä roskakori</string>
|
<string name="menu_empty_recycle_bin">Tyhjennä roskakori</string>
|
||||||
<string name="menu_file_selection_read_only">Kirjoitussuojattu</string>
|
<string name="menu_file_selection_read_only">Kirjoitussuojattu</string>
|
||||||
<string name="menu_biometric_remove_key">Poista tallennettu biometrinen avain</string>
|
|
||||||
<string name="menu_save_database">Tallenna salasanatietokanta</string>
|
<string name="menu_save_database">Tallenna salasanatietokanta</string>
|
||||||
<string name="menu_cancel">Peruuta</string>
|
<string name="menu_cancel">Peruuta</string>
|
||||||
<string name="menu_paste">Liitä</string>
|
<string name="menu_paste">Liitä</string>
|
||||||
@@ -334,4 +324,4 @@
|
|||||||
<string name="error_move_folder_in_itself">Et voi siirtää ryhmää itsensä sisälle.</string>
|
<string name="error_move_folder_in_itself">Et voi siirtää ryhmää itsensä sisälle.</string>
|
||||||
<string name="error_autofill_enable_service">Automaattista täyttöä ei voitu ottaa käyttöön.</string>
|
<string name="error_autofill_enable_service">Automaattista täyttöä ei voitu ottaa käyttöön.</string>
|
||||||
<string name="content_description_node_children">Solmun lapset</string>
|
<string name="content_description_node_children">Solmun lapset</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
<string name="menu_form_filling_settings">Remplissage de formulaire</string>
|
<string name="menu_form_filling_settings">Remplissage de formulaire</string>
|
||||||
<string name="brackets">Parenthèses (ou autres)</string>
|
<string name="brackets">Parenthèses (ou autres)</string>
|
||||||
<string name="extended_ASCII">ASCII étendu</string>
|
<string name="extended_ASCII">ASCII étendu</string>
|
||||||
<string name="file_manager_install_description">Un gestionnaire de fichiers qui accepte l\'action d\'intention ACTION_CREATE_DOCUMENT et ACTION_OPEN_DOCUMENT est nécessaire pour créer, ouvrir et enregistrer des fichiers de base de données.</string>
|
<string name="file_manager_install_description">Un gestionnaire de fichiers qui accepte l’action d’intention ACTION_CREATE_DOCUMENT et ACTION_OPEN_DOCUMENT est nécessaire pour créer, ouvrir et enregistrer des fichiers de base de données.</string>
|
||||||
<string name="allow">Autoriser</string>
|
<string name="allow">Autoriser</string>
|
||||||
<string name="clipboard_cleared">Presse-papier vidé</string>
|
<string name="clipboard_cleared">Presse-papier vidé</string>
|
||||||
<string name="clipboard_error_title">Erreur de presse-papier</string>
|
<string name="clipboard_error_title">Erreur de presse-papier</string>
|
||||||
@@ -113,7 +113,6 @@
|
|||||||
<string name="menu_open">Ouvrir</string>
|
<string name="menu_open">Ouvrir</string>
|
||||||
<string name="menu_search">Rechercher</string>
|
<string name="menu_search">Rechercher</string>
|
||||||
<string name="menu_showpass">Afficher le mot de passe</string>
|
<string name="menu_showpass">Afficher le mot de passe</string>
|
||||||
<string name="menu_biometric_remove_key">Supprimer l’empreinte biométrique enregistrée</string>
|
|
||||||
<string name="menu_url">Ouvrir l’URL</string>
|
<string name="menu_url">Ouvrir l’URL</string>
|
||||||
<string name="minus">Moins</string>
|
<string name="minus">Moins</string>
|
||||||
<string name="never">Jamais</string>
|
<string name="never">Jamais</string>
|
||||||
@@ -162,13 +161,8 @@
|
|||||||
<string name="warning_no_encryption_key">Continuer sans clé de chiffrement \?</string>
|
<string name="warning_no_encryption_key">Continuer sans clé de chiffrement \?</string>
|
||||||
<string name="version_label">Version %1$s</string>
|
<string name="version_label">Version %1$s</string>
|
||||||
<string name="configure_biometric">Aucune information d’identification biométrique ou de périphérique n’est enregistrée.</string>
|
<string name="configure_biometric">Aucune information d’identification biométrique ou de périphérique n’est enregistrée.</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">Ouvrir l’invite biométrique pour déverrouiller la base de données</string>
|
|
||||||
<string name="encrypted_value_stored">Mot de passe chiffré stocké</string>
|
<string name="encrypted_value_stored">Mot de passe chiffré stocké</string>
|
||||||
<string name="database_history">Historique</string>
|
<string name="database_history">Historique</string>
|
||||||
<string name="biometric_invalid_key">Impossible de lire la clé biométrique. Veuillez la supprimer et répéter la procédure de reconnaissance biométrique.</string>
|
|
||||||
<string name="biometric_not_recognized">Impossible de reconnaître l’empreinte biométique</string>
|
|
||||||
<string name="biometric_scanning_error">Erreur biométrique : %1$s</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">Ouvrir l’invite biométrique pour stocker les identifiants</string>
|
|
||||||
<string name="no_credentials_stored">Cette base de données n’a pas encore stocké d’identifiants.</string>
|
<string name="no_credentials_stored">Cette base de données n’a pas encore stocké d’identifiants.</string>
|
||||||
<string name="menu_appearance_settings">Apparence</string>
|
<string name="menu_appearance_settings">Apparence</string>
|
||||||
<string name="general">Général</string>
|
<string name="general">Général</string>
|
||||||
@@ -193,7 +187,6 @@
|
|||||||
<string name="biometric_unlock_enable_summary">Permet de numériser votre empreinte biométrique pour ouvrir la base de données</string>
|
<string name="biometric_unlock_enable_summary">Permet de numériser votre empreinte biométrique pour ouvrir la base de données</string>
|
||||||
<string name="biometric_delete_all_key_title">Supprimer les clés de chiffrement</string>
|
<string name="biometric_delete_all_key_title">Supprimer les clés de chiffrement</string>
|
||||||
<string name="biometric_delete_all_key_summary">Supprime toutes les clés de chiffrement liées à la reconnaissance biométrique</string>
|
<string name="biometric_delete_all_key_summary">Supprime toutes les clés de chiffrement liées à la reconnaissance biométrique</string>
|
||||||
<string name="biometric_delete_all_key_warning">Supprimer toutes les clés de chiffrement liées à la reconnaissance biométrique \?</string>
|
|
||||||
<string name="unavailable_feature_text">Impossible de démarrer cette fonctionnalité.</string>
|
<string name="unavailable_feature_text">Impossible de démarrer cette fonctionnalité.</string>
|
||||||
<string name="unavailable_feature_version">L’appareil tourne sous Android %1$s, mais la version %2$s ou supérieure est requise.</string>
|
<string name="unavailable_feature_version">L’appareil tourne sous Android %1$s, mais la version %2$s ou supérieure est requise.</string>
|
||||||
<string name="unavailable_feature_hardware">Impossible de trouver le matériel correspondant.</string>
|
<string name="unavailable_feature_hardware">Impossible de trouver le matériel correspondant.</string>
|
||||||
@@ -212,7 +205,7 @@
|
|||||||
<string name="database_description_title">Description de la base de données</string>
|
<string name="database_description_title">Description de la base de données</string>
|
||||||
<string name="database_version_title">Version de la base de données</string>
|
<string name="database_version_title">Version de la base de données</string>
|
||||||
<string name="text_appearance">Texte</string>
|
<string name="text_appearance">Texte</string>
|
||||||
<string name="application_appearance">Application</string>
|
<string name="application_appearance">Interface</string>
|
||||||
<string name="other">Autres</string>
|
<string name="other">Autres</string>
|
||||||
<string name="keyboard">Clavier</string>
|
<string name="keyboard">Clavier</string>
|
||||||
<string name="magic_keyboard_title">Magiclavier</string>
|
<string name="magic_keyboard_title">Magiclavier</string>
|
||||||
@@ -220,7 +213,7 @@
|
|||||||
<string name="enable_education_screens_title">Conseils pédagogiques</string>
|
<string name="enable_education_screens_title">Conseils pédagogiques</string>
|
||||||
<string name="enable_education_screens_summary">Met en surbrillance les éléments pour apprendre le fonctionnement de l’application</string>
|
<string name="enable_education_screens_summary">Met en surbrillance les éléments pour apprendre le fonctionnement de l’application</string>
|
||||||
<string name="reset_education_screens_title">Réinitialiser les conseils pédagogiques</string>
|
<string name="reset_education_screens_title">Réinitialiser les conseils pédagogiques</string>
|
||||||
<string name="reset_education_screens_summary">Afficher à nouveau toutes les informations pédagogiques</string>
|
<string name="reset_education_screens_summary">Affiche à nouveau toutes les informations pédagogiques</string>
|
||||||
<string name="reset_education_screens_text">Conseils pédagogiques réinitialisés</string>
|
<string name="reset_education_screens_text">Conseils pédagogiques réinitialisés</string>
|
||||||
<string name="education_create_database_title">Créer votre fichier de base de données</string>
|
<string name="education_create_database_title">Créer votre fichier de base de données</string>
|
||||||
<string name="education_create_database_summary">Crée votre premier fichier de gestion de mots de passe.</string>
|
<string name="education_create_database_summary">Crée votre premier fichier de gestion de mots de passe.</string>
|
||||||
@@ -232,8 +225,6 @@
|
|||||||
\nLes groupes (≈dossiers) organisent les entrées dans votre base de données.</string>
|
\nLes groupes (≈dossiers) organisent les entrées dans votre base de données.</string>
|
||||||
<string name="education_search_title">Rechercher dans les entrées</string>
|
<string name="education_search_title">Rechercher dans les entrées</string>
|
||||||
<string name="education_search_summary">Saisir le titre, le nom d’utilisateur ou le contenu des autres champs pour récupérer vos mots de passe.</string>
|
<string name="education_search_summary">Saisir le titre, le nom d’utilisateur ou le contenu des autres champs pour récupérer vos mots de passe.</string>
|
||||||
<string name="education_biometric_title">Déverrouillage biométrique de la base de données</string>
|
|
||||||
<string name="education_biometric_summary">Associe votre mot de passe à votre empreinte biométrique numérisée pour déverrouiller rapidement votre base de données.</string>
|
|
||||||
<string name="education_entry_edit_title">Modifier l’entrée</string>
|
<string name="education_entry_edit_title">Modifier l’entrée</string>
|
||||||
<string name="education_entry_edit_summary">Modifie votre entrée avec des champs personnalisés. La collection des données peut être référencée entre différents champs de l’entrée.</string>
|
<string name="education_entry_edit_summary">Modifie votre entrée avec des champs personnalisés. La collection des données peut être référencée entre différents champs de l’entrée.</string>
|
||||||
<string name="education_generate_password_title">Créer un mot de passe fort</string>
|
<string name="education_generate_password_title">Créer un mot de passe fort</string>
|
||||||
@@ -271,7 +262,6 @@
|
|||||||
<string name="encryption_twofish">Twofish</string>
|
<string name="encryption_twofish">Twofish</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string-array name="timeout_options">
|
<string-array name="timeout_options">
|
||||||
<item>5 secondes</item>
|
<item>5 secondes</item>
|
||||||
<item>10 secondes</item>
|
<item>10 secondes</item>
|
||||||
@@ -306,7 +296,7 @@
|
|||||||
<string name="menu_move">Déplacer</string>
|
<string name="menu_move">Déplacer</string>
|
||||||
<string name="menu_paste">Coller</string>
|
<string name="menu_paste">Coller</string>
|
||||||
<string name="menu_cancel">Annuler</string>
|
<string name="menu_cancel">Annuler</string>
|
||||||
<string name="allow_no_password_title">Autoriser l\'absence de clé principale</string>
|
<string name="allow_no_password_title">Autoriser l’absence de clé principale</string>
|
||||||
<string name="allow_no_password_summary">Autorise l’appui du bouton « Ouvrir » si aucun identifiant n’est sélectionné</string>
|
<string name="allow_no_password_summary">Autorise l’appui du bouton « Ouvrir » si aucun identifiant n’est sélectionné</string>
|
||||||
<string name="menu_file_selection_read_only">Protéger en écriture</string>
|
<string name="menu_file_selection_read_only">Protéger en écriture</string>
|
||||||
<string name="menu_open_file_read_and_write">Modifiable</string>
|
<string name="menu_open_file_read_and_write">Modifiable</string>
|
||||||
@@ -316,12 +306,12 @@
|
|||||||
<string name="education_read_only_summary">Changez le mode d’ouverture pour la session.
|
<string name="education_read_only_summary">Changez le mode d’ouverture pour la session.
|
||||||
\n
|
\n
|
||||||
\n« Protégé en écriture » empêche les modifications involontaires de la base de données.
|
\n« Protégé en écriture » empêche les modifications involontaires de la base de données.
|
||||||
\n« Modifiable » vous permet d’ajouter, de supprimer ou de modifier tous les éléments.</string>
|
\n« Modifiable » vous permet d’ajouter, de supprimer ou de modifier tous les éléments comme vous le souhaitez.</string>
|
||||||
<string name="edit_entry">Modifier l’entrée</string>
|
<string name="edit_entry">Modifier l’entrée</string>
|
||||||
<string name="error_load_database">Impossible de charger votre base de données.</string>
|
<string name="error_load_database">Impossible de charger votre base de données.</string>
|
||||||
<string name="error_load_database_KDF_memory">Impossible de charger la clé. Veuillez essayer de diminuer l’utilisation mémoire de la fonction de dérivation de clé.</string>
|
<string name="error_load_database_KDF_memory">Impossible de charger la clé. Veuillez essayer de diminuer l’utilisation mémoire de la fonction de dérivation de clé.</string>
|
||||||
<string name="list_entries_show_username_title">Afficher les noms d’utilisateur</string>
|
<string name="list_entries_show_username_title">Afficher les noms d’utilisateur</string>
|
||||||
<string name="list_entries_show_username_summary">Afficher les noms d’utilisateur dans les listes d’entrées</string>
|
<string name="list_entries_show_username_summary">Affiche les noms d’utilisateur dans les listes d’entrées</string>
|
||||||
<string name="build_label">Compilation %1$s</string>
|
<string name="build_label">Compilation %1$s</string>
|
||||||
<string name="keyboard_name">Magiclavier</string>
|
<string name="keyboard_name">Magiclavier</string>
|
||||||
<string name="keyboard_label">Magiclavier (KeePassDX)</string>
|
<string name="keyboard_label">Magiclavier (KeePassDX)</string>
|
||||||
@@ -343,9 +333,9 @@
|
|||||||
<string name="keyboard_key_sound_title">Appui clavier audible</string>
|
<string name="keyboard_key_sound_title">Appui clavier audible</string>
|
||||||
<string name="keyboard_change">Changement de clavier</string>
|
<string name="keyboard_change">Changement de clavier</string>
|
||||||
<string name="keyboard_previous_database_credentials_title">Écran des identifications de la base de données</string>
|
<string name="keyboard_previous_database_credentials_title">Écran des identifications de la base de données</string>
|
||||||
<string name="keyboard_previous_database_credentials_summary">Revenir automatiquement au clavier précédent sur l\'écran des identifications de la base de données</string>
|
<string name="keyboard_previous_database_credentials_summary">Revenir automatiquement au clavier précédent sur l’écran des identifications de la base de données</string>
|
||||||
<string name="keyboard_previous_fill_in_title">Action de touche automatique</string>
|
<string name="keyboard_previous_fill_in_title">Action de touche automatique</string>
|
||||||
<string name="keyboard_previous_fill_in_summary">Revenir automatiquement au clavier précédent après avoir exécuté "Action de touche automatique"</string>
|
<string name="keyboard_previous_fill_in_summary">Revenir automatiquement au clavier précédent après avoir exécuté « Action de touche automatique »</string>
|
||||||
<string name="selection_mode">Mode sélection</string>
|
<string name="selection_mode">Mode sélection</string>
|
||||||
<string name="do_not_kill_app">Veuillez ne pas tuer l’application…</string>
|
<string name="do_not_kill_app">Veuillez ne pas tuer l’application…</string>
|
||||||
<string name="lock_database_back_root_title">Appuyer sur « Retour » pour verrouiller</string>
|
<string name="lock_database_back_root_title">Appuyer sur « Retour » pour verrouiller</string>
|
||||||
@@ -368,7 +358,7 @@
|
|||||||
<string name="content_description_remove_field">Supprimer un champ</string>
|
<string name="content_description_remove_field">Supprimer un champ</string>
|
||||||
<string name="entry_UUID">UUID</string>
|
<string name="entry_UUID">UUID</string>
|
||||||
<string name="list_groups_show_number_entries_title">Afficher le nombre d’entrées</string>
|
<string name="list_groups_show_number_entries_title">Afficher le nombre d’entrées</string>
|
||||||
<string name="list_groups_show_number_entries_summary">Afficher le nombre d’entrées dans un groupe</string>
|
<string name="list_groups_show_number_entries_summary">Affiche le nombre d’entrées dans un groupe</string>
|
||||||
<string name="content_description_node_children">Enfants du nœud</string>
|
<string name="content_description_node_children">Enfants du nœud</string>
|
||||||
<string name="content_description_file_information">Informations du fichier</string>
|
<string name="content_description_file_information">Informations du fichier</string>
|
||||||
<string name="content_description_password_checkbox">Case à cocher du mot de passe</string>
|
<string name="content_description_password_checkbox">Case à cocher du mot de passe</string>
|
||||||
@@ -383,18 +373,14 @@
|
|||||||
<string name="menu_advanced_unlock_settings">Déverrouillage avancé</string>
|
<string name="menu_advanced_unlock_settings">Déverrouillage avancé</string>
|
||||||
<string name="enable">Activer</string>
|
<string name="enable">Activer</string>
|
||||||
<string name="disable">Désactiver</string>
|
<string name="disable">Désactiver</string>
|
||||||
<string name="biometric_prompt_store_credential_title">Enregistrer la reconnaissance biométrique</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">Attention : Vous devez toujours vous souvenir de votre mot de passe principal si vous utilisez la reconnaissance biométrique.</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">Ouvrir la base de données avec la reconnaissance biométrique</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_message">Extraire les identifiants de la base de données avec les données biométriques</string>
|
|
||||||
<string name="biometric">Biométrie</string>
|
<string name="biometric">Biométrie</string>
|
||||||
<string name="biometric_auto_open_prompt_title">Ouvrir automatiquement l’invite biométrique</string>
|
<string name="biometric_auto_open_prompt_title">Ouvrir automatiquement l’invite biométrique</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">Demander automatiquement la reconnaissance biométrique si la base de données est configurée pour l\'utiliser</string>
|
<string name="biometric_auto_open_prompt_summary">Demande automatiquement la reconnaissance biométrique si la base de données est configurée pour l’utiliser</string>
|
||||||
<string name="master_key">Clé principale</string>
|
<string name="master_key">Clé principale</string>
|
||||||
<string name="security">Sécurité</string>
|
<string name="security">Sécurité</string>
|
||||||
<string name="entry_history">Historique</string>
|
<string name="entry_history">Historique</string>
|
||||||
<string name="entry_setup_otp">Configuration d’un mot de passe à usage unique</string>
|
<string name="entry_setup_otp">Configuration d’un mot de passe à usage unique</string>
|
||||||
<string name="otp_type">Type OTP</string>
|
<string name="otp_type">Type MDP à usage unique</string>
|
||||||
<string name="otp_secret">Secret</string>
|
<string name="otp_secret">Secret</string>
|
||||||
<string name="otp_period">Période (secondes)</string>
|
<string name="otp_period">Période (secondes)</string>
|
||||||
<string name="otp_counter">Compteur</string>
|
<string name="otp_counter">Compteur</string>
|
||||||
@@ -416,11 +402,11 @@
|
|||||||
<string name="contains_duplicate_uuid_procedure">Résoudre le problème en générant de nouveaux UUID pour les doublons et continuer \?</string>
|
<string name="contains_duplicate_uuid_procedure">Résoudre le problème en générant de nouveaux UUID pour les doublons et continuer \?</string>
|
||||||
<string name="database_opened">Base de données ouverte</string>
|
<string name="database_opened">Base de données ouverte</string>
|
||||||
<string name="clipboard_explanation_summary">Copier les champs d’une entrée à l’aide du presse-papier de votre appareil</string>
|
<string name="clipboard_explanation_summary">Copier les champs d’une entrée à l’aide du presse-papier de votre appareil</string>
|
||||||
<string name="advanced_unlock_explanation_summary">Utilise le déverrouillage avancé pour ouvrir plus facilement une base de données</string>
|
<string name="advanced_unlock_explanation_summary">Utiliser le déverrouillage avancé pour ouvrir plus facilement une base de données</string>
|
||||||
<string name="database_data_compression_title">Compression de données</string>
|
<string name="database_data_compression_title">Compression de données</string>
|
||||||
<string name="database_data_compression_summary">La compression des données réduit la taille de la base de données</string>
|
<string name="database_data_compression_summary">La compression des données réduit la taille de la base de données</string>
|
||||||
<string name="max_history_items_title">Nombre maximum</string>
|
<string name="max_history_items_title">Nombre maximum</string>
|
||||||
<string name="max_history_items_summary">Limite le nombre d\'éléments de l’historique par entrée</string>
|
<string name="max_history_items_summary">Limite le nombre d’éléments de l’historique par entrée</string>
|
||||||
<string name="max_history_size_title">Taille maximum</string>
|
<string name="max_history_size_title">Taille maximum</string>
|
||||||
<string name="max_history_size_summary">Limite la taille de l’historique (en octets) par entrée</string>
|
<string name="max_history_size_summary">Limite la taille de l’historique (en octets) par entrée</string>
|
||||||
<string name="settings_database_recommend_changing_master_key_title">Recommander le renouvellement</string>
|
<string name="settings_database_recommend_changing_master_key_title">Recommander le renouvellement</string>
|
||||||
@@ -441,14 +427,13 @@
|
|||||||
<string name="command_execution">Exécution de la commande…</string>
|
<string name="command_execution">Exécution de la commande…</string>
|
||||||
<string name="warning_permanently_delete_nodes">Supprimer définitivement les nœuds sélectionnés \?</string>
|
<string name="warning_permanently_delete_nodes">Supprimer définitivement les nœuds sélectionnés \?</string>
|
||||||
<string name="keystore_not_accessible">Le magasin de clés n’est pas correctement initialisé.</string>
|
<string name="keystore_not_accessible">Le magasin de clés n’est pas correctement initialisé.</string>
|
||||||
<string name="credential_before_click_biometric_button">Saisissez le mot de passe puis cliquez sur le bouton biométrique.</string>
|
|
||||||
<string name="recycle_bin_group_title">Groupe de la corbeille</string>
|
<string name="recycle_bin_group_title">Groupe de la corbeille</string>
|
||||||
<string name="enable_auto_save_database_title">Enregistrement automatique de la base de données</string>
|
<string name="enable_auto_save_database_title">Enregistrement automatique de la base de données</string>
|
||||||
<string name="enable_auto_save_database_summary">Enregistre la base de données après chaque action importante (en mode « Modifiable »)</string>
|
<string name="enable_auto_save_database_summary">Enregistre la base de données après chaque action importante (en mode « Modifiable »)</string>
|
||||||
<string name="entry_attachments">Attachements</string>
|
<string name="entry_attachments">Attachements</string>
|
||||||
<string name="menu_restore_entry_history">Restaurer l\'historique</string>
|
<string name="menu_restore_entry_history">Restaurer l’historique</string>
|
||||||
<string name="menu_delete_entry_history">Effacer l\'historique</string>
|
<string name="menu_delete_entry_history">Effacer l’historique</string>
|
||||||
<string name="keyboard_auto_go_action_title">Action de touche auto</string>
|
<string name="keyboard_auto_go_action_title">Action de touche automatique</string>
|
||||||
<string name="keyboard_auto_go_action_summary">Action de la touche « Go » après avoir appuyé sur une touche « Champ »</string>
|
<string name="keyboard_auto_go_action_summary">Action de la touche « Go » après avoir appuyé sur une touche « Champ »</string>
|
||||||
<string name="download_attachment">Téléchargement %1$s</string>
|
<string name="download_attachment">Téléchargement %1$s</string>
|
||||||
<string name="download_initialization">Initialisation…</string>
|
<string name="download_initialization">Initialisation…</string>
|
||||||
@@ -461,15 +446,15 @@
|
|||||||
<string name="contribution">Contribution</string>
|
<string name="contribution">Contribution</string>
|
||||||
<string name="html_about_contribution">Afin de <strong>garder notre liberté</strong>, <strong>corriger les bugs</strong>, <strong>ajouter des fonctionnalités</strong> et <strong>être toujours actif</strong>, nous comptons sur votre <strong>contribution</strong>.</string>
|
<string name="html_about_contribution">Afin de <strong>garder notre liberté</strong>, <strong>corriger les bugs</strong>, <strong>ajouter des fonctionnalités</strong> et <strong>être toujours actif</strong>, nous comptons sur votre <strong>contribution</strong>.</string>
|
||||||
<string name="auto_focus_search_title">Recherche rapide</string>
|
<string name="auto_focus_search_title">Recherche rapide</string>
|
||||||
<string name="auto_focus_search_summary">Demander une recherche lors de l\'ouverture d\'une base de données</string>
|
<string name="auto_focus_search_summary">Demande une recherche lors de l’ouverture d’une base de données</string>
|
||||||
<string name="remember_database_locations_title">Mémoriser l’emplacement des bases de données</string>
|
<string name="remember_database_locations_title">Mémoriser l’emplacement des bases de données</string>
|
||||||
<string name="remember_database_locations_summary">Garde en mémoire l’emplacement où les bases de données sont stockées</string>
|
<string name="remember_database_locations_summary">Garde en mémoire l’emplacement où les bases de données sont stockées</string>
|
||||||
<string name="remember_keyfile_locations_title">Mémoriser les emplacements des fichiers clé</string>
|
<string name="remember_keyfile_locations_title">Mémoriser les emplacements des fichiers clé</string>
|
||||||
<string name="remember_keyfile_locations_summary">Garde en mémoire l’emplacement où les fichiers clé sont stockés</string>
|
<string name="remember_keyfile_locations_summary">Garde en mémoire l’emplacement où les fichiers clé sont stockés</string>
|
||||||
<string name="show_recent_files_title">Afficher les fichiers récents</string>
|
<string name="show_recent_files_title">Afficher les fichiers récents</string>
|
||||||
<string name="show_recent_files_summary">Afficher les emplacements des bases de données récentes</string>
|
<string name="show_recent_files_summary">Affiche les emplacements des bases de données récentes</string>
|
||||||
<string name="hide_broken_locations_title">Masquer les liens rompus de base de données</string>
|
<string name="hide_broken_locations_title">Masquer les liens rompus de base de données</string>
|
||||||
<string name="hide_broken_locations_summary">Masquer les liens rompus dans la liste des bases de données récentes</string>
|
<string name="hide_broken_locations_summary">Masque les liens rompus dans la liste des bases de données récentes</string>
|
||||||
<string name="warning_database_read_only">Accorder un accès en écriture au fichier pour enregistrer les modifications de la base de données</string>
|
<string name="warning_database_read_only">Accorder un accès en écriture au fichier pour enregistrer les modifications de la base de données</string>
|
||||||
<string name="education_setup_OTP_summary">Définit le mot de passe à usage unique (temporel ou évènementiel) pour générer un jeton demandé par l’authentification à deux facteurs (A2F).</string>
|
<string name="education_setup_OTP_summary">Définit le mot de passe à usage unique (temporel ou évènementiel) pour générer un jeton demandé par l’authentification à deux facteurs (A2F).</string>
|
||||||
<string name="education_setup_OTP_title">Définir l’OTP</string>
|
<string name="education_setup_OTP_title">Définir l’OTP</string>
|
||||||
@@ -478,25 +463,25 @@
|
|||||||
<string name="discard">Abandonner</string>
|
<string name="discard">Abandonner</string>
|
||||||
<string name="discard_changes">Abandonner les modifications \?</string>
|
<string name="discard_changes">Abandonner les modifications \?</string>
|
||||||
<string name="validate">Valider</string>
|
<string name="validate">Valider</string>
|
||||||
<string name="autofill_auto_search_summary">Suggérer automatiquement des résultats de recherche à partir du domaine Web ou de l\'application ID</string>
|
<string name="autofill_auto_search_summary">Suggérer automatiquement des résultats de recherche à partir du domaine Web ou de l’identifiant de l’application</string>
|
||||||
<string name="autofill_auto_search_title">Recherche automatique</string>
|
<string name="autofill_auto_search_title">Recherche automatique</string>
|
||||||
<string name="lock_database_show_button_summary">Affiche le bouton de verrouillage dans l\'interface utilisateur</string>
|
<string name="lock_database_show_button_summary">Affiche le bouton de verrouillage dans l’interface utilisateur</string>
|
||||||
<string name="lock_database_show_button_title">Afficher le bouton de verrouillage</string>
|
<string name="lock_database_show_button_title">Afficher le bouton de verrouillage</string>
|
||||||
<string name="autofill_preference_title">Paramètres de remplissage automatique</string>
|
<string name="autofill_preference_title">Paramètres de remplissage automatique</string>
|
||||||
<string name="warning_database_link_revoked">Accès au fichier révoqué par le gestionnaire de fichiers</string>
|
<string name="warning_database_link_revoked">Accès au fichier révoqué par le gestionnaire de fichiers</string>
|
||||||
<string name="error_label_exists">Ce label existe déjà.</string>
|
<string name="error_label_exists">Ce label existe déjà.</string>
|
||||||
<string name="autofill_block_restart">Redémarrez l\'application contenant le formulaire pour activer le blocage.</string>
|
<string name="autofill_block_restart">Redémarrez l’application contenant le formulaire pour activer le blocage.</string>
|
||||||
<string name="autofill_block">Blocker le remplissage automatique</string>
|
<string name="autofill_block">Blocker le remplissage automatique</string>
|
||||||
<string name="autofill_web_domain_blocklist_summary">Liste de blocage qui empêche le remplissage automatique des domaines Web</string>
|
<string name="autofill_web_domain_blocklist_summary">Liste de blocage qui empêche le remplissage automatique des domaines Web</string>
|
||||||
<string name="autofill_web_domain_blocklist_title">Liste de blocage de domaine Web</string>
|
<string name="autofill_web_domain_blocklist_title">Liste de blocage de domaine Web</string>
|
||||||
<string name="autofill_application_id_blocklist_summary">Liste de blocage qui empêche le remplissage automatique des applications</string>
|
<string name="autofill_application_id_blocklist_summary">Liste de blocage qui empêche le remplissage automatique des applications</string>
|
||||||
<string name="autofill_application_id_blocklist_title">Liste de blocage d\'application</string>
|
<string name="autofill_application_id_blocklist_title">Liste de blocage d’application</string>
|
||||||
<string name="keyboard_search_share_summary">Rechercher automatiquement les informations partagées pour remplir le clavier</string>
|
<string name="keyboard_search_share_summary">Recherche automatiquement les informations partagées pour remplir le clavier</string>
|
||||||
<string name="keyboard_search_share_title">Rechercher les informations partagées</string>
|
<string name="keyboard_search_share_title">Rechercher les informations partagées</string>
|
||||||
<string name="filter">Filtre</string>
|
<string name="filter">Filtre</string>
|
||||||
<string name="subdomain_search_summary">Rechercher des domaines Web avec des contraintes de sous-domaines</string>
|
<string name="subdomain_search_summary">Recherche des domaines Web avec des contraintes de sous-domaines</string>
|
||||||
<string name="subdomain_search_title">Recherche de sous-domaine</string>
|
<string name="subdomain_search_title">Recherche de sous-domaine</string>
|
||||||
<string name="error_string_type">Ce texte ne correspond pas à l\'élément demandé.</string>
|
<string name="error_string_type">Ce texte ne correspond pas à l’élément demandé.</string>
|
||||||
<string name="content_description_add_item">Ajouter un élément</string>
|
<string name="content_description_add_item">Ajouter un élément</string>
|
||||||
<string name="upload_attachment">Téléverser %1$s</string>
|
<string name="upload_attachment">Téléverser %1$s</string>
|
||||||
<string name="education_add_attachment_summary">Téléverse une pièce-jointe à votre entrée pour enregistrer d’importantes données externes.</string>
|
<string name="education_add_attachment_summary">Téléverse une pièce-jointe à votre entrée pour enregistrer d’importantes données externes.</string>
|
||||||
@@ -509,9 +494,61 @@
|
|||||||
<string name="content_description_credentials_information">Informations des identifiants</string>
|
<string name="content_description_credentials_information">Informations des identifiants</string>
|
||||||
<string name="warning_remove_unlinked_attachment">Supprimer les données non-liées peut réduire la taille de votre base de données mais peut également supprimer des données utilisées par des extensions KeePass.</string>
|
<string name="warning_remove_unlinked_attachment">Supprimer les données non-liées peut réduire la taille de votre base de données mais peut également supprimer des données utilisées par des extensions KeePass.</string>
|
||||||
<string name="warning_sure_remove_data">Supprimer ces données quand même ?</string>
|
<string name="warning_sure_remove_data">Supprimer ces données quand même ?</string>
|
||||||
<string name="warning_empty_keyfile">Il n\'est pas recommandé d\'ajouter un fichier clé vide.</string>
|
<string name="warning_empty_keyfile">Il n’est pas recommandé d’ajouter un fichier clé vide.</string>
|
||||||
<string name="warning_empty_keyfile_explanation">Le contenu du fichier clé ne devrait jamais changer, et dans le meilleur des cas, devrait contenir des données générées aléatoirement.</string>
|
<string name="warning_empty_keyfile_explanation">Le contenu du fichier clé ne devrait jamais changer, et dans le meilleur des cas, devrait contenir des données générées aléatoirement.</string>
|
||||||
<string name="database_data_remove_unlinked_attachments_title">Supprimer les données non-liées</string>
|
<string name="database_data_remove_unlinked_attachments_title">Supprimer les données non-liées</string>
|
||||||
<string name="database_data_remove_unlinked_attachments_summary">Supprimer les pièces jointes contenues dans la base de données mais non-liées à une entrée</string>
|
<string name="database_data_remove_unlinked_attachments_summary">Supprimer les pièces jointes contenues dans la base de données mais non-liées à une entrée</string>
|
||||||
<string name="data">Données</string>
|
<string name="data">Données</string>
|
||||||
|
<string name="show_uuid_summary">Affiche l’UUID lié à une entrée</string>
|
||||||
|
<string name="show_uuid_title">Afficher l’UUID</string>
|
||||||
|
<string name="autofill_read_only_save">L’enregistrement des données n’est pas autorisé pour une base de données ouverte en lecture seule.</string>
|
||||||
|
<string name="autofill_ask_to_save_data_summary">Demande à enregistrer des données quand un formulaire est validé</string>
|
||||||
|
<string name="autofill_ask_to_save_data_title">Demander à enregistrer des données</string>
|
||||||
|
<string name="autofill_save_search_info_summary">Essayer d’enregistrer les informations de recherche lors de la sélection manuelle d’une entrée</string>
|
||||||
|
<string name="autofill_save_search_info_title">Enregistrer les infos de recherche</string>
|
||||||
|
<string name="autofill_close_database_summary">Ferme la base de données après une sélection de remplissage automatique</string>
|
||||||
|
<string name="autofill_close_database_title">Fermer la base de données</string>
|
||||||
|
<string name="keyboard_previous_lock_summary">Revient automatiquement au clavier précédent après le verrouillage de la base de données</string>
|
||||||
|
<string name="keyboard_previous_lock_title">Verrouiller la base de données</string>
|
||||||
|
<string name="keyboard_save_search_info_summary">Essayer d’enregistrer les informations partagées lors de la sélection manuelle d’une entrée</string>
|
||||||
|
<string name="keyboard_save_search_info_title">Enregistrer les infos partagées</string>
|
||||||
|
<string name="notification">Notification</string>
|
||||||
|
<string name="crypto_object_not_initialized">Impossible de récupérer l\'objet crypto.</string>
|
||||||
|
<string name="biometric_security_update_required">Mise à jour de sécurité biométrique requise.</string>
|
||||||
|
<string name="warning_empty_recycle_bin">Supprimer définitivement tous les nœuds de la corbeille \?</string>
|
||||||
|
<string name="registration_mode">Mode enregistrement</string>
|
||||||
|
<string name="save_mode">Mode sauvegarde</string>
|
||||||
|
<string name="search_mode">Mode recherche</string>
|
||||||
|
<string name="error_registration_read_only">L’enregistrement d’un nouvel élément n’est pas autorisé dans une base de données en lecture seule</string>
|
||||||
|
<string name="error_field_name_already_exists">Le nom du champ existe déjà.</string>
|
||||||
|
<string name="advanced_unlock_delete_all_key_warning">Supprimer toutes les clés de chiffrement liées à la reconnaissance de déverrouillage avancée \?</string>
|
||||||
|
<string name="device_credential_unlock_enable_summary">Vous permet d\'utiliser les informations d\'identification de votre appareil pour ouvrir la base de données</string>
|
||||||
|
<string name="device_credential_unlock_enable_title">Déverrouillage par identifiants de l\'appareil</string>
|
||||||
|
<string name="device_credential">Déverouillage de l\'appareil</string>
|
||||||
|
<string name="credential_before_click_advanced_unlock_button">Tapez le mot de passe, puis cliquez sur le bouton \"Déverrouillage avancé\".</string>
|
||||||
|
<string name="advanced_unlock_prompt_not_initialized">Impossible d\'initialiser l\'invite de déverrouillage avancé.</string>
|
||||||
|
<string name="advanced_unlock_scanning_error">Erreur de déverrouillage avancé : %1$s</string>
|
||||||
|
<string name="advanced_unlock_not_recognized">Impossible de reconnaître l\'empreinte de déverrouillage avancé</string>
|
||||||
|
<string name="advanced_unlock_invalid_key">Impossible de lire la clé de déverrouillage avancé. Veuillez la supprimer et répéter la procédure de reconnaissance de déverrouillage.</string>
|
||||||
|
<string name="advanced_unlock_prompt_extract_credential_message">Extraire les identifiants de la base de données avec des données de déverrouillage avancées</string>
|
||||||
|
<string name="advanced_unlock_prompt_extract_credential_title">Ouvrir la base de données avec la reconnaissance de déverrouillage avancée</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_message">Attention : Vous devez toujours vous souvenir de votre mot de passe principal si vous utilisez la reconnaissance de déverrouillage avancée.</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_title">Reconnaissance de déverrouillage avancée</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_store_credential">Ouvrez l\'invite de déverrouillage avancé pour stocker les informations d\'identification</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_unlock_database">Ouvrez l\'invite de déverrouillage avancé pour déverrouiller la base de données</string>
|
||||||
|
<string name="menu_keystore_remove_key">Supprimer la clé de déverrouillage avancé</string>
|
||||||
|
<string name="enter">Entrer</string>
|
||||||
|
<string name="backspace">Retour arrière</string>
|
||||||
|
<string name="select_entry">Sélection d\'une entrée</string>
|
||||||
|
<string name="back_to_previous_keyboard">Retour au clavier précédent</string>
|
||||||
|
<string name="custom_fields">Champs customisés</string>
|
||||||
|
<string name="education_advanced_unlock_summary">Lier votre mot de passe à vos informations d\'identification biométriques ou de périphérique scannées pour déverrouiller rapidement votre base de données.</string>
|
||||||
|
<string name="education_advanced_unlock_title">Déverrouillage avancé de la base de données</string>
|
||||||
|
<string name="advanced_unlock_timeout">Délai du déverrouillage avancé</string>
|
||||||
|
<string name="temp_advanced_unlock_timeout_summary">Durée d\'utilisation du déverrouillage avancé avant de supprimer son contenu</string>
|
||||||
|
<string name="temp_advanced_unlock_timeout_title">Expiration du déverrouillage avancé</string>
|
||||||
|
<string name="temp_advanced_unlock_enable_summary">Ne stocker aucun contenu crypté pour utiliser le déverrouillage avancé</string>
|
||||||
|
<string name="temp_advanced_unlock_enable_title">Déverrouillage avancé temporaire</string>
|
||||||
|
<string name="advanced_unlock_tap_delete">Appuyez pour supprimer les clés de déverrouillage avancées</string>
|
||||||
|
<string name="content">Contenu</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
<string name="encryption_algorithm">Algoritmo de cifrado</string>
|
<string name="encryption_algorithm">Algoritmo de cifrado</string>
|
||||||
<string name="key_derivation_function">Función de derivación de chave</string>
|
<string name="key_derivation_function">Función de derivación de chave</string>
|
||||||
<string name="app_timeout">Tempo de espera da aplicación</string>
|
<string name="app_timeout">Tempo de espera da aplicación</string>
|
||||||
<string name="app_timeout_summary">Tempo antes de bloquear a base de datos cando a aplicación está inactiva.</string>
|
<string name="app_timeout_summary">Tiempo de inactividad antes de bloquear la base de datos</string>
|
||||||
<string name="application">Aplicación</string>
|
<string name="application">Aplicación</string>
|
||||||
<string name="brackets">Parénteses</string>
|
<string name="brackets">Parénteses</string>
|
||||||
<string name="extended_ASCII">ASCII extendido</string>
|
<string name="extended_ASCII">ASCII extendido</string>
|
||||||
|
|||||||
@@ -133,7 +133,6 @@
|
|||||||
<string name="menu_open">Otvori</string>
|
<string name="menu_open">Otvori</string>
|
||||||
<string name="menu_search">Traži</string>
|
<string name="menu_search">Traži</string>
|
||||||
<string name="menu_showpass">Prikaži lozinku</string>
|
<string name="menu_showpass">Prikaži lozinku</string>
|
||||||
<string name="menu_biometric_remove_key">Izbriši spremljene biometrijske ključeve</string>
|
|
||||||
<string name="menu_url">Idi na URL</string>
|
<string name="menu_url">Idi na URL</string>
|
||||||
<string name="menu_open_file_read_and_write">Promjenjivo</string>
|
<string name="menu_open_file_read_and_write">Promjenjivo</string>
|
||||||
<string name="menu_empty_recycle_bin">Isprazni koš za smeće</string>
|
<string name="menu_empty_recycle_bin">Isprazni koš za smeće</string>
|
||||||
@@ -149,7 +148,7 @@
|
|||||||
<string name="progress_create">Stvaranje nove baze podataka …</string>
|
<string name="progress_create">Stvaranje nove baze podataka …</string>
|
||||||
<string name="protection">Zaštita</string>
|
<string name="protection">Zaštita</string>
|
||||||
<string name="contains_duplicate_uuid">Baza podataka sadrži duplicirane UUID-ove.</string>
|
<string name="contains_duplicate_uuid">Baza podataka sadrži duplicirane UUID-ove.</string>
|
||||||
<string name="selection_mode">Mod odabira</string>
|
<string name="selection_mode">Modus odabira</string>
|
||||||
<string name="encryption_explanation">Algoritam šifriranja baze podataka koji se koristi za sve podatke.</string>
|
<string name="encryption_explanation">Algoritam šifriranja baze podataka koji se koristi za sve podatke.</string>
|
||||||
<string name="memory_usage">Korištenje memorije</string>
|
<string name="memory_usage">Korištenje memorije</string>
|
||||||
<string name="parallelism">Paralelnost</string>
|
<string name="parallelism">Paralelnost</string>
|
||||||
@@ -176,15 +175,12 @@
|
|||||||
<string name="warning_permanently_delete_nodes">Trajno izbrisati odabrane čvorove\?</string>
|
<string name="warning_permanently_delete_nodes">Trajno izbrisati odabrane čvorove\?</string>
|
||||||
<string name="version_label">Verzija %1$s</string>
|
<string name="version_label">Verzija %1$s</string>
|
||||||
<string name="build_label">Izgradnja %1$s</string>
|
<string name="build_label">Izgradnja %1$s</string>
|
||||||
<string name="biometric_prompt_store_credential_message">Upozorenje: Ako koristiš biometrijsko prepoznavanje i dalje moraš zapamtiti svoju glavnu lozinku.</string>
|
<string name="encrypted_value_stored">Šifrirana lozinka spremljena</string>
|
||||||
<string name="biometric_prompt_extract_credential_title">Otvori bazu podataka pomoću biometrijskog prepoznavanja</string>
|
|
||||||
<string name="encrypted_value_stored">Šifrirana lozinka pohranjena</string>
|
|
||||||
<string name="biometric_invalid_key">Nije moguće pročitati biometrijski ključ. Izbriši ga i ponovi postupak prepoznavanja.</string>
|
|
||||||
<string name="database_history">Povijest</string>
|
<string name="database_history">Povijest</string>
|
||||||
<string name="menu_appearance_settings">Izgled</string>
|
<string name="menu_appearance_settings">Izgled</string>
|
||||||
<string name="general">Opće</string>
|
<string name="general">Opće</string>
|
||||||
<string name="autofill">Automatsko ispunjavanje</string>
|
<string name="autofill">Automatsko ispunjavanje</string>
|
||||||
<string name="autofill_service_name">Automatsko ispunjavanje obrazaca KeepassDX</string>
|
<string name="autofill_service_name">Automatsko ispunjavanje obrazaca KeePassDX</string>
|
||||||
<string name="set_autofill_service_title">Postavi standardnu uslugu automatskog ispunjavanja</string>
|
<string name="set_autofill_service_title">Postavi standardnu uslugu automatskog ispunjavanja</string>
|
||||||
<string name="list_password_generator_options_title">Znakovi lozinke</string>
|
<string name="list_password_generator_options_title">Znakovi lozinke</string>
|
||||||
<string name="list_password_generator_options_summary">Postavi dozvoljene znakove za generiranje lozinke</string>
|
<string name="list_password_generator_options_summary">Postavi dozvoljene znakove za generiranje lozinke</string>
|
||||||
@@ -199,8 +195,7 @@
|
|||||||
<string name="biometric_unlock_enable_title">Biometrijsko otključavanje</string>
|
<string name="biometric_unlock_enable_title">Biometrijsko otključavanje</string>
|
||||||
<string name="biometric_unlock_enable_summary">Otvaranje baze podataka skeniranjem biometrike</string>
|
<string name="biometric_unlock_enable_summary">Otvaranje baze podataka skeniranjem biometrike</string>
|
||||||
<string name="biometric_delete_all_key_title">Izbriši ključeve šifriranja</string>
|
<string name="biometric_delete_all_key_title">Izbriši ključeve šifriranja</string>
|
||||||
<string name="biometric_delete_all_key_summary">Izbriši sve ključeve šifriranja povezane s biometrijskim prepoznavanjem</string>
|
<string name="biometric_delete_all_key_summary">Izbriši sve ključeve šifriranja povezane s naprednim prepoznavanjem otključavanja</string>
|
||||||
<string name="biometric_delete_all_key_warning">Izbrisati sve ključeve povezane s biometrijskim prepoznavanjem\?</string>
|
|
||||||
<string name="unavailable_feature_hardware">Nije moguće pronaći odgovarajući hardver.</string>
|
<string name="unavailable_feature_hardware">Nije moguće pronaći odgovarajući hardver.</string>
|
||||||
<string name="file_name">Ime datoteke</string>
|
<string name="file_name">Ime datoteke</string>
|
||||||
<string name="path">Putanja</string>
|
<string name="path">Putanja</string>
|
||||||
@@ -227,7 +222,7 @@
|
|||||||
<string name="database_custom_color_title">Proizvoljna boja baze podataka</string>
|
<string name="database_custom_color_title">Proizvoljna boja baze podataka</string>
|
||||||
<string name="database_version_title">Verzija baze podataka</string>
|
<string name="database_version_title">Verzija baze podataka</string>
|
||||||
<string name="text_appearance">Tekst</string>
|
<string name="text_appearance">Tekst</string>
|
||||||
<string name="application_appearance">Aplikacija</string>
|
<string name="application_appearance">Sučelje</string>
|
||||||
<string name="other">Ostalo</string>
|
<string name="other">Ostalo</string>
|
||||||
<string name="compression">Komprimiranje</string>
|
<string name="compression">Komprimiranje</string>
|
||||||
<string name="compression_none">Bez</string>
|
<string name="compression_none">Bez</string>
|
||||||
@@ -244,7 +239,7 @@
|
|||||||
<string name="error_out_of_memory">Nema dovoljno memorije za učitavanje cijele baze podataka.</string>
|
<string name="error_out_of_memory">Nema dovoljno memorije za učitavanje cijele baze podataka.</string>
|
||||||
<string name="error_load_database">Nije moguće učitati bazu podataka.</string>
|
<string name="error_load_database">Nije moguće učitati bazu podataka.</string>
|
||||||
<string name="error_load_database_KDF_memory">Nije moguće učitati ključ. Pokušaje smanjiti uporabu memorije KDF.</string>
|
<string name="error_load_database_KDF_memory">Nije moguće učitati ključ. Pokušaje smanjiti uporabu memorije KDF.</string>
|
||||||
<string name="error_disallow_no_credentials">Barem jedna akreditacija mora biti postavljena.</string>
|
<string name="error_disallow_no_credentials">Barem jedan skup podataka za prijavu mora biti postavljen.</string>
|
||||||
<string name="error_string_key">Svaki niz mora imati ime polja.</string>
|
<string name="error_string_key">Svaki niz mora imati ime polja.</string>
|
||||||
<string name="error_autofill_enable_service">Nije moguće aktivirati uslugu automatskog ispunjavanja.</string>
|
<string name="error_autofill_enable_service">Nije moguće aktivirati uslugu automatskog ispunjavanja.</string>
|
||||||
<string name="error_move_folder_in_itself">Nije moguće premjestiti grupu u samu sebe.</string>
|
<string name="error_move_folder_in_itself">Nije moguće premjestiti grupu u samu sebe.</string>
|
||||||
@@ -255,7 +250,7 @@
|
|||||||
<string name="error_save_database">Nije moguće spremiti bazu podataka.</string>
|
<string name="error_save_database">Nije moguće spremiti bazu podataka.</string>
|
||||||
<string name="error_otp_period">Razdoblje mora biti između %1$d i %2$d sekundi.</string>
|
<string name="error_otp_period">Razdoblje mora biti između %1$d i %2$d sekundi.</string>
|
||||||
<string name="file_not_found_content">Nije moguće pronaći datoteku. Probaj je ponovo otvoriti iz upravitelja datoteka.</string>
|
<string name="file_not_found_content">Nije moguće pronaći datoteku. Probaj je ponovo otvoriti iz upravitelja datoteka.</string>
|
||||||
<string name="invalid_credentials">Nije moguće čitati akreditacije.</string>
|
<string name="invalid_credentials">Nije moguće čitati podatke za prijavu.</string>
|
||||||
<string name="list_size_title">Veličina elemenata popisa</string>
|
<string name="list_size_title">Veličina elemenata popisa</string>
|
||||||
<string name="list_size_summary">Veličina teksta u popisu elemenata</string>
|
<string name="list_size_summary">Veličina teksta u popisu elemenata</string>
|
||||||
<string name="lowercase">Mala slova</string>
|
<string name="lowercase">Mala slova</string>
|
||||||
@@ -277,11 +272,7 @@
|
|||||||
<string name="special">Posebni znakovi</string>
|
<string name="special">Posebni znakovi</string>
|
||||||
<string name="underline">Podcrtaj</string>
|
<string name="underline">Podcrtaj</string>
|
||||||
<string name="uppercase">Velika slova</string>
|
<string name="uppercase">Velika slova</string>
|
||||||
<string name="biometric_prompt_store_credential_title">Spremi biometrijsko prepoznavanje</string>
|
<string name="no_credentials_stored">Ova baza podataka još nema spremljene podatke za prijavu.</string>
|
||||||
<string name="biometric_prompt_extract_credential_message">Izvadi akreditaciju baze podataka s biometrijskim podacima</string>
|
|
||||||
<string name="biometric_not_recognized">Nije moguće prepoznati biometriju</string>
|
|
||||||
<string name="no_credentials_stored">Ova baza podataka još nema spremljenu akreditaciju.</string>
|
|
||||||
<string name="credential_before_click_biometric_button">Upiši lozinku, zatim klikne gumb „Biometrija”.</string>
|
|
||||||
<string name="biometric">Biometrija</string>
|
<string name="biometric">Biometrija</string>
|
||||||
<string name="autofill_sign_in_prompt">Prijavi se s KeePassDX</string>
|
<string name="autofill_sign_in_prompt">Prijavi se s KeePassDX</string>
|
||||||
<string name="autofill_explanation_summary">Aktiviraj automatsko ispunjavanje za brzo ispunjavanje obrazaca u drugim aplikacijama</string>
|
<string name="autofill_explanation_summary">Aktiviraj automatsko ispunjavanje za brzo ispunjavanje obrazaca u drugim aplikacijama</string>
|
||||||
@@ -321,7 +312,7 @@
|
|||||||
<string name="keyboard_key_vibrate_title">Vibracija tipki</string>
|
<string name="keyboard_key_vibrate_title">Vibracija tipki</string>
|
||||||
<string name="keyboard_key_sound_title">Zvuk tipki</string>
|
<string name="keyboard_key_sound_title">Zvuk tipki</string>
|
||||||
<string name="allow_no_password_title">Dozvoli bez lozinke</string>
|
<string name="allow_no_password_title">Dozvoli bez lozinke</string>
|
||||||
<string name="allow_no_password_summary">Dozvoljava dodir gumba „Otvori”, ako nijedna akreditacija nije odabrana</string>
|
<string name="allow_no_password_summary">Dozvoljava dodir gumba „Otvori”, ako nisu odabrani nikoji podaci za prijavu</string>
|
||||||
<string name="delete_entered_password_title">Izbriši lozinku</string>
|
<string name="delete_entered_password_title">Izbriši lozinku</string>
|
||||||
<string name="delete_entered_password_summary">Briše upisanu lozinku nakon pokušaja povezivanja s bazom podataka</string>
|
<string name="delete_entered_password_summary">Briše upisanu lozinku nakon pokušaja povezivanja s bazom podataka</string>
|
||||||
<string name="enable_read_only_title">Zaštićeno od pisanja</string>
|
<string name="enable_read_only_title">Zaštićeno od pisanja</string>
|
||||||
@@ -375,10 +366,8 @@
|
|||||||
<string name="keyboard_entry_timeout_summary">Istek vremena za brisanje unosa tipkovnicom</string>
|
<string name="keyboard_entry_timeout_summary">Istek vremena za brisanje unosa tipkovnicom</string>
|
||||||
<string name="education_read_only_title">Zaštiti bazu podataka od pisanja</string>
|
<string name="education_read_only_title">Zaštiti bazu podataka od pisanja</string>
|
||||||
<string name="autofill_web_domain_blocklist_title">Popis blokiranja web domena</string>
|
<string name="autofill_web_domain_blocklist_title">Popis blokiranja web domena</string>
|
||||||
<string name="education_biometric_title">Biometrijsko otključavanje baze podataka</string>
|
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="contribution">Doprinos</string>
|
<string name="contribution">Doprinos</string>
|
||||||
<string name="open_biometric_prompt_store_credential">Za spremanje akreditacija, otvori biometrijsku prijavu</string>
|
|
||||||
<string name="error_label_exists">Ova oznaka već postoji.</string>
|
<string name="error_label_exists">Ova oznaka već postoji.</string>
|
||||||
<string name="warning_database_read_only">Za spremanje promjena u bazi podataka, datoteci dozvoli pisanje</string>
|
<string name="warning_database_read_only">Za spremanje promjena u bazi podataka, datoteci dozvoli pisanje</string>
|
||||||
<string name="app_timeout">Istek vremena aplikacije</string>
|
<string name="app_timeout">Istek vremena aplikacije</string>
|
||||||
@@ -387,7 +376,7 @@
|
|||||||
<string name="rounds_explanation">Dodatni prolazi šifriranja pružaju veću zaštitu od brutalnih napada, ali stvarno mogu usporiti učitavanje i spremanje.</string>
|
<string name="rounds_explanation">Dodatni prolazi šifriranja pružaju veću zaštitu od brutalnih napada, ali stvarno mogu usporiti učitavanje i spremanje.</string>
|
||||||
<string name="subdomain_search_summary">Traži web domene s ograničenjima poddomena</string>
|
<string name="subdomain_search_summary">Traži web domene s ograničenjima poddomena</string>
|
||||||
<string name="keyboard_search_share_title">Traži dijeljene informacije</string>
|
<string name="keyboard_search_share_title">Traži dijeljene informacije</string>
|
||||||
<string name="html_text_dev_feature_upgrade">Ne zaboravi aktualizirati aplikaciju najnovijim verzijama.</string>
|
<string name="html_text_dev_feature_upgrade">Redovito aktualiziraj aplikaciju instaliranjem najnovijih verzija.</string>
|
||||||
<string name="autofill_block_restart">Za aktiviranje blokiranja, ponovo pokreni aplikaciju koja sadrži obrazac.</string>
|
<string name="autofill_block_restart">Za aktiviranje blokiranja, ponovo pokreni aplikaciju koja sadrži obrazac.</string>
|
||||||
<string name="education_sort_summary">Odaberi način razvrstavanja unosa i grupa.</string>
|
<string name="education_sort_summary">Odaberi način razvrstavanja unosa i grupa.</string>
|
||||||
<string name="warning_database_link_revoked">Pristup datoteci koju je opozvao upravitelj datoteka</string>
|
<string name="warning_database_link_revoked">Pristup datoteci koju je opozvao upravitelj datoteka</string>
|
||||||
@@ -405,24 +394,22 @@
|
|||||||
<string name="html_text_dev_feature_contibute"><strong>Doprinosom</strong>,</string>
|
<string name="html_text_dev_feature_contibute"><strong>Doprinosom</strong>,</string>
|
||||||
<string name="education_entry_new_field_title">Dodaj prilagođena polja</string>
|
<string name="education_entry_new_field_title">Dodaj prilagođena polja</string>
|
||||||
<string name="education_lock_summary">Zaključaj bazu podataka brzo, aplikaciju možeš postaviti tako da bazu nakon nekog vremena zaključa i kad se ekran isključi.</string>
|
<string name="education_lock_summary">Zaključaj bazu podataka brzo, aplikaciju možeš postaviti tako da bazu nakon nekog vremena zaključa i kad se ekran isključi.</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string name="encryption_twofish">Twofish</string>
|
<string name="encryption_twofish">Twofish</string>
|
||||||
<string name="show_recent_files_summary">Prikaži mjesto nedavnih baza podataka</string>
|
<string name="show_recent_files_summary">Prikaži mjesto nedavnih baza podataka</string>
|
||||||
<string name="education_biometric_summary">Za brzo otključavanje baze podataka, poveži lozinku sa skeniranom biometrijom.</string>
|
<string name="education_advanced_unlock_summary">Za brzo otključavanje baze podataka, poveži lozinku sa skeniranom biometrijom.</string>
|
||||||
<string name="html_text_donation">Kako bismo zadržali našu slobodu i uvijek bili aktivni, računamo na tvoj<strong>doprinos.</strong></string>
|
<string name="html_text_donation">Kako bismo zadržali našu slobodu i uvijek bili aktivni, računamo na tvoj<strong>doprinos.</strong></string>
|
||||||
<string name="kdf_explanation">Za stvaranje ključa za algoritam šifriranja, glavni ključ se transformira pomoću funkcije za generiranje ključeva koja sadrži slučajnu komponentu.</string>
|
<string name="kdf_explanation">Za stvaranje ključa za algoritam šifriranja, glavni ključ se transformira pomoću funkcije za generiranje ključeva koja sadrži slučajnu komponentu.</string>
|
||||||
<string name="lock_database_back_root_summary">Zaključaj bazu podataka kad korisnik pritisne gumb za natrag na ekranu</string>
|
<string name="lock_database_back_root_summary">Zaključaj bazu podataka kad korisnik pritisne gumb za natrag na glavnom ekranu</string>
|
||||||
<string name="hide_broken_locations_title">Sakrij pokvarene poveznice baze podataka</string>
|
<string name="hide_broken_locations_title">Sakrij pokvarene poveznice baze podataka</string>
|
||||||
<string name="autofill_block">Blokiranje automatskog ispunjavanja</string>
|
<string name="autofill_block">Blokiranje automatskog ispunjavanja</string>
|
||||||
<string name="keystore_not_accessible">Baza ključeva nije ispravno inicijalizirana.</string>
|
<string name="keystore_not_accessible">Baza ključeva nije ispravno inicijalizirana.</string>
|
||||||
<string name="icon_pack_choose_summary">Paket ikona, koji se koristi u aplikaciji</string>
|
<string name="icon_pack_choose_summary">Paket ikona, koji se koristi u aplikaciji</string>
|
||||||
<string name="hide_expired_entries_summary">Istekli unosi se ne pokazuju</string>
|
<string name="hide_expired_entries_summary">Istekli unosi se ne pokazuju</string>
|
||||||
<string name="education_lock_title">Zaključaj bazu podataka</string>
|
<string name="education_lock_title">Zaključaj bazu podataka</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">Za otključavanje baze podataka, otvori biometrijsku prijavu</string>
|
|
||||||
<string name="education_unlock_title">Otključaj bazu podataka</string>
|
<string name="education_unlock_title">Otključaj bazu podataka</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">Automatski traži biometriju, ako je baza podataka tako postavljena</string>
|
<string name="biometric_auto_open_prompt_summary">Automatski zatraži napredno otključavanje ako je baza podataka tako postavljena</string>
|
||||||
<string name="unavailable_feature_text">Nije moguće pokrenuti ovu funkciju.</string>
|
<string name="unavailable_feature_text">Nije moguće pokrenuti ovu funkciju.</string>
|
||||||
<string name="biometric_auto_open_prompt_title">Automatski otvori biometrijsku prijavu</string>
|
<string name="biometric_auto_open_prompt_title">Automatski otvori prozor za prijavu</string>
|
||||||
<string name="clipboard_timeout">Istek vremena međuspremnika</string>
|
<string name="clipboard_timeout">Istek vremena međuspremnika</string>
|
||||||
<string name="education_search_title">Pretraži unose</string>
|
<string name="education_search_title">Pretraži unose</string>
|
||||||
<string name="education_field_copy_title">Kopiraj jedno polje</string>
|
<string name="education_field_copy_title">Kopiraj jedno polje</string>
|
||||||
@@ -460,17 +447,16 @@
|
|||||||
<string name="html_text_ad_free">Za razliku od mnogih aplikacija za upravljanje lozinkama, ova je <strong>bez oglasa</strong>, <strong>copylefted slobodan softver</strong> i ne prikuplja osobne podatke na svojim poslužiteljima, bez obzira na korištenu verziju.</string>
|
<string name="html_text_ad_free">Za razliku od mnogih aplikacija za upravljanje lozinkama, ova je <strong>bez oglasa</strong>, <strong>copylefted slobodan softver</strong> i ne prikuplja osobne podatke na svojim poslužiteljima, bez obzira na korištenu verziju.</string>
|
||||||
<string name="rounds">Transformacijski prolazi</string>
|
<string name="rounds">Transformacijski prolazi</string>
|
||||||
<string name="download_initialization">Inicijaliziranje …</string>
|
<string name="download_initialization">Inicijaliziranje …</string>
|
||||||
<string name="biometric_scanning_error">Biometrijska greška: %1$s</string>
|
|
||||||
<string name="education_donation_title">Sudjeluj</string>
|
<string name="education_donation_title">Sudjeluj</string>
|
||||||
<string name="education_new_node_summary">Unosi pomažu u upravljanju digitalnim identitetom.
|
<string name="education_new_node_summary">Unosi pomažu u upravljanju digitalnim identitetom.
|
||||||
\n
|
\n
|
||||||
\nGrupe (~mape) organiziraju unose u bazi podataka.</string>
|
\nGrupe (~mape) organiziraju unose u bazi podataka.</string>
|
||||||
<string name="download_progression">U tijeku: %1$d%%</string>
|
<string name="download_progression">U tijeku: %1$d%%</string>
|
||||||
<string name="download_complete">Gotovo!</string>
|
<string name="download_complete">Gotovo!</string>
|
||||||
<string name="keyboard_previous_fill_in_summary">Automatski se vrati na prethodnu tipkovnicu nakon izvršavanja automatske radnje tipke</string>
|
<string name="keyboard_previous_fill_in_summary">Automatski se vrati na prethodnu tipkovnicu nakon izvršavanja „Automatska radnje tipke”</string>
|
||||||
<string name="keyboard_previous_fill_in_title">Automatska radnja tipke</string>
|
<string name="keyboard_previous_fill_in_title">Automatska radnja tipke</string>
|
||||||
<string name="keyboard_previous_database_credentials_summary">Automatski se prebaci na prethodnu tipkovnicu pri ekranu za unos podataka za prijavu u bazu podataka</string>
|
<string name="keyboard_previous_database_credentials_summary">Automatski se prebaci na prethodnu tipkovnicu pri ekranu za unos podataka za prijavu na bazu podataka</string>
|
||||||
<string name="keyboard_previous_database_credentials_title">Ekran za unos podataka za prijavu u bazu podataka</string>
|
<string name="keyboard_previous_database_credentials_title">Ekran za unos podataka za prijavu na bazu podataka</string>
|
||||||
<string name="keyboard_change">Promijeni tipkovnicu</string>
|
<string name="keyboard_change">Promijeni tipkovnicu</string>
|
||||||
<string name="warning_file_too_big">Baza podataka za KeePass trebala bi sadržavati samo male datoteke uslužnih programa (poput PGP datoteke ključeva).
|
<string name="warning_file_too_big">Baza podataka za KeePass trebala bi sadržavati samo male datoteke uslužnih programa (poput PGP datoteke ključeva).
|
||||||
\n
|
\n
|
||||||
@@ -487,5 +473,57 @@
|
|||||||
<string name="database_data_remove_unlinked_attachments_title">Ukloni nepovezane podatke</string>
|
<string name="database_data_remove_unlinked_attachments_title">Ukloni nepovezane podatke</string>
|
||||||
<string name="data">Podaci</string>
|
<string name="data">Podaci</string>
|
||||||
<string name="warning_sure_remove_data">Svejedno ukloniti ove podatke\?</string>
|
<string name="warning_sure_remove_data">Svejedno ukloniti ove podatke\?</string>
|
||||||
<string name="content_description_credentials_information">Podaci podataka prijave</string>
|
<string name="content_description_credentials_information">Podaci za prijavu</string>
|
||||||
|
<string name="autofill_save_search_info_summary">Pokušaj spremiti podatke pretrage prilikom odabira ručnog unosa</string>
|
||||||
|
<string name="notification">Obavijest</string>
|
||||||
|
<string name="error_registration_read_only">Nije dopušteno spremati novi element u zaštićenoj bazi podataka</string>
|
||||||
|
<string name="autofill_read_only_save">Spremanje podataka nije dopušteno za bazu podataka koja je otvorena u zaštićenom stanju.</string>
|
||||||
|
<string name="show_uuid_summary">Prikazuje UUID povezan s unosom</string>
|
||||||
|
<string name="show_uuid_title">Prikaži UUID</string>
|
||||||
|
<string name="autofill_ask_to_save_data_summary">Zatraži spremanje podataka kad se obrazac provjeri</string>
|
||||||
|
<string name="autofill_ask_to_save_data_title">Zatraži spremanje podataka</string>
|
||||||
|
<string name="autofill_save_search_info_title">Spremi podatke pretrage</string>
|
||||||
|
<string name="autofill_close_database_summary">Zatvori bazu podataka nakon odabira automatskog ispunjavanja</string>
|
||||||
|
<string name="autofill_close_database_title">Zatvori bazu podataka</string>
|
||||||
|
<string name="keyboard_previous_lock_summary">Automatski prebaci na prethodnu tipkovnicu nakon zaključavanja baze podataka</string>
|
||||||
|
<string name="keyboard_previous_lock_title">Zaključaj bazu podataka</string>
|
||||||
|
<string name="keyboard_save_search_info_summary">Pokušaj spremiti dijeljene informacije prilikom odabira ručnog unosa</string>
|
||||||
|
<string name="keyboard_save_search_info_title">Spremi dijeljene informacije</string>
|
||||||
|
<string name="warning_empty_recycle_bin">Trajno izbrisati sve čvorove iz smeća\?</string>
|
||||||
|
<string name="crypto_object_not_initialized">Nije moguće dohvatiti kripto objekt.</string>
|
||||||
|
<string name="biometric_security_update_required">Potrebno je aktualizirati biometrijsku zaštitu.</string>
|
||||||
|
<string name="configure_biometric">Ne postoji biometrijski ključ niti podaci za prijavu uređaja.</string>
|
||||||
|
<string name="registration_mode">Modus registracije</string>
|
||||||
|
<string name="save_mode">Modus spremanja</string>
|
||||||
|
<string name="search_mode">Modus pretrage</string>
|
||||||
|
<string name="error_field_name_already_exists">Ime polja već postoji.</string>
|
||||||
|
<string name="advanced_unlock_delete_all_key_warning">Izbrisati sve ključeve šifriranja povezane s naprednim prepoznavanjem otključavanja\?</string>
|
||||||
|
<string name="credential_before_click_advanced_unlock_button">Upiši lozinku i zatim pritisni gumb „Napredno otključavanje”.</string>
|
||||||
|
<string name="advanced_unlock_prompt_extract_credential_title">Otvori bazu podataka pomoću naprednog prepoznavanja otključavanja</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_message">Upozorenje: Ako koristiš prepoznavanje naprednog otključavanja morat ćeš i dalje znati glavnu lozinku.</string>
|
||||||
|
<string name="menu_keystore_remove_key">Izbriši ključ naprednog otključavanja</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_title">Napredno prepoznavanje otključavanja</string>
|
||||||
|
<string name="advanced_unlock_prompt_not_initialized">Nije moguće pokrenuti prozor naprednog otključavanja.</string>
|
||||||
|
<string name="advanced_unlock_scanning_error">Greška naprednog otključavanja: %1$s</string>
|
||||||
|
<string name="advanced_unlock_prompt_extract_credential_message">Izdvoji podatake za prijavu na bazu podataka pomoću podataka naprednog otključavanja</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_store_credential">Otvori prozor naprednog otključavanja za spremanje podataka za prijavu</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_unlock_database">Otvori prozor naprednog otključavanja za otključavanje baze podataka</string>
|
||||||
|
<string name="advanced_unlock_not_recognized">Nije moguće prepoznati digitanlni otisak za napredno otključavanje</string>
|
||||||
|
<string name="advanced_unlock_invalid_key">Nije moguće pročitati ključ naprednog otključavanja. Izbriši ga i ponovi postupak prepoznavanja.</string>
|
||||||
|
<string name="enter">Tipka Enter</string>
|
||||||
|
<string name="backspace">Tipka Backspace</string>
|
||||||
|
<string name="select_entry">Odaberi unos</string>
|
||||||
|
<string name="back_to_previous_keyboard">Natrag na prethodnu tipkovnicu</string>
|
||||||
|
<string name="custom_fields">Prilagođena polja</string>
|
||||||
|
<string name="device_credential_unlock_enable_summary">Omogućuje otvaranje baze podataka pomoću podataka za prijavu</string>
|
||||||
|
<string name="device_credential_unlock_enable_title">Otključavanje s podacima za prijavu uređaja</string>
|
||||||
|
<string name="device_credential">Podaci za prijavu uređaja</string>
|
||||||
|
<string name="advanced_unlock_tap_delete">Dodirni za brisanje ključeva naprednog otključavanja</string>
|
||||||
|
<string name="education_advanced_unlock_title">Napredno otključavanje baze podataka</string>
|
||||||
|
<string name="advanced_unlock_timeout">Vremensko ograničenje neprednog otključavanja</string>
|
||||||
|
<string name="temp_advanced_unlock_timeout_summary">Trajanje korištenja naprednog otključavanja prije brisanja sadržaja</string>
|
||||||
|
<string name="temp_advanced_unlock_timeout_title">Istek naprednog otključavanja</string>
|
||||||
|
<string name="temp_advanced_unlock_enable_summary">Nemoj spremati šifrirani sadržaj za napredno otključavanje</string>
|
||||||
|
<string name="content">Sadržaj</string>
|
||||||
|
<string name="temp_advanced_unlock_enable_title">Privremeno napredno otključavanje</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
<string name="clipboard_error">Egyes eszközök nem engedik, hogy az alkalmazások használják a vágólapot.</string>
|
<string name="clipboard_error">Egyes eszközök nem engedik, hogy az alkalmazások használják a vágólapot.</string>
|
||||||
<string name="clipboard_error_clear">A vágólap törlése sikertelen</string>
|
<string name="clipboard_error_clear">A vágólap törlése sikertelen</string>
|
||||||
<string name="clipboard_timeout">Vágólap időkorlátja</string>
|
<string name="clipboard_timeout">Vágólap időkorlátja</string>
|
||||||
<string name="clipboard_timeout_summary">A vágólapon tárolás időtartama</string>
|
<string name="clipboard_timeout_summary">A vágólapon tárolás időtartama (ha támogatja az eszköz)</string>
|
||||||
<string name="select_to_copy">%1$s másolása a vágólapra</string>
|
<string name="select_to_copy">%1$s másolása a vágólapra</string>
|
||||||
<string name="retrieving_db_key">Adatbázis létrehozása…</string>
|
<string name="retrieving_db_key">Adatbázis létrehozása…</string>
|
||||||
<string name="database">Adatbázis</string>
|
<string name="database">Adatbázis</string>
|
||||||
@@ -137,11 +137,7 @@
|
|||||||
<string name="warning">Figyelmeztetés</string>
|
<string name="warning">Figyelmeztetés</string>
|
||||||
<string name="warning_password_encoding">Kerülje a Latin-1 karakterkészlettől eltérő jelszókaraktereket az adatbázis-fájlban (a nem felismert karakterek mert ugyanarra a betűre lesznek alakítva).</string>
|
<string name="warning_password_encoding">Kerülje a Latin-1 karakterkészlettől eltérő jelszókaraktereket az adatbázis-fájlban (a nem felismert karakterek mert ugyanarra a betűre lesznek alakítva).</string>
|
||||||
<string name="version_label">Verzió: %1$s</string>
|
<string name="version_label">Verzió: %1$s</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">Ujjlenyomat-leolvasás</string>
|
|
||||||
<string name="encrypted_value_stored">Titkosított jelszó tárolva</string>
|
<string name="encrypted_value_stored">Titkosított jelszó tárolva</string>
|
||||||
<string name="biometric_invalid_key">Az biometrikus kulcs nem olvasható. Törölje, és ismételje meg a biometrikus felismerési folyamatot.</string>
|
|
||||||
<string name="biometric_scanning_error">Ujjlenyomat probléma: %1$s</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">Használjon ujjlenyomatot a jelszó tárolásához</string>
|
|
||||||
<string name="no_credentials_stored">Az adatbázisnak még nincs jelszava.</string>
|
<string name="no_credentials_stored">Az adatbázisnak még nincs jelszava.</string>
|
||||||
<string name="education_unlock_summary">Adja meg a jelszót és/vagy a kulcsfájlt, hogy kinyithassa az adatbázist.
|
<string name="education_unlock_summary">Adja meg a jelszót és/vagy a kulcsfájlt, hogy kinyithassa az adatbázist.
|
||||||
\n
|
\n
|
||||||
@@ -180,7 +176,6 @@
|
|||||||
<string name="menu_move">Áthelyezés</string>
|
<string name="menu_move">Áthelyezés</string>
|
||||||
<string name="menu_paste">Beillesztés</string>
|
<string name="menu_paste">Beillesztés</string>
|
||||||
<string name="menu_cancel">Mégse</string>
|
<string name="menu_cancel">Mégse</string>
|
||||||
<string name="menu_biometric_remove_key">Mentett ujjlenyomat törlése</string>
|
|
||||||
<string name="menu_file_selection_read_only">Írásvédett</string>
|
<string name="menu_file_selection_read_only">Írásvédett</string>
|
||||||
<string name="menu_open_file_read_and_write">Módosítható</string>
|
<string name="menu_open_file_read_and_write">Módosítható</string>
|
||||||
<string name="create_keepass_file">Új adatbázis létrehozása</string>
|
<string name="create_keepass_file">Új adatbázis létrehozása</string>
|
||||||
@@ -202,7 +197,6 @@
|
|||||||
<string name="warning_empty_password">Biztos, hogy jelszavas feloldási védelem nélkül folytatja\?</string>
|
<string name="warning_empty_password">Biztos, hogy jelszavas feloldási védelem nélkül folytatja\?</string>
|
||||||
<string name="warning_no_encryption_key">Biztos, hogy titkosítási kulcs nélkül folytatja\?</string>
|
<string name="warning_no_encryption_key">Biztos, hogy titkosítási kulcs nélkül folytatja\?</string>
|
||||||
<string name="build_label">Összeállítás: %1$s</string>
|
<string name="build_label">Összeállítás: %1$s</string>
|
||||||
<string name="biometric_not_recognized">Az ujjlenyomat nem ismerhető fel</string>
|
|
||||||
<string name="database_history">Előzmények</string>
|
<string name="database_history">Előzmények</string>
|
||||||
<string name="menu_appearance_settings">Megjelenés</string>
|
<string name="menu_appearance_settings">Megjelenés</string>
|
||||||
<string name="general">Általános</string>
|
<string name="general">Általános</string>
|
||||||
@@ -217,7 +211,7 @@
|
|||||||
<string name="list_password_generator_options_summary">Beállítja a jelszó-előállító számára megengedett karaktereket</string>
|
<string name="list_password_generator_options_summary">Beállítja a jelszó-előállító számára megengedett karaktereket</string>
|
||||||
<string name="clipboard">Vágólap</string>
|
<string name="clipboard">Vágólap</string>
|
||||||
<string name="clipboard_notifications_title">Vágólap-értesítések</string>
|
<string name="clipboard_notifications_title">Vágólap-értesítések</string>
|
||||||
<string name="clipboard_notifications_summary">A vágólap-értesítések engedélyezése a bejegyzésmezők másolásakor</string>
|
<string name="clipboard_notifications_summary">Vágólap-értesítések megjelenítése a bejegyzésmezők másolásakor</string>
|
||||||
<string name="clipboard_warning">Ha a vágólap automatikus törlése meghiúsul, akkor törölje kézzel az előzményeket.</string>
|
<string name="clipboard_warning">Ha a vágólap automatikus törlése meghiúsul, akkor törölje kézzel az előzményeket.</string>
|
||||||
<string name="lock">Zárolás</string>
|
<string name="lock">Zárolás</string>
|
||||||
<string name="lock_database_screen_off_title">Képernyőzár</string>
|
<string name="lock_database_screen_off_title">Képernyőzár</string>
|
||||||
@@ -227,9 +221,8 @@
|
|||||||
<string name="biometric_unlock_enable_summary">Lehetővé teszi, hogy leolvassa az ujjlenyomatát az adatbázis megnyitásához</string>
|
<string name="biometric_unlock_enable_summary">Lehetővé teszi, hogy leolvassa az ujjlenyomatát az adatbázis megnyitásához</string>
|
||||||
<string name="biometric_delete_all_key_title">Titkosítási kulcsok törlése</string>
|
<string name="biometric_delete_all_key_title">Titkosítási kulcsok törlése</string>
|
||||||
<string name="biometric_delete_all_key_summary">Az összes ujjlenyomat-felismeréssel kapcsolatos titkosítási kulcs törlése</string>
|
<string name="biometric_delete_all_key_summary">Az összes ujjlenyomat-felismeréssel kapcsolatos titkosítási kulcs törlése</string>
|
||||||
<string name="biometric_delete_all_key_warning">Biztos, hogy törli az összes ujjlenyomat-felismeréssel kapcsolatos titkosítási kulcsot\?</string>
|
|
||||||
<string name="unavailable_feature_text">A funkciót nem sikerült elindítani.</string>
|
<string name="unavailable_feature_text">A funkciót nem sikerült elindítani.</string>
|
||||||
<string name="unavailable_feature_version">Az Android verziója (%1$s) nem éri el a minimálisan szükséges verziót (%2$s).</string>
|
<string name="unavailable_feature_version">Az eszköz Android %1$s rendszert futtat, de %2$s vagy újabb szükséges.</string>
|
||||||
<string name="unavailable_feature_hardware">Nem található a megfelelő hardver.</string>
|
<string name="unavailable_feature_hardware">Nem található a megfelelő hardver.</string>
|
||||||
<string name="file_name">Fájlnév</string>
|
<string name="file_name">Fájlnév</string>
|
||||||
<string name="path">Útvonal</string>
|
<string name="path">Útvonal</string>
|
||||||
@@ -287,8 +280,6 @@
|
|||||||
\nA csoportok (~mappák) rendszerezik a bejegyzéseket az adatbázisban.</string>
|
\nA csoportok (~mappák) rendszerezik a bejegyzéseket az adatbázisban.</string>
|
||||||
<string name="education_search_title">Keresés a bejegyzések között</string>
|
<string name="education_search_title">Keresés a bejegyzések között</string>
|
||||||
<string name="education_search_summary">Adja meg a címet, felhasználónevet vagy más mezők tartalmát, hogy lekérje a jelszavát.</string>
|
<string name="education_search_summary">Adja meg a címet, felhasználónevet vagy más mezők tartalmát, hogy lekérje a jelszavát.</string>
|
||||||
<string name="education_biometric_title">Adatbázis feloldása ujjlenyomattal</string>
|
|
||||||
<string name="education_biometric_summary">Kösse össze a jelszavát a mentett ujjlenyomatával, hogy gyorsan fel tudja oldani az adatbázist.</string>
|
|
||||||
<string name="education_entry_edit_title">Bejegyzés szerkesztése</string>
|
<string name="education_entry_edit_title">Bejegyzés szerkesztése</string>
|
||||||
<string name="education_generate_password_title">Erős jelszó létrehozása</string>
|
<string name="education_generate_password_title">Erős jelszó létrehozása</string>
|
||||||
<string name="education_generate_password_summary">Állítson elő egy erős jelszót, és rendelje hozzá a bejegyzéshez, adja meg egyszerűen az űrlap feltételeinek megfelelően, és ne felejtse el biztonságosan tárolni.</string>
|
<string name="education_generate_password_summary">Állítson elő egy erős jelszót, és rendelje hozzá a bejegyzéshez, adja meg egyszerűen az űrlap feltételeinek megfelelően, és ne felejtse el biztonságosan tárolni.</string>
|
||||||
@@ -326,7 +317,6 @@
|
|||||||
<string name="contribute">Támogatás</string>
|
<string name="contribute">Támogatás</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string name="style_choose_title">Alkalmazástéma</string>
|
<string name="style_choose_title">Alkalmazástéma</string>
|
||||||
<string name="style_choose_summary">Az alkalmazásban használt téma</string>
|
<string name="style_choose_summary">Az alkalmazásban használt téma</string>
|
||||||
<string name="icon_pack_choose_title">Ikoncsomag</string>
|
<string name="icon_pack_choose_title">Ikoncsomag</string>
|
||||||
@@ -346,26 +336,22 @@
|
|||||||
<string name="education_setup_OTP_title">OPT beállítása</string>
|
<string name="education_setup_OTP_title">OPT beállítása</string>
|
||||||
<string name="autofill_auto_search_summary">Keresési találatok automatikus javaslata a webes domain vagy az alkalmazásazonosító alapján</string>
|
<string name="autofill_auto_search_summary">Keresési találatok automatikus javaslata a webes domain vagy az alkalmazásazonosító alapján</string>
|
||||||
<string name="autofill_auto_search_title">Automatikus keresés</string>
|
<string name="autofill_auto_search_title">Automatikus keresés</string>
|
||||||
<string name="clear_clipboard_notification_summary">Az adatbázis zárolása az értesítés bezárásakor</string>
|
<string name="clear_clipboard_notification_summary">Az adatbázis zárolása, ha a vágólap ideje lejár, vagy ha a használata után bezárja az értesítést</string>
|
||||||
<string name="clear_clipboard_notification_title">Zárolás bezáráskor</string>
|
<string name="clear_clipboard_notification_title">Zárolás bezáráskor</string>
|
||||||
<string name="lock_database_show_button_summary">Megjeleníti a zárolás gombot a felhasználói felületen</string>
|
<string name="lock_database_show_button_summary">Megjeleníti a zárolás gombot a felhasználói felületen</string>
|
||||||
<string name="lock_database_show_button_title">Zárolás gomb megjelenítése</string>
|
<string name="lock_database_show_button_title">Zárolás gomb megjelenítése</string>
|
||||||
<string name="lock_database_back_root_summary">Az adatbázis zárolása, ha a felhasználó a vissza gombra kattint az indítóképernyőn</string>
|
<string name="lock_database_back_root_summary">Az adatbázis zárolása, ha a felhasználó a vissza gombra kattint az indítóképernyőn</string>
|
||||||
<string name="autofill_preference_title">Automatikus kitöltés beállításai</string>
|
<string name="autofill_preference_title">Automatikus kitöltés beállításai</string>
|
||||||
<string name="biometric_prompt_extract_credential_message">Adatbázis hitelesítő adatainak kinyerése ujjlenyomattal</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">Adatbázis megnyitása ujjlenyomat-felismeréssel</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">Figyelmeztetés: Továbbra is meg kell jegyeznie a mesterjelszót, ha ujjlenyomat-felismerést használ.</string>
|
|
||||||
<string name="biometric_prompt_store_credential_title">Ujjlenyomat mentése</string>
|
|
||||||
<string name="warning_database_link_revoked">A fájlhoz történő hozzáférést visszavonta a fájlkezelő</string>
|
<string name="warning_database_link_revoked">A fájlhoz történő hozzáférést visszavonta a fájlkezelő</string>
|
||||||
<string name="warning_database_read_only">Fájlírási-hozzáférés megadása az adatbázis-változások mentéséhez</string>
|
<string name="warning_database_read_only">Fájlírási-hozzáférés megadása az adatbázis-változások mentéséhez</string>
|
||||||
<string name="hide_broken_locations_summary">A törött adatbázis-hivatkozások elrejtése a nemrég használt adatbázisok listájában</string>
|
<string name="hide_broken_locations_summary">A törött adatbázis-hivatkozások elrejtése a nemrég használt adatbázisok listájában</string>
|
||||||
<string name="hide_broken_locations_title">Törött adatbázis-hivatkozások elrejtése</string>
|
<string name="hide_broken_locations_title">Törött adatbázis-hivatkozások elrejtése</string>
|
||||||
<string name="show_recent_files_summary">A nemrég használt adatbázisok helyének megjelenítése</string>
|
<string name="show_recent_files_summary">A nemrég használt adatbázisok helyének megjelenítése</string>
|
||||||
<string name="show_recent_files_title">Nemrég használt fájlok megjelenítése</string>
|
<string name="show_recent_files_title">Nemrég használt fájlok megjelenítése</string>
|
||||||
<string name="remember_keyfile_locations_summary">Az adatbázis-kulcsfájlok helyének megjegyzése</string>
|
<string name="remember_keyfile_locations_summary">Megjegyzi az adatbázis-kulcsfájlok helyét</string>
|
||||||
<string name="remember_keyfile_locations_title">Kulcsfájlok helyének mentése</string>
|
<string name="remember_keyfile_locations_title">Kulcsfájlok helyének megjegyzése</string>
|
||||||
<string name="remember_database_locations_summary">Az adatbázisok helyének megjegyzése</string>
|
<string name="remember_database_locations_summary">Megjegyzi az adatbázisok helyét</string>
|
||||||
<string name="remember_database_locations_title">Adatbázisok helyének mentése</string>
|
<string name="remember_database_locations_title">Adatbázisok helyének megjegyzése</string>
|
||||||
<string name="auto_focus_search_summary">Keresés kérése az adatbázis megnyitásakor</string>
|
<string name="auto_focus_search_summary">Keresés kérése az adatbázis megnyitásakor</string>
|
||||||
<string name="error_create_database">Az adatbázisfájl létrehozása sikertelen.</string>
|
<string name="error_create_database">Az adatbázisfájl létrehozása sikertelen.</string>
|
||||||
<string name="error_label_exists">Ez a címke már létezik.</string>
|
<string name="error_label_exists">Ez a címke már létezik.</string>
|
||||||
@@ -394,7 +380,6 @@
|
|||||||
<string name="enable_auto_save_database_summary">Az adatbázis mentése minden fontos művelet után („Módosítható” módban)</string>
|
<string name="enable_auto_save_database_summary">Az adatbázis mentése minden fontos művelet után („Módosítható” módban)</string>
|
||||||
<string name="enable_auto_save_database_title">Adatbázis automatikus mentése</string>
|
<string name="enable_auto_save_database_title">Adatbázis automatikus mentése</string>
|
||||||
<string name="recycle_bin_group_title">Kuka csoportja</string>
|
<string name="recycle_bin_group_title">Kuka csoportja</string>
|
||||||
<string name="credential_before_click_biometric_button">Írja be a jelszót, majd kattintson az „Ujjlenyomat” gombra.</string>
|
|
||||||
<string name="keystore_not_accessible">Az kulcstár nincs helyesen előkészítve.</string>
|
<string name="keystore_not_accessible">Az kulcstár nincs helyesen előkészítve.</string>
|
||||||
<string name="warning_permanently_delete_nodes">Biztos, hogy végleg törli a kiválasztott csomópontokat\?</string>
|
<string name="warning_permanently_delete_nodes">Biztos, hogy végleg törli a kiválasztott csomópontokat\?</string>
|
||||||
<string name="command_execution">Parancs végrehajtása…</string>
|
<string name="command_execution">Parancs végrehajtása…</string>
|
||||||
@@ -417,7 +402,7 @@
|
|||||||
<string name="max_history_size_title">Maximális méret</string>
|
<string name="max_history_size_title">Maximális méret</string>
|
||||||
<string name="max_history_items_summary">Korlátozza az előzmények számát bejegyzésenként</string>
|
<string name="max_history_items_summary">Korlátozza az előzmények számát bejegyzésenként</string>
|
||||||
<string name="max_history_items_title">Maximális szám</string>
|
<string name="max_history_items_title">Maximális szám</string>
|
||||||
<string name="database_data_compression_summary">Az adattömörítés csökkenti az adatbázis méretét.</string>
|
<string name="database_data_compression_summary">Az adattömörítés csökkenti az adatbázis méretét</string>
|
||||||
<string name="database_data_compression_title">Adattömörítés</string>
|
<string name="database_data_compression_title">Adattömörítés</string>
|
||||||
<string name="advanced_unlock_explanation_summary">Speciális feloldás használat az adatbázis könnyebb megnyitásához</string>
|
<string name="advanced_unlock_explanation_summary">Speciális feloldás használat az adatbázis könnyebb megnyitásához</string>
|
||||||
<string name="clipboard_explanation_summary">A bejegyzésmezők másolása az eszköz vágólapjának használatával</string>
|
<string name="clipboard_explanation_summary">A bejegyzésmezők másolása az eszköz vágólapjának használatával</string>
|
||||||
@@ -470,4 +455,36 @@
|
|||||||
<string name="lock_database_back_root_title">Nyomja meg a „Vissza” gombot a zároláshoz</string>
|
<string name="lock_database_back_root_title">Nyomja meg a „Vissza” gombot a zároláshoz</string>
|
||||||
<string name="do_not_kill_app">Ne lője ki az alkalmazást…</string>
|
<string name="do_not_kill_app">Ne lője ki az alkalmazást…</string>
|
||||||
<string name="selection_mode">Kiválasztási mód</string>
|
<string name="selection_mode">Kiválasztási mód</string>
|
||||||
|
<string name="keyboard_previous_database_credentials_title">Adatbázishitelesítő-adatok képernyője</string>
|
||||||
|
<string name="keyboard_change">Billentyűzet váltása</string>
|
||||||
|
<string name="keyboard_save_search_info_title">Megosztott információk mentése</string>
|
||||||
|
<string name="keyboard_search_share_summary">Megosztott információk automatikus keresése a billentyűzet kitöltéséhez</string>
|
||||||
|
<string name="keyboard_search_share_title">Megosztott információk keresése</string>
|
||||||
|
<string name="notification">Értesítés</string>
|
||||||
|
<string name="database_data_remove_unlinked_attachments_summary">Eltávolítja azokat a mellékleteket, melyek az adatbázisban szerepelnek, de nem tartoznak bejegyzéshez</string>
|
||||||
|
<string name="database_data_remove_unlinked_attachments_title">Nem összekapcsolt adatok eltávolítása</string>
|
||||||
|
<string name="data">Adatok</string>
|
||||||
|
<string name="crypto_object_not_initialized">A titkosítási objektum nem kérhető le.</string>
|
||||||
|
<string name="biometric_security_update_required">Biometrikus biztonsági frissítés szükséges.</string>
|
||||||
|
<string name="configure_biometric">Nincs biometrikus vagy eszközazonosító beállítva.</string>
|
||||||
|
<string name="warning_empty_keyfile_explanation">A kulcsfájl tartalmának sosem szabad megváltoznia, és a legjobb esetben véletlenszerűen előállított adatokat kellene tartalmaznia.</string>
|
||||||
|
<string name="warning_empty_keyfile">Nem ajánlott, hogy üres kulcsfájl adjon hozzá.</string>
|
||||||
|
<string name="warning_sure_remove_data">Mindenképp törli ezeket az adatokat\?</string>
|
||||||
|
<string name="warning_remove_unlinked_attachment">A nem összekapcsolt adatok törlése csökkentheti az adatbázis méretét, de törölheti a KeePass-bővítmények által használt adatokat.</string>
|
||||||
|
<string name="warning_sure_add_file">Mindenképp hozzáadja a fájlt\?</string>
|
||||||
|
<string name="warning_replace_file">A fájl feltöltésével lecseréli a meglévőt.</string>
|
||||||
|
<string name="warning_file_too_big">A KeePass-adatbázis csak kis segédfájlok tárolására lett kitalálva (például PGP-kulcsfájlokra).
|
||||||
|
\n
|
||||||
|
\nA feltöltéstől az adatbázis nagyon nagyra nőhet, és csökkenhet a teljesítmény.</string>
|
||||||
|
<string name="warning_empty_recycle_bin">Végleg törli az összes csomópontot a kukából\?</string>
|
||||||
|
<string name="filter">Szűrő</string>
|
||||||
|
<string name="registration_mode">Regisztrációs mód</string>
|
||||||
|
<string name="save_mode">Mentési mód</string>
|
||||||
|
<string name="search_mode">Keresési mód</string>
|
||||||
|
<string name="subdomain_search_summary">Webdomainek keresése aldomain megszorításokkal</string>
|
||||||
|
<string name="subdomain_search_title">Aldomain keresés</string>
|
||||||
|
<string name="error_registration_read_only">Az új elem mentése nem engedélyezett írásvédett adatbázisban</string>
|
||||||
|
<string name="error_string_type">A szöveg nem egyezik a kért elemmel.</string>
|
||||||
|
<string name="content_description_credentials_information">Hitelesítő adatok információi</string>
|
||||||
|
<string name="content_description_add_item">Elem hozzáadása</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -9,7 +9,6 @@
|
|||||||
<string name="menu_open_file_read_and_write">Bisa Diubah</string>
|
<string name="menu_open_file_read_and_write">Bisa Diubah</string>
|
||||||
<string name="menu_file_selection_read_only">Lindungi Dari Perubahan</string>
|
<string name="menu_file_selection_read_only">Lindungi Dari Perubahan</string>
|
||||||
<string name="menu_url">Membuka Tautan</string>
|
<string name="menu_url">Membuka Tautan</string>
|
||||||
<string name="menu_biometric_remove_key">Hapus Kunci Sidik Jari Yang Tersimpan</string>
|
|
||||||
<string name="menu_showpass">Tampilkan Kata Sandi</string>
|
<string name="menu_showpass">Tampilkan Kata Sandi</string>
|
||||||
<string name="menu_search">Cari</string>
|
<string name="menu_search">Cari</string>
|
||||||
<string name="menu_open">Buka</string>
|
<string name="menu_open">Buka</string>
|
||||||
|
|||||||
@@ -27,11 +27,11 @@
|
|||||||
<string name="add_group">Aggiungi gruppo</string>
|
<string name="add_group">Aggiungi gruppo</string>
|
||||||
<string name="encryption_algorithm">Algoritmo di cifratura</string>
|
<string name="encryption_algorithm">Algoritmo di cifratura</string>
|
||||||
<string name="app_timeout">Scadenza app</string>
|
<string name="app_timeout">Scadenza app</string>
|
||||||
<string name="app_timeout_summary">Tempo di inattività prima del blocco dell\'app</string>
|
<string name="app_timeout_summary">Tempo di inattività prima del blocco della base di dati</string>
|
||||||
<string name="application">App</string>
|
<string name="application">App</string>
|
||||||
<string name="menu_app_settings">Impostazioni app</string>
|
<string name="menu_app_settings">Impostazioni app</string>
|
||||||
<string name="brackets">Parentesi</string>
|
<string name="brackets">Parentesi</string>
|
||||||
<string name="file_manager_install_description">È necessario un file manager che accetti gli Intent ACTION_CREATE_DOCUMENT e ACTION_OPEN_DOCUMENT per creare, aprire e salvare i file di database.</string>
|
<string name="file_manager_install_description">Un file manager che accetta l\'azione Intent. ACTION_CREATE_DOCUMENT e ACTION_OPEN_DOCUMENT sono necessari per creare, aprire e salvare i file del database.</string>
|
||||||
<string name="clipboard_cleared">Appunti eliminati</string>
|
<string name="clipboard_cleared">Appunti eliminati</string>
|
||||||
<string name="clipboard_error_title">Errore negli appunti</string>
|
<string name="clipboard_error_title">Errore negli appunti</string>
|
||||||
<string name="clipboard_error">Alcuni dispositivi non permettono alle app di usare gli appunti.</string>
|
<string name="clipboard_error">Alcuni dispositivi non permettono alle app di usare gli appunti.</string>
|
||||||
@@ -39,15 +39,15 @@
|
|||||||
<string name="clipboard_timeout">Scadenza appunti</string>
|
<string name="clipboard_timeout">Scadenza appunti</string>
|
||||||
<string name="clipboard_timeout_summary">Tempo prima di eliminare gli appunti (se supportato dal dispositivo)</string>
|
<string name="clipboard_timeout_summary">Tempo prima di eliminare gli appunti (se supportato dal dispositivo)</string>
|
||||||
<string name="select_to_copy">Copia %1$s negli appunti</string>
|
<string name="select_to_copy">Copia %1$s negli appunti</string>
|
||||||
<string name="retrieving_db_key">Creazione file chiave database…</string>
|
<string name="retrieving_db_key">Creazione file chiave base di dati…</string>
|
||||||
<string name="database">Banca dati</string>
|
<string name="database">Banca dati</string>
|
||||||
<string name="decrypting_db">Decodifica contenuto database…</string>
|
<string name="decrypting_db">Decodifica contenuto base di dati…</string>
|
||||||
<string name="default_checkbox">Usa come database predefinito</string>
|
<string name="default_checkbox">Usa come base di dati predefinita</string>
|
||||||
<string name="digits">Numeri</string>
|
<string name="digits">Numeri</string>
|
||||||
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft è un programma <strong>open-source</strong> e <strong>senza pubblicità</strong>.
|
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft è un programma <strong>open-source</strong> e <strong>senza pubblicità</strong>.
|
||||||
\nViene distribuito sotto le condizioni della licenza <strong>GPL versione 3</strong> o successiva, senza alcuna garanzia.</string>
|
\nViene distribuito sotto le condizioni della licenza <strong>GPL versione 3</strong> o successiva, senza alcuna garanzia.</string>
|
||||||
<string name="entry_notes">Note</string>
|
<string name="entry_notes">Note</string>
|
||||||
<string name="select_database_file">Apri un database esistente</string>
|
<string name="select_database_file">Apri una base di dati esistente</string>
|
||||||
<string name="entry_accessed">Ultimo accesso</string>
|
<string name="entry_accessed">Ultimo accesso</string>
|
||||||
<string name="entry_cancel">Annulla</string>
|
<string name="entry_cancel">Annulla</string>
|
||||||
<string name="entry_confpassword">Conferma password</string>
|
<string name="entry_confpassword">Conferma password</string>
|
||||||
@@ -64,15 +64,15 @@
|
|||||||
<string name="error_arc4">La codifica a flusso Arcfour non è supportata.</string>
|
<string name="error_arc4">La codifica a flusso Arcfour non è supportata.</string>
|
||||||
<string name="error_can_not_handle_uri">KeePassDX non può gestire questo URI.</string>
|
<string name="error_can_not_handle_uri">KeePassDX non può gestire questo URI.</string>
|
||||||
<string name="error_file_not_create">Impossibile creare il file</string>
|
<string name="error_file_not_create">Impossibile creare il file</string>
|
||||||
<string name="error_invalid_db">Lettura del database fallita.</string>
|
<string name="error_invalid_db">Impossibile leggere la base di dati.</string>
|
||||||
<string name="error_invalid_path">Assicurati che il percorso sia corretto.</string>
|
<string name="error_invalid_path">Assicurati che il percorso sia corretto.</string>
|
||||||
<string name="error_no_name">Inserisci un nome.</string>
|
<string name="error_no_name">Inserisci un nome.</string>
|
||||||
<string name="error_out_of_memory">Memoria insufficiente per caricare l\'intero database.</string>
|
<string name="error_out_of_memory">Memoria insufficiente per caricare l\'intera base di dati.</string>
|
||||||
<string name="error_pass_gen_type">Deve essere selezionato almeno un tipo di generazione password.</string>
|
<string name="error_pass_gen_type">Deve essere selezionato almeno un tipo di generazione password.</string>
|
||||||
<string name="error_pass_match">Le password non corrispondono.</string>
|
<string name="error_pass_match">Le password non corrispondono.</string>
|
||||||
<string name="error_rounds_too_large">\"Livello\" troppo alto. Impostato a 2147483648.</string>
|
<string name="error_rounds_too_large">«Livello» troppo alto. Impostato a 2147483648.</string>
|
||||||
<string name="error_string_key">Ogni stringa deve avere un nome.</string>
|
<string name="error_string_key">Ogni stringa deve avere un nome.</string>
|
||||||
<string name="error_wrong_length">Inserisci un numero naturale positivo nel campo \"lunghezza\".</string>
|
<string name="error_wrong_length">Inserisci un numero naturale positivo nel campo «lunghezza».</string>
|
||||||
<string name="field_name">Nome campo</string>
|
<string name="field_name">Nome campo</string>
|
||||||
<string name="field_value">Valore campo</string>
|
<string name="field_value">Valore campo</string>
|
||||||
<string name="file_not_found_content">File non trovato. Prova a riaprirlo dal tuo gestore di file.</string>
|
<string name="file_not_found_content">File non trovato. Prova a riaprirlo dal tuo gestore di file.</string>
|
||||||
@@ -87,24 +87,24 @@
|
|||||||
<string name="hint_pass">Password</string>
|
<string name="hint_pass">Password</string>
|
||||||
<string name="invalid_credentials">Non è possibile leggere le credenziali.</string>
|
<string name="invalid_credentials">Non è possibile leggere le credenziali.</string>
|
||||||
<string name="invalid_algorithm">Algoritmo errato.</string>
|
<string name="invalid_algorithm">Algoritmo errato.</string>
|
||||||
<string name="invalid_db_sig">Formato database non riconosciuto.</string>
|
<string name="invalid_db_sig">Formato della base di dati non riconosciuto.</string>
|
||||||
<string name="keyfile_is_empty">Il file chiave è vuoto.</string>
|
<string name="keyfile_is_empty">Il file chiave è vuoto.</string>
|
||||||
<string name="length">Lunghezza</string>
|
<string name="length">Lunghezza</string>
|
||||||
<string name="list_size_title">Dimensione elenco elementi</string>
|
<string name="list_size_title">Dimensione elenco elementi</string>
|
||||||
<string name="list_size_summary">Dimensione del testo nell\'elenco del gruppo</string>
|
<string name="list_size_summary">Dimensione del testo nell\'elenco del gruppo</string>
|
||||||
<string name="loading_database">Caricamento database…</string>
|
<string name="loading_database">Caricamento della base di dati…</string>
|
||||||
<string name="lowercase">Minuscole</string>
|
<string name="lowercase">Minuscole</string>
|
||||||
<string name="hide_password_title">Nascondi le password</string>
|
<string name="hide_password_title">Nascondi le password</string>
|
||||||
<string name="hide_password_summary">Maschera le password (***) in modo predefinito</string>
|
<string name="hide_password_summary">Maschera le password (***) in modo predefinito</string>
|
||||||
<string name="about">Informazioni</string>
|
<string name="about">Informazioni</string>
|
||||||
<string name="menu_change_key_settings">Modifica chiave principale</string>
|
<string name="menu_change_key_settings">Modifica chiave principale</string>
|
||||||
<string name="settings">Impostazioni</string>
|
<string name="settings">Impostazioni</string>
|
||||||
<string name="menu_database_settings">Impostazioni database</string>
|
<string name="menu_database_settings">Impostazioni base di dati</string>
|
||||||
<string name="menu_delete">Elimina</string>
|
<string name="menu_delete">Elimina</string>
|
||||||
<string name="menu_donate">Dona</string>
|
<string name="menu_donate">Dona</string>
|
||||||
<string name="menu_edit">Modifica</string>
|
<string name="menu_edit">Modifica</string>
|
||||||
<string name="menu_hide_password">Nascondi password</string>
|
<string name="menu_hide_password">Nascondi password</string>
|
||||||
<string name="menu_lock">Blocca database</string>
|
<string name="menu_lock">Blocca la base di dati</string>
|
||||||
<string name="menu_open">Apri</string>
|
<string name="menu_open">Apri</string>
|
||||||
<string name="menu_search">Cerca</string>
|
<string name="menu_search">Cerca</string>
|
||||||
<string name="menu_showpass">Mostra password</string>
|
<string name="menu_showpass">Mostra password</string>
|
||||||
@@ -114,38 +114,34 @@
|
|||||||
<string name="no_results">Nessun risultato di ricerca</string>
|
<string name="no_results">Nessun risultato di ricerca</string>
|
||||||
<string name="no_url_handler">Installa un browser web per aprire questo URL.</string>
|
<string name="no_url_handler">Installa un browser web per aprire questo URL.</string>
|
||||||
<string name="omit_backup_search_title">Non cercare nelle voci di backup</string>
|
<string name="omit_backup_search_title">Non cercare nelle voci di backup</string>
|
||||||
<string name="omit_backup_search_summary">Ometti i gruppi \"Backup\" e \"Cestino\" dai risultati di ricerca</string>
|
<string name="omit_backup_search_summary">Ometti i gruppi «Backup» e «Cestino» dai risultati di ricerca</string>
|
||||||
<string name="progress_create">Creazione nuovo database…</string>
|
<string name="progress_create">Creazione di una nuova base di dati…</string>
|
||||||
<string name="progress_title">In corso…</string>
|
<string name="progress_title">In corso…</string>
|
||||||
<string name="protection">Protezione</string>
|
<string name="protection">Protezione</string>
|
||||||
<string name="read_only">Sola lettura</string>
|
<string name="read_only">Sola lettura</string>
|
||||||
<string name="read_only_warning">KeePassDX richiede l\'autorizzazione di scrittura per poter modificare il tuo database.</string>
|
<string name="read_only_warning">KeePassDX richiede l\'autorizzazione di scrittura per poter modificare la tua base di dati.</string>
|
||||||
<string name="content_description_remove_from_list">Elimina</string>
|
<string name="content_description_remove_from_list">Elimina</string>
|
||||||
<string name="root">Root</string>
|
<string name="root">Root</string>
|
||||||
<string name="rounds">Livello cifratura</string>
|
<string name="rounds">Livello cifratura</string>
|
||||||
<string name="rounds_explanation">Livelli di cifratura aggiuntivi forniscono una maggiore protezione contro attacchi di tipo forza bruta, ma può rallentare il caricamento e il salvataggio.</string>
|
<string name="rounds_explanation">Livelli di cifratura aggiuntivi forniscono una maggiore protezione contro attacchi di tipo forza bruta, ma può rallentare il caricamento e il salvataggio.</string>
|
||||||
<string name="saving_database">Salvataggio database…</string>
|
<string name="saving_database">Salvataggio della base di dati…</string>
|
||||||
<string name="space">Spazio</string>
|
<string name="space">Spazio</string>
|
||||||
<string name="search_label">Cerca</string>
|
<string name="search_label">Cerca</string>
|
||||||
<string name="sort_db">Ordine naturale</string>
|
<string name="sort_db">Ordine naturale</string>
|
||||||
<string name="special">Speciali</string>
|
<string name="special">Speciali</string>
|
||||||
<string name="search">Titolo/descrizione voce</string>
|
<string name="search">Cerca</string>
|
||||||
<string name="search_results">Risultati ricerca</string>
|
<string name="search_results">Risultati della ricerca</string>
|
||||||
<string name="underline">Trattino basso</string>
|
<string name="underline">Trattino basso</string>
|
||||||
<string name="unsupported_db_version">Versione database non supportata.</string>
|
<string name="unsupported_db_version">Versione della base di dati non supportata.</string>
|
||||||
<string name="uppercase">Maiuscole</string>
|
<string name="uppercase">Maiuscole</string>
|
||||||
<string name="warning">Attenzione</string>
|
<string name="warning">Attenzione</string>
|
||||||
<string name="warning_password_encoding">Evita password con caratteri al di fuori del formato di codifica del testo nel file di database (i caratteri non riconosciuti vengono convertiti nella stessa lettera).</string>
|
<string name="warning_password_encoding">Evita password con caratteri al di fuori del formato di codifica del testo nel file di base di dati (i caratteri non riconosciuti vengono convertiti nella stessa lettera).</string>
|
||||||
<string name="version_label">Versione %1$s</string>
|
<string name="version_label">Versione %1$s</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">Usa la scansione impronte per sbloccare la banca dati</string>
|
|
||||||
<string name="encrypted_value_stored">Password criptata salvata</string>
|
<string name="encrypted_value_stored">Password criptata salvata</string>
|
||||||
<string name="biometric_invalid_key">Impossibile leggere la chiave biometrica. Eliminala e ripeti la procedura di riconoscimento.</string>
|
<string name="no_credentials_stored">Questa base di dati non contiene alcuna credenziale.</string>
|
||||||
<string name="biometric_scanning_error">Problema impronta: %1$s</string>
|
<string name="education_unlock_summary">Inserisci la password o il file chiave per sbloccare la base di dati.
|
||||||
<string name="open_biometric_prompt_store_credential">Usa l\'impronta per salvare questa password</string>
|
|
||||||
<string name="no_credentials_stored">Questo database non ha ancora alcuna password.</string>
|
|
||||||
<string name="education_unlock_summary">Inserisci la password e/o il file chiave per sbloccare il database.
|
|
||||||
\n
|
\n
|
||||||
\nEseguire il backup del file di database in un luogo sicuro dopo ogni modifica.</string>
|
\nEseguire il backup del file di base di dati in un luogo sicuro dopo ogni modifica.</string>
|
||||||
<string-array name="timeout_options">
|
<string-array name="timeout_options">
|
||||||
<item>5 secondi</item>
|
<item>5 secondi</item>
|
||||||
<item>10 secondi</item>
|
<item>10 secondi</item>
|
||||||
@@ -175,10 +171,9 @@
|
|||||||
<string name="menu_move">Sposta</string>
|
<string name="menu_move">Sposta</string>
|
||||||
<string name="menu_paste">Incolla</string>
|
<string name="menu_paste">Incolla</string>
|
||||||
<string name="menu_cancel">Annulla</string>
|
<string name="menu_cancel">Annulla</string>
|
||||||
<string name="menu_biometric_remove_key">Elimina l\'impronta digitale salvata</string>
|
|
||||||
<string name="menu_file_selection_read_only">Sola lettura</string>
|
<string name="menu_file_selection_read_only">Sola lettura</string>
|
||||||
<string name="menu_open_file_read_and_write">Modificabile</string>
|
<string name="menu_open_file_read_and_write">Modificabile</string>
|
||||||
<string name="encryption_explanation">Algoritmo di cifratura del database usato per tutti i dati.</string>
|
<string name="encryption_explanation">Algoritmo di cifratura della base di dati usato per tutti i dati.</string>
|
||||||
<string name="kdf_explanation">Per generare la chiave per l\'algoritmo di cifratura, la chiave principale viene trasformata usando una funzione di derivazione della chiave (con un sale casuale).</string>
|
<string name="kdf_explanation">Per generare la chiave per l\'algoritmo di cifratura, la chiave principale viene trasformata usando una funzione di derivazione della chiave (con un sale casuale).</string>
|
||||||
<string name="memory_usage">Utilizzo di memoria</string>
|
<string name="memory_usage">Utilizzo di memoria</string>
|
||||||
<string name="memory_usage_explanation">Quantità di memoria (in byte) utilizzabili dalla funzione di derivazione della chiave.</string>
|
<string name="memory_usage_explanation">Quantità di memoria (in byte) utilizzabili dalla funzione di derivazione della chiave.</string>
|
||||||
@@ -193,9 +188,8 @@
|
|||||||
<string name="sort_creation_time">Creazione</string>
|
<string name="sort_creation_time">Creazione</string>
|
||||||
<string name="sort_last_modify_time">Modifica</string>
|
<string name="sort_last_modify_time">Modifica</string>
|
||||||
<string name="sort_last_access_time">Accesso</string>
|
<string name="sort_last_access_time">Accesso</string>
|
||||||
<string name="warning_empty_password">Continuare senza aver impostato una password di sblocco \?</string>
|
<string name="warning_empty_password">Continuare senza aver impostato una password di sblocco\?</string>
|
||||||
<string name="warning_no_encryption_key">Continuare senza una chiave di cifratura\?</string>
|
<string name="warning_no_encryption_key">Continuare senza una chiave di cifratura\?</string>
|
||||||
<string name="biometric_not_recognized">Impronta non riconosciuta</string>
|
|
||||||
<string name="database_history">Cronologia</string>
|
<string name="database_history">Cronologia</string>
|
||||||
<string name="menu_appearance_settings">Aspetto</string>
|
<string name="menu_appearance_settings">Aspetto</string>
|
||||||
<string name="general">Generale</string>
|
<string name="general">Generale</string>
|
||||||
@@ -213,30 +207,29 @@
|
|||||||
<string name="clipboard_warning">Se l\'eliminazione automatica degli appunti fallisce, cancellali manualmente.</string>
|
<string name="clipboard_warning">Se l\'eliminazione automatica degli appunti fallisce, cancellali manualmente.</string>
|
||||||
<string name="lock">Blocca</string>
|
<string name="lock">Blocca</string>
|
||||||
<string name="lock_database_screen_off_title">Blocco schermo</string>
|
<string name="lock_database_screen_off_title">Blocco schermo</string>
|
||||||
<string name="lock_database_screen_off_summary">Blocca il database quando lo schermo è spento</string>
|
<string name="lock_database_screen_off_summary">Blocca la base di dati quando lo schermo è spento</string>
|
||||||
<string name="advanced_unlock">Impronta digitale</string>
|
<string name="advanced_unlock">Impronta digitale</string>
|
||||||
<string name="biometric_unlock_enable_title">Scansione di impronte</string>
|
<string name="biometric_unlock_enable_title">Scansione di impronte</string>
|
||||||
<string name="biometric_unlock_enable_summary">Consente la scansione biometrica per aprire il database</string>
|
<string name="biometric_unlock_enable_summary">Consente la scansione biometrica per aprire il database</string>
|
||||||
<string name="biometric_delete_all_key_title">Elimina chiavi di cifratura</string>
|
<string name="biometric_delete_all_key_title">Elimina chiavi di cifratura</string>
|
||||||
<string name="biometric_delete_all_key_summary">Elimina tutte le chiavi di cifratura relative al riconoscimento dell\'impronta</string>
|
<string name="biometric_delete_all_key_summary">Elimina tutte le chiavi di cifratura relative al riconoscimento dell\'impronta</string>
|
||||||
<string name="biometric_delete_all_key_warning">Eliminare tutte le chiavi di cifrature associate al riconoscimento biometrico \?</string>
|
|
||||||
<string name="unavailable_feature_text">Impossibile avviare questa funzione.</string>
|
<string name="unavailable_feature_text">Impossibile avviare questa funzione.</string>
|
||||||
<string name="unavailable_feature_version">La tua versione di Android %1$s non è la minima %2$s richiesta.</string>
|
<string name="unavailable_feature_version">Il dispositivo usa Android %1$s, ma richiede %2$s o versioni successive.</string>
|
||||||
<string name="unavailable_feature_hardware">L\'hardware relativo non è stato trovato.</string>
|
<string name="unavailable_feature_hardware">L\'hardware relativo non è stato trovato.</string>
|
||||||
<string name="file_name">Nome file</string>
|
<string name="file_name">Nome file</string>
|
||||||
<string name="path">Percorso</string>
|
<string name="path">Percorso</string>
|
||||||
<string name="assign_master_key">Assegna una chiave master</string>
|
<string name="assign_master_key">Assegna una chiave master</string>
|
||||||
<string name="create_keepass_file">Crea un nuovo database</string>
|
<string name="create_keepass_file">Crea una nuova base di dati</string>
|
||||||
<string name="recycle_bin_title">Uso del Cestino</string>
|
<string name="recycle_bin_title">Uso del Cestino</string>
|
||||||
<string name="recycle_bin_summary">Sposta i gruppi e le voci nel gruppo \"Cestino\" prima di eliminarlo</string>
|
<string name="recycle_bin_summary">Sposta i gruppi e le voci nel gruppo «Cestino» prima di eliminarlo</string>
|
||||||
<string name="monospace_font_fields_enable_title">Carattere campi</string>
|
<string name="monospace_font_fields_enable_title">Carattere campi</string>
|
||||||
<string name="monospace_font_fields_enable_summary">Cambia il carattere usato nei campi per una migliore visibilità</string>
|
<string name="monospace_font_fields_enable_summary">Cambia il carattere usato nei campi per una migliore visibilità</string>
|
||||||
<string name="allow_copy_password_title">Fiducia appunti</string>
|
<string name="allow_copy_password_title">Fiducia appunti</string>
|
||||||
<string name="allow_copy_password_summary">Permetti la copia della password e dei campi protetti negli appunti</string>
|
<string name="allow_copy_password_summary">Consenti la copia della password e dei campi protetti negli appunti</string>
|
||||||
<string name="allow_copy_password_warning">Attenzione: gli appunti sono condivisi da tutte le app. Se vengono copiati dati sensibili, altri software possono recuperarli.</string>
|
<string name="allow_copy_password_warning">Attenzione: gli appunti sono condivisi da tutte le app. Se vengono copiati dati sensibili, altri software possono recuperarli.</string>
|
||||||
<string name="database_name_title">Nome database</string>
|
<string name="database_name_title">Nome della base di dati</string>
|
||||||
<string name="database_description_title">Descrizione database</string>
|
<string name="database_description_title">Descrizione della base di dati</string>
|
||||||
<string name="database_version_title">Versione database</string>
|
<string name="database_version_title">Versione della base di dati</string>
|
||||||
<string name="text_appearance">Testo</string>
|
<string name="text_appearance">Testo</string>
|
||||||
<string name="application_appearance">App</string>
|
<string name="application_appearance">App</string>
|
||||||
<string name="other">Altro</string>
|
<string name="other">Altro</string>
|
||||||
@@ -244,58 +237,55 @@
|
|||||||
<string name="magic_keyboard_title">Magitastiera</string>
|
<string name="magic_keyboard_title">Magitastiera</string>
|
||||||
<string name="magic_keyboard_explanation_summary">Attiva una tastiera personale che popola le tue password e i campi di identità</string>
|
<string name="magic_keyboard_explanation_summary">Attiva una tastiera personale che popola le tue password e i campi di identità</string>
|
||||||
<string name="allow_no_password_title">Non consentire nessuna chiave principale</string>
|
<string name="allow_no_password_title">Non consentire nessuna chiave principale</string>
|
||||||
<string name="allow_no_password_summary">Abilita il pulsante «Apri» se le credenziali non sono selezionate</string>
|
<string name="allow_no_password_summary">Permetti di toccare il pulsante \"Apri\" se non sono selezionate credenziali</string>
|
||||||
<string name="enable_read_only_title">Protetto da scrittura</string>
|
<string name="enable_read_only_title">Protetto da scrittura</string>
|
||||||
<string name="enable_read_only_summary">Apri il database in sola lettura in modo predefinito</string>
|
<string name="enable_read_only_summary">Apri la base di dati in sola lettura in modo predefinito</string>
|
||||||
<string name="enable_education_screens_title">Suggerimenti educativi</string>
|
<string name="enable_education_screens_title">Suggerimenti educativi</string>
|
||||||
<string name="enable_education_screens_summary">Evidenzia gli elementi per imparare come funziona l\'app</string>
|
<string name="enable_education_screens_summary">Evidenzia gli elementi per imparare come funziona l\'app</string>
|
||||||
<string name="reset_education_screens_title">Ripristina i suggerimenti educativi</string>
|
<string name="reset_education_screens_title">Ripristina i suggerimenti educativi</string>
|
||||||
<string name="reset_education_screens_summary">Mostra di nuovo tutte le informazioni educative</string>
|
<string name="reset_education_screens_summary">Mostra di nuovo tutte le informazioni educative</string>
|
||||||
<string name="reset_education_screens_text">Suggerimenti educativi ripristinati</string>
|
<string name="reset_education_screens_text">Suggerimenti educativi ripristinati</string>
|
||||||
<string name="education_create_database_title">Crea il tuo file di database</string>
|
<string name="education_create_database_title">Crea il tuo file di base di dati</string>
|
||||||
<string name="education_create_database_summary">Crea il tuo primo file di gestione password.</string>
|
<string name="education_create_database_summary">Crea il tuo primo file di gestione password.</string>
|
||||||
<string name="education_select_database_title">Apri un database esistente</string>
|
<string name="education_select_database_title">Apri una base di dati esistente</string>
|
||||||
<string name="education_select_database_summary">Apri il tuo file database precedente dal tuo gestore di file per continuare ad usarlo.</string>
|
<string name="education_select_database_summary">Apri il tuo file di base di dati precedente dal tuo gestore di file per continuare ad usarlo.</string>
|
||||||
<string name="education_new_node_title">Aggiungi elementi al tuo database</string>
|
<string name="education_new_node_title">Aggiungi elementi alla tua base di dati</string>
|
||||||
<string name="education_new_node_summary">Gli elementi aiutano a gestire le tue identità digitali.
|
<string name="education_new_node_summary">Gli elementi aiutano a gestire le tue identità digitali.
|
||||||
\n
|
\n
|
||||||
\nI gruppi (~ cartelle) organizzano gli elementi nel database.</string>
|
\nI gruppi (come cartelle) organizzano gli elementi nella base di dati.</string>
|
||||||
<string name="education_search_title">Cerca tra gli elementi</string>
|
<string name="education_search_title">Cerca tra gli elementi</string>
|
||||||
<string name="education_search_summary">Inserisci il titolo, il nome utente o il contenuto di altri campi per recuperare le tue password.</string>
|
<string name="education_search_summary">Inserisci il titolo, il nome utente o il contenuto di altri campi per recuperare le tue password.</string>
|
||||||
<string name="education_biometric_title">Sblocco del database tramite impronta digitale</string>
|
|
||||||
<string name="education_biometric_summary">Collega la password alla tua impronta digitale per sbloccare velocemente il database.</string>
|
|
||||||
<string name="education_entry_edit_title">Modifica l\'elemento</string>
|
<string name="education_entry_edit_title">Modifica l\'elemento</string>
|
||||||
<string name="education_entry_edit_summary">Modifica l\'elemento con campi personalizzati. I dati possono fare riferimento ad altri campi.</string>
|
<string name="education_entry_edit_summary">Modifica l\'elemento con campi personalizzati. I dati possono fare riferimento ad altri campi.</string>
|
||||||
<string name="education_generate_password_title">Crea una password robusta</string>
|
<string name="education_generate_password_title">Crea una password robusta</string>
|
||||||
<string name="education_generate_password_summary">Genera una password robusta da associare all\'elemento, definiscila a seconda dei criteri del modulo e non dimenticare di tenerla al sicuro.</string>
|
<string name="education_generate_password_summary">Genera una password robusta da associare all\'elemento, definiscila a seconda dei criteri del modulo e non dimenticare di tenerla al sicuro.</string>
|
||||||
<string name="education_entry_new_field_title">Aggiungi campi personalizzati</string>
|
<string name="education_entry_new_field_title">Aggiungi campi personalizzati</string>
|
||||||
<string name="education_entry_new_field_summary">Registra un campo aggiuntivo, inserisci delle informazioni e proteggilo se necessario.</string>
|
<string name="education_entry_new_field_summary">Registra un campo aggiuntivo, aggiungi un valore e facoltativamente proteggilo.</string>
|
||||||
<string name="education_unlock_title">Sblocca il tuo database</string>
|
<string name="education_unlock_title">Sblocca la tua base di dati</string>
|
||||||
<string name="education_read_only_title">Proteggi da scrittura il tuo database</string>
|
<string name="education_read_only_title">Proteggi da scrittura la tua base di dati</string>
|
||||||
<string name="education_read_only_summary">Cambia la modalità di apertura per la sessione.
|
<string name="education_read_only_summary">Cambia la modalità di apertura per la sessione.
|
||||||
\n
|
\n
|
||||||
\n\"Sola lettura\" impedisce modifiche accidentali al database.
|
\n«Sola lettura» impedisce modifiche accidentali alla base di dati.
|
||||||
\n\"Modificabile\" permette di aggiungere, eliminare o modificare tutti gli elementi.</string>
|
\n«Modificabile» permette di aggiungere, eliminare o modificare tutti gli elementi.</string>
|
||||||
<string name="education_field_copy_title">Copia un campo</string>
|
<string name="education_field_copy_title">Copia un campo</string>
|
||||||
<string name="education_field_copy_summary">I campi copiati possono essere incollati ovunque.
|
<string name="education_field_copy_summary">I campi copiati possono essere incollati ovunque.
|
||||||
\n
|
\n
|
||||||
\nUsa il metodo di inserimento che preferisci.</string>
|
\nUsa il metodo di inserimento che preferisci.</string>
|
||||||
<string name="education_lock_title">Blocca il database</string>
|
<string name="education_lock_title">Blocca la base di dati</string>
|
||||||
<string name="education_lock_summary">Blocca velocemente il database, puoi impostare l\'app per bloccarlo dopo un certo periodo e quando lo schermo si spegne.</string>
|
<string name="education_lock_summary">Blocca velocemente la base di dati, puoi impostare l\'applicazione per bloccarla dopo un certo periodo e quando lo schermo si spegne.</string>
|
||||||
<string name="education_sort_title">Ordine elementi</string>
|
<string name="education_sort_title">Ordine elementi</string>
|
||||||
<string name="education_sort_summary">Scegli l\'ordine di elementi e gruppi.</string>
|
<string name="education_sort_summary">Scegli l\'ordine di elementi e gruppi.</string>
|
||||||
<string name="education_donation_title">Partecipa</string>
|
<string name="education_donation_title">Partecipa</string>
|
||||||
<string name="education_donation_summary">Aiuta a migliorare la stabilità, la sicurezza e ad aggiungere nuove funzioni.</string>
|
<string name="education_donation_summary">Aiuta a migliorare la stabilità, la sicurezza e ad aggiungere nuove funzioni.</string>
|
||||||
<string name="html_text_ad_free">Diversamente da molte app di gestione password, questa è <strong>senza pubblicità</strong>, <strong>software libero (copyleft)</strong> e non raccoglie dati personali nei suoi server, non importa quale versione usi.</string>
|
<string name="html_text_ad_free">Diversamente da molte app di gestione password, questa è <strong>senza pubblicità</strong>, <strong>software libero (copyleft)</strong> e non raccoglie dati personali nei suoi server, non importa quale versione usi.</string>
|
||||||
<string name="html_text_buy_pro">Acquistando la versione pro, avrai accesso a questo <strong>tema</strong> e soprattutto aiuterai nella <strong>realizzazione di progetti della comunità.</strong></string>
|
<string name="html_text_buy_pro">Acquistando la versione pro, avrai accesso a questa <strong>stile visivo</strong> e soprattutto aiuterai nella <strong>realizzazione dei progetti della comunità.</strong></string>
|
||||||
<string name="html_text_feature_generosity">Questo<strong>tema</strong> è disponibile grazie alla tua generosità.</string>
|
<string name="html_text_feature_generosity">Questa <strong>stile visivo</strong> è disponibile grazie alla tua generosità.</string>
|
||||||
<string name="html_text_donation">Per mantenere la nostra libertà ed essere sempre attivi, contiamo sul tuo <strong>contributo.</strong>
|
<string name="html_text_donation">Al fine di mantenere la nostra libertà ed essere sempre attivi, contiamo sul tuo <strong>contributo.</strong></string>
|
||||||
</string>
|
|
||||||
<string name="html_text_dev_feature">Questa funzione è <strong>in sviluppo</strong> e richiede il tuo <strong>contributo</strong> per essere disponibile a breve.</string>
|
<string name="html_text_dev_feature">Questa funzione è <strong>in sviluppo</strong> e richiede il tuo <strong>contributo</strong> per essere disponibile a breve.</string>
|
||||||
<string name="html_text_dev_feature_buy_pro">Acquistando la versione <strong>pro</strong>,</string>
|
<string name="html_text_dev_feature_buy_pro">Acquistando la versione <strong>pro</strong>,</string>
|
||||||
<string name="html_text_dev_feature_contibute">
|
<string name="html_text_dev_feature_contibute">
|
||||||
<strong>Contribuendo</strong>,</string>
|
<strong>Contribuendo</strong>,</string>
|
||||||
<string name="html_text_dev_feature_encourage">incoraggi gli sviluppatori a creare <strong>nuove funzioni</strong> e a <strong>correggere errori</strong> secondo le tue osservazioni.</string>
|
<string name="html_text_dev_feature_encourage">stai incoraggiando gli sviluppatori a creare <strong>nuove funzionalità</strong> e a <strong>correggere errori</strong> in base alle tue osservazioni.</string>
|
||||||
<string name="html_text_dev_feature_thanks">Grazie mille per il tuo contributo.</string>
|
<string name="html_text_dev_feature_thanks">Grazie mille per il tuo contributo.</string>
|
||||||
<string name="html_text_dev_feature_work_hard">Stiamo lavorando sodo per rilasciare questa funzione a breve.</string>
|
<string name="html_text_dev_feature_work_hard">Stiamo lavorando sodo per rilasciare questa funzione a breve.</string>
|
||||||
<string name="html_text_dev_feature_upgrade">Non dimenticare di tenere aggiornata l\'app installando nuove versioni.</string>
|
<string name="html_text_dev_feature_upgrade">Non dimenticare di tenere aggiornata l\'app installando nuove versioni.</string>
|
||||||
@@ -305,14 +295,13 @@
|
|||||||
<string name="encryption_twofish">Twofish</string>
|
<string name="encryption_twofish">Twofish</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string name="style_choose_title">Tema dell\'app</string>
|
<string name="style_choose_title">Tema dell\'app</string>
|
||||||
<string name="style_choose_summary">Tema usato nell\'app</string>
|
<string name="style_choose_summary">Tema usato nell\'app</string>
|
||||||
<string name="icon_pack_choose_title">Pacchetto icone</string>
|
<string name="icon_pack_choose_title">Pacchetto icone</string>
|
||||||
<string name="icon_pack_choose_summary">Pacchetto icone usato nell\'app</string>
|
<string name="icon_pack_choose_summary">Pacchetto icone usato nell\'app</string>
|
||||||
<string name="edit_entry">Modifica elemento</string>
|
<string name="edit_entry">Modifica elemento</string>
|
||||||
<string name="error_load_database">Caricamento del database fallito.</string>
|
<string name="error_load_database">Caricamento della base di dati fallito.</string>
|
||||||
<string name="error_load_database_KDF_memory">Caricamento della chiave fallito. Prova a diminuire l\' \"Utilizzo memoria\" del KDF.</string>
|
<string name="error_load_database_KDF_memory">Caricamento della chiave fallito. Prova a diminuire l\'«Utilizzo memoria» del KDF.</string>
|
||||||
<string name="list_entries_show_username_title">Mostra nomi utente</string>
|
<string name="list_entries_show_username_title">Mostra nomi utente</string>
|
||||||
<string name="list_entries_show_username_summary">Mostra i nomi utente negli elenchi</string>
|
<string name="list_entries_show_username_summary">Mostra i nomi utente negli elenchi</string>
|
||||||
<string name="clipboard">Appunti</string>
|
<string name="clipboard">Appunti</string>
|
||||||
@@ -329,7 +318,7 @@
|
|||||||
<string name="keyboard_notification_entry_content_title">%1$s disponibile nella Magitastiera</string>
|
<string name="keyboard_notification_entry_content_title">%1$s disponibile nella Magitastiera</string>
|
||||||
<string name="keyboard_notification_entry_content_text">%1$s</string>
|
<string name="keyboard_notification_entry_content_text">%1$s</string>
|
||||||
<string name="keyboard_notification_entry_clear_close_title">Pulisci alla chiusura</string>
|
<string name="keyboard_notification_entry_clear_close_title">Pulisci alla chiusura</string>
|
||||||
<string name="keyboard_notification_entry_clear_close_summary">Chiudere il database alla chiusura della notifica</string>
|
<string name="keyboard_notification_entry_clear_close_summary">Chiudere la base di dati alla chiusura della notifica</string>
|
||||||
<string name="keyboard_appearance_category">Aspetto</string>
|
<string name="keyboard_appearance_category">Aspetto</string>
|
||||||
<string name="keyboard_theme_title">Tema tastiera</string>
|
<string name="keyboard_theme_title">Tema tastiera</string>
|
||||||
<string name="keyboard_keys_category">Tasti</string>
|
<string name="keyboard_keys_category">Tasti</string>
|
||||||
@@ -338,14 +327,14 @@
|
|||||||
<string name="selection_mode">Modalità selezione</string>
|
<string name="selection_mode">Modalità selezione</string>
|
||||||
<string name="do_not_kill_app">Non terminare l\'app…</string>
|
<string name="do_not_kill_app">Non terminare l\'app…</string>
|
||||||
<string name="lock_database_back_root_title">Premere \'\'Indietro\'\' per bloccare</string>
|
<string name="lock_database_back_root_title">Premere \'\'Indietro\'\' per bloccare</string>
|
||||||
<string name="lock_database_back_root_summary">Bloccare il database quando l\'utente preme il pulsante Indietro nella schermata principale</string>
|
<string name="lock_database_back_root_summary">Blocca la base di dati quando l\'utente preme il pulsante Indietro nella schermata principale</string>
|
||||||
<string name="clear_clipboard_notification_title">Pulisci alla chiusura</string>
|
<string name="clear_clipboard_notification_title">Pulisci alla chiusura</string>
|
||||||
<string name="clear_clipboard_notification_summary">Blocca il database quando scade la durata degli appunti o la notifica viene chiusa dopo che inizi ad usarlo</string>
|
<string name="clear_clipboard_notification_summary">Blocca la base di dati quando scade la durata degli appunti o la notifica viene chiusa dopo che inizi ad usarlo</string>
|
||||||
<string name="recycle_bin">Cestino</string>
|
<string name="recycle_bin">Cestino</string>
|
||||||
<string name="keyboard_selection_entry_title">Selezione elemento</string>
|
<string name="keyboard_selection_entry_title">Selezione elemento</string>
|
||||||
<string name="keyboard_selection_entry_summary">Mostra i campi di input nella Magitastiera durante la visualizzazione di un elemento</string>
|
<string name="keyboard_selection_entry_summary">Mostra i campi di input nella Magitastiera durante la visualizzazione di un elemento</string>
|
||||||
<string name="delete_entered_password_title">Elimina password</string>
|
<string name="delete_entered_password_title">Elimina password</string>
|
||||||
<string name="delete_entered_password_summary">Elimina la password immessa dopo un tentativo di connessione al database</string>
|
<string name="delete_entered_password_summary">Elimina la password immessa dopo un tentativo di connessione alla base di dati</string>
|
||||||
<string name="content_description_open_file">Apri il file</string>
|
<string name="content_description_open_file">Apri il file</string>
|
||||||
<string name="content_description_node_children">Figli del nodo</string>
|
<string name="content_description_node_children">Figli del nodo</string>
|
||||||
<string name="content_description_add_node">Aggiungi un nodo</string>
|
<string name="content_description_add_node">Aggiungi un nodo</string>
|
||||||
@@ -369,7 +358,7 @@
|
|||||||
<string name="security">Sicurezza</string>
|
<string name="security">Sicurezza</string>
|
||||||
<string name="content_description_background">Sfondo</string>
|
<string name="content_description_background">Sfondo</string>
|
||||||
<string name="entry_UUID">Identificativo univoco universale</string>
|
<string name="entry_UUID">Identificativo univoco universale</string>
|
||||||
<string name="error_create_database_file">Impossibile creare un database con questa password e file chiave.</string>
|
<string name="error_create_database_file">Impossibile creare una base di dati con questa password e file chiave.</string>
|
||||||
<string name="menu_advanced_unlock_settings">Sblocco avanzato</string>
|
<string name="menu_advanced_unlock_settings">Sblocco avanzato</string>
|
||||||
<string name="entry_history">Cronologia</string>
|
<string name="entry_history">Cronologia</string>
|
||||||
<string name="entry_setup_otp">Imposta password usa e getta</string>
|
<string name="entry_setup_otp">Imposta password usa e getta</string>
|
||||||
@@ -379,8 +368,8 @@
|
|||||||
<string name="otp_counter">Contatore</string>
|
<string name="otp_counter">Contatore</string>
|
||||||
<string name="otp_digits">Cifre</string>
|
<string name="otp_digits">Cifre</string>
|
||||||
<string name="otp_algorithm">Algoritmo</string>
|
<string name="otp_algorithm">Algoritmo</string>
|
||||||
<string name="entry_otp">Password usa e getta</string>
|
<string name="entry_otp">Password usa e getta (OTP)</string>
|
||||||
<string name="error_invalid_OTP">Segreto per password usa e getta (OTP) non valido.</string>
|
<string name="error_invalid_OTP">Segreto della password usa e getta (OTP) non valido.</string>
|
||||||
<string name="error_disallow_no_credentials">Impostare almeno una credenziale.</string>
|
<string name="error_disallow_no_credentials">Impostare almeno una credenziale.</string>
|
||||||
<string name="error_copy_group_here">Non puoi copiare un gruppo qui.</string>
|
<string name="error_copy_group_here">Non puoi copiare un gruppo qui.</string>
|
||||||
<string name="error_otp_secret_key">La chiave segreta deve essere nel formato Base32.</string>
|
<string name="error_otp_secret_key">La chiave segreta deve essere nel formato Base32.</string>
|
||||||
@@ -388,38 +377,35 @@
|
|||||||
<string name="error_otp_period">Il periodo deve essere tra %1$d e %2$d secondi.</string>
|
<string name="error_otp_period">Il periodo deve essere tra %1$d e %2$d secondi.</string>
|
||||||
<string name="error_otp_digits">Il token deve contenere tra %1$d e %2$d cifre.</string>
|
<string name="error_otp_digits">Il token deve contenere tra %1$d e %2$d cifre.</string>
|
||||||
<string name="invalid_db_same_uuid">%1$s con le stesse credenziali univoche %2$s è già esistente.</string>
|
<string name="invalid_db_same_uuid">%1$s con le stesse credenziali univoche %2$s è già esistente.</string>
|
||||||
<string name="creating_database">Sto creando il database…</string>
|
<string name="creating_database">Sto creando la base di dati…</string>
|
||||||
<string name="menu_security_settings">Impostazioni di sicurezza</string>
|
<string name="menu_security_settings">Impostazioni di sicurezza</string>
|
||||||
<string name="contains_duplicate_uuid">Il databse contiene identificativi univoci univerali duplicati.</string>
|
<string name="contains_duplicate_uuid">Il database contiene Identificativi Univoci Universali (UUID) duplicati.</string>
|
||||||
<string name="error_save_database">Non è possibile salvare il database.</string>
|
<string name="error_save_database">Non è possibile salvare la base di dati.</string>
|
||||||
<string name="menu_save_database">Salva il database</string>
|
<string name="menu_save_database">Salva la base di dati</string>
|
||||||
<string name="menu_empty_recycle_bin">Svuota il cestino</string>
|
<string name="menu_empty_recycle_bin">Svuota il cestino</string>
|
||||||
<string name="command_execution">Esecuzione del comando…</string>
|
<string name="command_execution">Esecuzione del comando…</string>
|
||||||
<string name="warning_permanently_delete_nodes">Vuoi eliminare definitivamente i nodi selezionati\?</string>
|
<string name="warning_permanently_delete_nodes">Vuoi eliminare definitivamente i nodi selezionati\?</string>
|
||||||
<string name="entry_attachments">Allegati</string>
|
<string name="entry_attachments">Allegati</string>
|
||||||
<string name="auto_focus_search_summary">Richiedi una ricerca quando un database viene aperto</string>
|
<string name="auto_focus_search_summary">Richiedi una ricerca quando una base di dati viene aperta</string>
|
||||||
<string name="auto_focus_search_title">Ricerca rapida</string>
|
<string name="auto_focus_search_title">Ricerca rapida</string>
|
||||||
<string name="menu_delete_entry_history">Cancella cronologia</string>
|
<string name="menu_delete_entry_history">Cancella cronologia</string>
|
||||||
<string name="menu_restore_entry_history">Ripristina cronologia</string>
|
<string name="menu_restore_entry_history">Ripristina cronologia</string>
|
||||||
<string name="html_about_contribution">Per poter <strong>mantenere la nostra libertà</strong>, <strong>risolvere bug</strong>, <strong>aggiungere funzionalità</strong> ed <strong>essere sempre attivi</strong>, facciamo affidamento sul tuo <strong>contributo</strong>.</string>
|
<string name="html_about_contribution">Per poter <strong>mantenere la nostra libertà</strong>, <strong>risolvere bug</strong>, <strong>aggiungere funzionalità</strong> ed <strong>essere sempre attivi</strong>, facciamo affidamento sul tuo <strong>contributo</strong>.</string>
|
||||||
<string name="contact">Contatto</string>
|
<string name="contact">Contatto</string>
|
||||||
<string name="biometric_prompt_extract_credential_title">Apri il database con il riconoscimento biometrico</string>
|
|
||||||
<string name="biometric_prompt_store_credential_title">Salva il riconoscimento biometrico</string>
|
|
||||||
<string name="keystore_not_accessible">Il keystore non è inizializzato correttamente.</string>
|
<string name="keystore_not_accessible">Il keystore non è inizializzato correttamente.</string>
|
||||||
<string name="menu_master_key_settings">Impostazioni della chiave principale</string>
|
<string name="menu_master_key_settings">Impostazioni della chiave principale</string>
|
||||||
<string name="master_key">Chiave principale</string>
|
<string name="master_key">Chiave principale</string>
|
||||||
<string name="contribution">Contribuisci</string>
|
<string name="contribution">Contributi</string>
|
||||||
<string name="biometric_prompt_store_credential_message">Attenzione: Devi comunque ricordarti la password principale anche se usi il riconoscimento biometrico.</string>
|
<string name="warning_database_read_only">Garantisci il permesso di scrittura per salvare i cambiamenti della base di dati</string>
|
||||||
<string name="warning_database_read_only">Garantisci il permesso di scrittura per salvare i cambiamenti del database</string>
|
<string name="hide_broken_locations_summary">Nascondi collegamenti corrotti nella lista delle basi di dati recenti</string>
|
||||||
<string name="hide_broken_locations_summary">Nascondi link corrotti nella lista dei database recenti</string>
|
<string name="hide_broken_locations_title">Nascondi i collegamenti di basi di dati corrotti</string>
|
||||||
<string name="hide_broken_locations_title">Nascondi i link di database corrotti</string>
|
<string name="show_recent_files_summary">Mostra le posizioni delle basi di dati recenti</string>
|
||||||
<string name="show_recent_files_summary">Mostra le posizioni dei database recenti</string>
|
|
||||||
<string name="show_recent_files_title">Mostra file recenti</string>
|
<string name="show_recent_files_title">Mostra file recenti</string>
|
||||||
<string name="remember_keyfile_locations_title">Salva la posizione dei keyfile</string>
|
<string name="remember_keyfile_locations_title">Ricorda la posizione dei file chiave</string>
|
||||||
<string name="remember_database_locations_summary">Ricorda la posizione dei database</string>
|
<string name="remember_database_locations_summary">Ricorda la posizione delle basi di dati</string>
|
||||||
<string name="remember_database_locations_title">Salva posizione dei database</string>
|
<string name="remember_database_locations_title">Ricorda la posizione delle basi di dati</string>
|
||||||
<string name="contains_duplicate_uuid_procedure">Per continuare, risolvi il problema generando nuovi UUIDs per i duplicati \?</string>
|
<string name="contains_duplicate_uuid_procedure">Per continuare, risolvi il problema generando nuovi UUID per i duplicati\?</string>
|
||||||
<string name="error_create_database">Impossibile creare il file del database.</string>
|
<string name="error_create_database">Impossibile creare il file della base di dati.</string>
|
||||||
<string name="entry_add_attachment">Aggiungi allegato</string>
|
<string name="entry_add_attachment">Aggiungi allegato</string>
|
||||||
<string name="discard">Scarta</string>
|
<string name="discard">Scarta</string>
|
||||||
<string name="discard_changes">Scartare i cambiamenti\?</string>
|
<string name="discard_changes">Scartare i cambiamenti\?</string>
|
||||||
@@ -430,49 +416,47 @@
|
|||||||
<string name="max_history_size_summary">Limita la dimensione (in byte) della cronologia per voce</string>
|
<string name="max_history_size_summary">Limita la dimensione (in byte) della cronologia per voce</string>
|
||||||
<string name="max_history_items_summary">Limita il numero di elementi della cronologia per voce</string>
|
<string name="max_history_items_summary">Limita il numero di elementi della cronologia per voce</string>
|
||||||
<string name="recycle_bin_group_title">Gruppo cestino</string>
|
<string name="recycle_bin_group_title">Gruppo cestino</string>
|
||||||
<string name="database_data_compression_summary">La compressione dei dati riduce le dimensioni del database</string>
|
<string name="database_data_compression_summary">La compressione dei dati riduce le dimensioni della base di dati</string>
|
||||||
<string name="database_data_compression_title">Compressione dati</string>
|
<string name="database_data_compression_title">Compressione dati</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">Proponi l\'autenticazione biometrica quando il database è configurato per usarla</string>
|
<string name="biometric_auto_open_prompt_summary">Proponi l\'autenticazione biometrica quando la base di dati è configurata per usarla</string>
|
||||||
<string name="advanced_unlock_explanation_summary">Utilizza lo sblocco avanzato per aprire il database più facilmente</string>
|
<string name="advanced_unlock_explanation_summary">Utilizza lo sblocco avanzato per aprire la base di dati più facilmente</string>
|
||||||
<string name="clipboard_explanation_summary">Copia i campi di immissione utilizzando gli appunti del tuo dispositivo</string>
|
<string name="clipboard_explanation_summary">Copia i campi di immissione utilizzando gli appunti del tuo dispositivo</string>
|
||||||
<string name="database_opened">Database aperto</string>
|
<string name="database_opened">Base di dati aperta</string>
|
||||||
<string name="biometric">Biometrico</string>
|
<string name="biometric">Biometrico</string>
|
||||||
<string name="credential_before_click_biometric_button">Digita la password e poi fai clic sul pulsante biometrico.</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_message">Estrai le credenziali del database con dati biometrici</string>
|
|
||||||
<string name="settings_database_force_changing_master_key_title">Forza rinnovo</string>
|
<string name="settings_database_force_changing_master_key_title">Forza rinnovo</string>
|
||||||
<string name="settings_database_recommend_changing_master_key_summary">Consigliato cambiare la chiave principale (giorni)</string>
|
<string name="settings_database_recommend_changing_master_key_summary">È consigliato di cambiare la chiave principale (giorni)</string>
|
||||||
<string name="settings_database_recommend_changing_master_key_title">Rinnovo raccomandato</string>
|
<string name="settings_database_recommend_changing_master_key_title">Rinnovo raccomandato</string>
|
||||||
<string name="hide_expired_entries_summary">I record scaduti sono nascosti</string>
|
<string name="hide_expired_entries_summary">Le voci scadute non sono mostrate</string>
|
||||||
<string name="hide_expired_entries_title">Nascondi i record scaduti</string>
|
<string name="hide_expired_entries_title">Nascondi le voci scadute</string>
|
||||||
<string name="education_setup_OTP_summary">Imposta la gestione delle OTP (HOTP / TOTP) per generare un token richiesto per la 2FA.</string>
|
<string name="education_setup_OTP_summary">Imposta la gestione delle OTP (HOTP / TOTP) per generare un token richiesto per la 2FA.</string>
|
||||||
<string name="download_complete">Completo!</string>
|
<string name="download_complete">Completato!</string>
|
||||||
<string name="download_finalization">Finalizzazione…</string>
|
<string name="download_finalization">Finalizzazione…</string>
|
||||||
<string name="download_progression">Avanzamento %1$d%%</string>
|
<string name="download_progression">Avanzamento %1$d%%</string>
|
||||||
<string name="download_initialization">Inizializzazione…</string>
|
<string name="download_initialization">Inizializzazione…</string>
|
||||||
<string name="download_attachment">Scaricamento %1$s</string>
|
<string name="download_attachment">Scaricamento %1$s</string>
|
||||||
<string name="education_setup_OTP_title">Imposta OTP</string>
|
<string name="education_setup_OTP_title">Imposta One-Time Password (OTP)</string>
|
||||||
<string name="enable_auto_save_database_summary">Salva il database dopo ogni azione importante (in modalità \"Modificabile\")</string>
|
<string name="enable_auto_save_database_summary">Salva la base di dati dopo ogni azione importante (in modalità «Modificabile»)</string>
|
||||||
<string name="enable_auto_save_database_title">Salvataggio automatico del database</string>
|
<string name="enable_auto_save_database_title">Salvataggio automatico del database</string>
|
||||||
<string name="autofill_auto_search_summary">Suggerisci automaticamente risultati dal dominio web o ID dell\'applicazione</string>
|
<string name="autofill_auto_search_summary">Suggerisci automaticamente risultati dal dominio web o ID dell\'applicazione</string>
|
||||||
<string name="autofill_auto_search_title">Ricerca automatica</string>
|
<string name="autofill_auto_search_title">Ricerca automatica</string>
|
||||||
<string name="keyboard_auto_go_action_summary">Dopo la pressione del tasto \"Campo\" invia il tasto \"Vai\"</string>
|
<string name="keyboard_auto_go_action_summary">Azione del tasto \"Vai\" dopo aver premuto un tasto \"Campo\"</string>
|
||||||
<string name="keyboard_auto_go_action_title">Azione auto key</string>
|
<string name="keyboard_auto_go_action_title">Tasto di azione automatica</string>
|
||||||
<string name="device_keyboard_setting_title">Impostazioni tastiera dispositivo</string>
|
<string name="device_keyboard_setting_title">Impostazioni della tastiera del dispositivo</string>
|
||||||
<string name="compression_gzip">Gzip</string>
|
<string name="compression_gzip">Gzip</string>
|
||||||
<string name="compression_none">Nessuna</string>
|
<string name="compression_none">Nessuna</string>
|
||||||
<string name="compression">Compressione</string>
|
<string name="compression">Compressione</string>
|
||||||
<string name="database_custom_color_title">Colore del database customizzato</string>
|
<string name="database_custom_color_title">Colore personalizzato della base di dati</string>
|
||||||
<string name="database_default_username_title">Nome utente di default</string>
|
<string name="database_default_username_title">Nome utente predefinito</string>
|
||||||
<string name="disable">Disabilita</string>
|
<string name="disable">Disabilita</string>
|
||||||
<string name="enable">Abilita</string>
|
<string name="enable">Abilita</string>
|
||||||
<string name="settings_database_force_changing_master_key_next_time_summary">Richiedi il cambio della master key la prossima volta (una volta)</string>
|
<string name="settings_database_force_changing_master_key_next_time_summary">Richiedi il cambio della chiave principale la prossima volta (una volta)</string>
|
||||||
<string name="settings_database_force_changing_master_key_next_time_title">Forza il rinnovo la prossima volta</string>
|
<string name="settings_database_force_changing_master_key_next_time_title">Forza il rinnovo la prossima volta</string>
|
||||||
<string name="settings_database_force_changing_master_key_summary">Richiedi il cambio della master key (giorni)</string>
|
<string name="settings_database_force_changing_master_key_summary">Richiedi il cambio della master key (giorni)</string>
|
||||||
<string name="lock_database_show_button_summary">Mostra il bottone di blocco nell\'interfaccia utente</string>
|
<string name="lock_database_show_button_summary">Mostra il bottone di blocco nell\'interfaccia utente</string>
|
||||||
<string name="lock_database_show_button_title">Mostra il bottone di blocco</string>
|
<string name="lock_database_show_button_title">Mostra il bottone di blocco</string>
|
||||||
<string name="autofill_preference_title">Impostazioni dell\'autocompletamento</string>
|
<string name="autofill_preference_title">Impostazioni dell\'autocompletamento</string>
|
||||||
<string name="warning_database_link_revoked">Accesso al file revocato dal file manager</string>
|
<string name="warning_database_link_revoked">Accesso al file revocato dal file manager</string>
|
||||||
<string name="remember_keyfile_locations_summary">Ricorda la posizione dei keyfiles dei database</string>
|
<string name="remember_keyfile_locations_summary">Ricorda la posizione dei file chiave dei basi di dati</string>
|
||||||
<string name="error_label_exists">Questa etichetta esiste già.</string>
|
<string name="error_label_exists">Questa etichetta esiste già.</string>
|
||||||
<string name="autofill_block_restart">Riavvia l\'app contenente il campo per attivare il blocco.</string>
|
<string name="autofill_block_restart">Riavvia l\'app contenente il campo per attivare il blocco.</string>
|
||||||
<string name="autofill_block">Blocca riempimento automatico</string>
|
<string name="autofill_block">Blocca riempimento automatico</string>
|
||||||
@@ -489,23 +473,46 @@
|
|||||||
<string name="content_description_add_item">Aggiungi elemento</string>
|
<string name="content_description_add_item">Aggiungi elemento</string>
|
||||||
<string name="keyboard_previous_fill_in_summary">Torna automaticamente alla tastiera precedente quando si esegue l\'azione del tasto automatico</string>
|
<string name="keyboard_previous_fill_in_summary">Torna automaticamente alla tastiera precedente quando si esegue l\'azione del tasto automatico</string>
|
||||||
<string name="keyboard_previous_fill_in_title">Azione tasto automatico</string>
|
<string name="keyboard_previous_fill_in_title">Azione tasto automatico</string>
|
||||||
<string name="keyboard_previous_database_credentials_summary">Torna automaticamente alla tastiera precedente nella schermata delle credenziali del database</string>
|
<string name="keyboard_previous_database_credentials_summary">Torna automaticamente alla tastiera precedente nella schermata delle credenziali della base di dati</string>
|
||||||
<string name="keyboard_previous_database_credentials_title">Schermata credenziali database</string>
|
<string name="keyboard_previous_database_credentials_title">Schermata credenziali della base di dati</string>
|
||||||
<string name="keyboard_change">Cambia tastiera</string>
|
<string name="keyboard_change">Cambia tastiera</string>
|
||||||
<string name="upload_attachment">Carica %1$s</string>
|
<string name="upload_attachment">Carica %1$s</string>
|
||||||
<string name="education_add_attachment_summary">Carica un allegato alla voce per salvare dati esterni importanti.</string>
|
<string name="education_add_attachment_summary">Carica un allegato alla voce per salvare dati esterni importanti.</string>
|
||||||
<string name="education_add_attachment_title">Aggiungi allegato</string>
|
<string name="education_add_attachment_title">Aggiungi allegato</string>
|
||||||
<string name="database_data_remove_unlinked_attachments_summary">Rimuovi gli allegati contenuti nel database ma non collegati ad una voce</string>
|
<string name="database_data_remove_unlinked_attachments_summary">Rimuovi gli allegati contenuti nella base di dati ma non collegati ad una voce</string>
|
||||||
<string name="database_data_remove_unlinked_attachments_title">Rimuovi i dati scollegati</string>
|
<string name="database_data_remove_unlinked_attachments_title">Rimuovi i dati scollegati</string>
|
||||||
<string name="data">Dati</string>
|
<string name="data">Dati</string>
|
||||||
<string name="warning_empty_keyfile_explanation">Il contenuto del file chiave non deve mai essere modificato e, nel migliore dei casi, dovrebbe contenere dati generati casualmente.</string>
|
<string name="warning_empty_keyfile_explanation">Il contenuto del file chiave non deve mai essere modificato e, nel migliore dei casi, dovrebbe contenere dati generati casualmente.</string>
|
||||||
<string name="warning_empty_keyfile">Non è consigliabile aggiungere un file chiave vuoto.</string>
|
<string name="warning_empty_keyfile">Non è consigliabile aggiungere un file chiave vuoto.</string>
|
||||||
<string name="warning_sure_remove_data">Rimuovere questi dati comunque\?</string>
|
<string name="warning_sure_remove_data">Rimuovere questi dati comunque\?</string>
|
||||||
<string name="warning_remove_unlinked_attachment">La rimozione di dati scollegati può ridurre le dimensioni del database, ma può anche eliminare i dati utilizzati per i plugin KeePass.</string>
|
<string name="warning_remove_unlinked_attachment">La rimozione di dati scollegati può ridurre le dimensioni della base di dati, ma può anche eliminare i dati utilizzati per i plugin KeePass.</string>
|
||||||
<string name="warning_sure_add_file">Aggiungi comunque il file\?</string>
|
<string name="warning_sure_add_file">Aggiungi comunque il file\?</string>
|
||||||
<string name="warning_replace_file">Caricare questo file sostituirà quello esistente.</string>
|
<string name="warning_replace_file">Caricare questo file sostituirà quello esistente.</string>
|
||||||
<string name="warning_file_too_big">Un database KeePass dovrebbe contenere solo piccoli file di utilità (come i file di chiavi PGP).
|
<string name="warning_file_too_big">Una base di dati KeePass dovrebbe contenere solo piccoli file di utilità (come i file di chiavi PGP).
|
||||||
\n
|
\n
|
||||||
\nIl database può diventare molto grande e ridurre le prestazioni con questo caricamento.</string>
|
\nLa base di dati può diventare molto grande e ridurre le prestazioni con questo caricamento.</string>
|
||||||
<string name="content_description_credentials_information">Info credenziali</string>
|
<string name="content_description_credentials_information">Info credenziali</string>
|
||||||
|
<string name="show_uuid_summary">Visualizza l\'UUID collegato a una voce</string>
|
||||||
|
<string name="show_uuid_title">Mostra UUID</string>
|
||||||
|
<string name="autofill_read_only_save">Il salvataggio dei dati non è consentito per una base du dati aperta in sola lettura.</string>
|
||||||
|
<string name="autofill_ask_to_save_data_summary">Chiedi di salvare i dati quando un modulo viene convalidato</string>
|
||||||
|
<string name="autofill_ask_to_save_data_title">Chiedi di salvare i dati</string>
|
||||||
|
<string name="autofill_save_search_info_summary">Prova a salvare le informazioni di ricerca quando effettui una selezione di immissione manuale</string>
|
||||||
|
<string name="autofill_save_search_info_title">Salva le informazioni di ricerca</string>
|
||||||
|
<string name="autofill_close_database_summary">Chiudi la base di dati dopo una selezione di compilazione automatica</string>
|
||||||
|
<string name="autofill_close_database_title">Chiudi la base di dati</string>
|
||||||
|
<string name="keyboard_previous_lock_summary">Torna automaticamente alla tastiera precedente dopo aver bloccato la base di dati</string>
|
||||||
|
<string name="keyboard_previous_lock_title">Blocca la base di dati</string>
|
||||||
|
<string name="keyboard_save_search_info_summary">Prova a salvare le informazioni condivise quando effettui una selezione di immissione manuale</string>
|
||||||
|
<string name="keyboard_save_search_info_title">Salva le informazioni condivise</string>
|
||||||
|
<string name="notification">Notifica</string>
|
||||||
|
<string name="crypto_object_not_initialized">Impossibile recuperare l\'oggetto crittografico.</string>
|
||||||
|
<string name="biometric_security_update_required">È necessario un aggiornamento della sicurezza biometrica.</string>
|
||||||
|
<string name="warning_empty_recycle_bin">Eliminare definitivamente tutti i nodi dal cestino\?</string>
|
||||||
|
<string name="registration_mode">Modalità registrazione</string>
|
||||||
|
<string name="save_mode">Modalità salvataggio</string>
|
||||||
|
<string name="search_mode">Modalità ricerca</string>
|
||||||
|
<string name="error_field_name_already_exists">Il nome del campo esiste già.</string>
|
||||||
|
<string name="error_registration_read_only">Il salvataggio di un nuovo elemento non è consentito in una base di dati di sola lettura</string>
|
||||||
|
<string name="configure_biometric">Nessuna credenziale biometrica o del dispositivo è registrata.</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -17,8 +17,7 @@
|
|||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
||||||
translated by Arthur Zamarin<arthurzam@gmail.com>
|
translated by Arthur Zamarin<arthurzam@gmail.com>
|
||||||
-->
|
--><resources>
|
||||||
<resources>
|
|
||||||
<string name="feedback">משוב</string>
|
<string name="feedback">משוב</string>
|
||||||
<string name="homepage">דף הבית</string>
|
<string name="homepage">דף הבית</string>
|
||||||
<string name="about_description">KeePassDX היא תוכנה המממשת את מנהל הסיסמאות KeePass לאנרואיד.</string>
|
<string name="about_description">KeePassDX היא תוכנה המממשת את מנהל הסיסמאות KeePass לאנרואיד.</string>
|
||||||
@@ -27,7 +26,7 @@
|
|||||||
<string name="add_group">הוסף קבוצה</string>
|
<string name="add_group">הוסף קבוצה</string>
|
||||||
<string name="encryption_algorithm">אלגוריתם</string>
|
<string name="encryption_algorithm">אלגוריתם</string>
|
||||||
<string name="app_timeout">פסק זמן ליישום</string>
|
<string name="app_timeout">פסק זמן ליישום</string>
|
||||||
<string name="app_timeout_summary">זמן לפני נעילת מסד הנתונים כאשר היישום לא פעיל.</string>
|
<string name="app_timeout_summary">זמן לפני נעילת מסד הנתונים כאשר היישום לא פעיל</string>
|
||||||
<string name="application">יישום</string>
|
<string name="application">יישום</string>
|
||||||
<string name="menu_app_settings">הגדרות יישום</string>
|
<string name="menu_app_settings">הגדרות יישום</string>
|
||||||
<string name="brackets">סוגריים</string>
|
<string name="brackets">סוגריים</string>
|
||||||
|
|||||||
@@ -16,8 +16,7 @@
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
along with KeePassDX. If not, see <http://www.gnu.org/licenses/>.
|
||||||
-->
|
--><resources>
|
||||||
<resources>
|
|
||||||
<string name="contact">連絡先</string>
|
<string name="contact">連絡先</string>
|
||||||
<string name="contribution">貢献</string>
|
<string name="contribution">貢献</string>
|
||||||
<string name="feedback">フィードバック</string>
|
<string name="feedback">フィードバック</string>
|
||||||
@@ -75,7 +74,7 @@
|
|||||||
<string name="decrypting_db">データベースの内容を復号しています…</string>
|
<string name="decrypting_db">データベースの内容を復号しています…</string>
|
||||||
<string name="default_checkbox">デフォルトのデータベースとして使用</string>
|
<string name="default_checkbox">デフォルトのデータベースとして使用</string>
|
||||||
<string name="digits">数字</string>
|
<string name="digits">数字</string>
|
||||||
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft は<strong>オープンソース</strong>かつ<strong>広告なし</strong>です。\nそのままの状態で、<strong>GPLv3</strong> ライセンスの下、いかなる保証もなく提供されます。</string>
|
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft は<strong>オープンソース</strong>かつ<strong>広告なし</strong>です。\nそのままの状態で、<strong>GPLv3</strong> ライセンスの下、いかなる保証もなく提供されます。</string>
|
||||||
<string name="html_about_contribution"><strong>自由を維持し</strong>、<strong>バグを修正し</strong>、<strong>機能を追加し</strong>、そして<strong>活発に開発し続ける</strong>ために、私たちはあなたの<strong>貢献</strong>に期待しています。</string>
|
<string name="html_about_contribution"><strong>自由を維持し</strong>、<strong>バグを修正し</strong>、<strong>機能を追加し</strong>、そして<strong>活発に開発し続ける</strong>ために、私たちはあなたの<strong>貢献</strong>に期待しています。</string>
|
||||||
<string name="entry_accessed">最終アクセス</string>
|
<string name="entry_accessed">最終アクセス</string>
|
||||||
<string name="entry_cancel">キャンセル</string>
|
<string name="entry_cancel">キャンセル</string>
|
||||||
@@ -186,7 +185,6 @@
|
|||||||
<string name="menu_open">開く</string>
|
<string name="menu_open">開く</string>
|
||||||
<string name="menu_search">検索</string>
|
<string name="menu_search">検索</string>
|
||||||
<string name="menu_showpass">パスワードを表示</string>
|
<string name="menu_showpass">パスワードを表示</string>
|
||||||
<string name="menu_biometric_remove_key">保存済み生体鍵を削除</string>
|
|
||||||
<string name="menu_url">URL に移動</string>
|
<string name="menu_url">URL に移動</string>
|
||||||
<string name="menu_file_selection_read_only">書き込み禁止</string>
|
<string name="menu_file_selection_read_only">書き込み禁止</string>
|
||||||
<string name="menu_open_file_read_and_write">変更可能</string>
|
<string name="menu_open_file_read_and_write">変更可能</string>
|
||||||
@@ -273,20 +271,9 @@
|
|||||||
<string name="configure_biometric">生体情報またはデバイス認証情報が未登録です。</string>
|
<string name="configure_biometric">生体情報またはデバイス認証情報が未登録です。</string>
|
||||||
<string name="biometric_security_update_required">生体認証セキュリティの更新が必要です。</string>
|
<string name="biometric_security_update_required">生体認証セキュリティの更新が必要です。</string>
|
||||||
<string name="keystore_not_accessible">キーストアが正しく初期化されていません。</string>
|
<string name="keystore_not_accessible">キーストアが正しく初期化されていません。</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">生体認証プロンプトを開きロックを解除します</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">生体認証プロンプトを開き認証情報を保存します</string>
|
|
||||||
<string name="biometric_prompt_store_credential_title">生体認証の保存</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">警告:生体認証を使用する場合も、マスター パスワードを記憶する必要があります。</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">生体認証でデータベースを開く</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_message">生体情報を使ってデータベースの認証情報を取り出します</string>
|
|
||||||
<string name="encrypted_value_stored">保存された暗号化済みパスワード</string>
|
<string name="encrypted_value_stored">保存された暗号化済みパスワード</string>
|
||||||
<string name="biometric_invalid_key">生体鍵が読み取れません。削除して生体認証の手順を繰り返してください。</string>
|
|
||||||
<string name="biometric_not_recognized">生体情報を認識できませんでした</string>
|
|
||||||
<string name="biometric_scanning_error">生体認証エラー:%1$s</string>
|
|
||||||
<string name="no_credentials_stored">データベースの保存済み認証情報はありません。</string>
|
<string name="no_credentials_stored">データベースの保存済み認証情報はありません。</string>
|
||||||
<string name="biometric_prompt_not_initialized">生体認証プロンプトを初期化できません。</string>
|
|
||||||
<string name="crypto_object_not_initialized">crypto オブジェクトを取得できません。</string>
|
<string name="crypto_object_not_initialized">crypto オブジェクトを取得できません。</string>
|
||||||
<string name="credential_before_click_biometric_button">パスワードを入力し、[生体認証] ボタンをタップします。</string>
|
|
||||||
<string name="database_history">履歴</string>
|
<string name="database_history">履歴</string>
|
||||||
<string name="menu_appearance_settings">デザイン</string>
|
<string name="menu_appearance_settings">デザイン</string>
|
||||||
<string name="biometric">生体認証</string>
|
<string name="biometric">生体認証</string>
|
||||||
@@ -318,11 +305,10 @@
|
|||||||
<string name="advanced_unlock_explanation_summary">高度なロック解除を使用して、データベースをより簡単に開きます</string>
|
<string name="advanced_unlock_explanation_summary">高度なロック解除を使用して、データベースをより簡単に開きます</string>
|
||||||
<string name="biometric_unlock_enable_title">生体認証によるロック解除</string>
|
<string name="biometric_unlock_enable_title">生体認証によるロック解除</string>
|
||||||
<string name="biometric_unlock_enable_summary">生体情報をスキャンしてデータベースを開くことができるようにします</string>
|
<string name="biometric_unlock_enable_summary">生体情報をスキャンしてデータベースを開くことができるようにします</string>
|
||||||
<string name="biometric_auto_open_prompt_title">生体認証プロンプトを自動で開く</string>
|
<string name="biometric_auto_open_prompt_title">プロンプトを自動で開く</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">データベースが生体認証を使用するように設定されている場合、生体情報の取得を自動的に求めます</string>
|
<string name="biometric_auto_open_prompt_summary">データベースに設定されている場合、高度なロック解除を自動的に要求します</string>
|
||||||
<string name="biometric_delete_all_key_title">暗号鍵を削除</string>
|
<string name="biometric_delete_all_key_title">暗号鍵を削除</string>
|
||||||
<string name="biometric_delete_all_key_summary">生体認証に関するすべての暗号鍵を削除します</string>
|
<string name="biometric_delete_all_key_summary">高度なロック解除に関するすべての暗号鍵を削除します</string>
|
||||||
<string name="biometric_delete_all_key_warning">生体認証に関するすべての暗号鍵を削除しますか?</string>
|
|
||||||
<string name="unavailable_feature_text">この機能を起動できませんでした。</string>
|
<string name="unavailable_feature_text">この機能を起動できませんでした。</string>
|
||||||
<string name="unavailable_feature_version">デバイスは Android %1$s を実行していますが、%2$s 以降が必要です。</string>
|
<string name="unavailable_feature_version">デバイスは Android %1$s を実行していますが、%2$s 以降が必要です。</string>
|
||||||
<string name="unavailable_feature_hardware">対応するハードウェアが見つかりませんでした。</string>
|
<string name="unavailable_feature_hardware">対応するハードウェアが見つかりませんでした。</string>
|
||||||
@@ -347,7 +333,7 @@
|
|||||||
<string name="settings_database_force_changing_master_key_summary">マスターキーの変更を必須にします(日数)</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="settings_database_force_changing_master_key_next_time_title">次回更新を強制</string>
|
||||||
<string name="settings_database_force_changing_master_key_next_time_summary">次回マスターキーの変更を必須にします(1 回のみ)</string>
|
<string name="settings_database_force_changing_master_key_next_time_summary">次回マスターキーの変更を必須にします(1 回のみ)</string>
|
||||||
<string name="monospace_font_fields_enable_title">フィールド フォント</string>
|
<string name="monospace_font_fields_enable_title">フィールド書体</string>
|
||||||
<string name="monospace_font_fields_enable_summary">フィールド内で使用するフォントを変更して、文字を見やすくします</string>
|
<string name="monospace_font_fields_enable_summary">フィールド内で使用するフォントを変更して、文字を見やすくします</string>
|
||||||
<string name="allow_copy_password_title">クリップボードの信頼</string>
|
<string name="allow_copy_password_title">クリップボードの信頼</string>
|
||||||
<string name="allow_copy_password_summary">エントリーのパスワードと保護されたフィールドを、クリップボードにコピーすることを許可します</string>
|
<string name="allow_copy_password_summary">エントリーのパスワードと保護されたフィールドを、クリップボードにコピーすることを許可します</string>
|
||||||
@@ -363,7 +349,7 @@
|
|||||||
<string name="database_custom_color_title">カスタムカラー</string>
|
<string name="database_custom_color_title">カスタムカラー</string>
|
||||||
<string name="database_version_title">データベースのバージョン</string>
|
<string name="database_version_title">データベースのバージョン</string>
|
||||||
<string name="text_appearance">テキスト</string>
|
<string name="text_appearance">テキスト</string>
|
||||||
<string name="application_appearance">アプリ</string>
|
<string name="application_appearance">インターフェース</string>
|
||||||
<string name="other">その他</string>
|
<string name="other">その他</string>
|
||||||
<string name="compression">圧縮</string>
|
<string name="compression">圧縮</string>
|
||||||
<string name="compression_none">なし</string>
|
<string name="compression_none">なし</string>
|
||||||
@@ -403,7 +389,7 @@
|
|||||||
<string name="keyboard_previous_database_credentials_title">データベース認証情報の画面</string>
|
<string name="keyboard_previous_database_credentials_title">データベース認証情報の画面</string>
|
||||||
<string name="keyboard_previous_database_credentials_summary">データベース認証情報の画面で、切り替え前のキーボードへ自動的に戻します</string>
|
<string name="keyboard_previous_database_credentials_summary">データベース認証情報の画面で、切り替え前のキーボードへ自動的に戻します</string>
|
||||||
<string name="keyboard_previous_fill_in_title">自動キーアクション</string>
|
<string name="keyboard_previous_fill_in_title">自動キーアクション</string>
|
||||||
<string name="keyboard_previous_fill_in_summary">自動キーアクションの実行後、切り替え前のキーボードへ自動的に戻します</string>
|
<string name="keyboard_previous_fill_in_summary">[自動キーアクション] の実行後、切り替え前のキーボードへ自動的に戻します</string>
|
||||||
<string name="keyboard_previous_lock_title">データベースをロック</string>
|
<string name="keyboard_previous_lock_title">データベースをロック</string>
|
||||||
<string name="keyboard_previous_lock_summary">データベースのロック後、切り替え前のキーボードへ自動的に戻します</string>
|
<string name="keyboard_previous_lock_summary">データベースのロック後、切り替え前のキーボードへ自動的に戻します</string>
|
||||||
<string name="autofill_close_database_title">データベースを閉じる</string>
|
<string name="autofill_close_database_title">データベースを閉じる</string>
|
||||||
@@ -441,8 +427,6 @@
|
|||||||
<string name="education_new_node_summary">エントリーはデジタル ID の管理に役立ちます。\n\nグループ(≒フォルダ)はデータベース内のエントリーを整理します。</string>
|
<string name="education_new_node_summary">エントリーはデジタル ID の管理に役立ちます。\n\nグループ(≒フォルダ)はデータベース内のエントリーを整理します。</string>
|
||||||
<string name="education_search_title">エントリーを検索</string>
|
<string name="education_search_title">エントリーを検索</string>
|
||||||
<string name="education_search_summary">パスワードを取得するには、タイトル、ユーザー名、または他のフィールドの内容を入力します。</string>
|
<string name="education_search_summary">パスワードを取得するには、タイトル、ユーザー名、または他のフィールドの内容を入力します。</string>
|
||||||
<string name="education_biometric_title">生体認証によるロック解除</string>
|
|
||||||
<string name="education_biometric_summary">スキャンした生体情報にパスワードをリンクして、データベースのロックをすばやく解除します。</string>
|
|
||||||
<string name="education_entry_edit_title">エントリーを編集</string>
|
<string name="education_entry_edit_title">エントリーを編集</string>
|
||||||
<string name="education_entry_edit_summary">エントリーをカスタム フィールドとともに編集します。共有データは異なるエントリーのフィールド間で参照することができます。</string>
|
<string name="education_entry_edit_summary">エントリーをカスタム フィールドとともに編集します。共有データは異なるエントリーのフィールド間で参照することができます。</string>
|
||||||
<string name="education_generate_password_title">強力なパスワードを作成</string>
|
<string name="education_generate_password_title">強力なパスワードを作成</string>
|
||||||
@@ -456,7 +440,10 @@
|
|||||||
<string name="education_unlock_title">データベースのロックを解除</string>
|
<string name="education_unlock_title">データベースのロックを解除</string>
|
||||||
<string name="education_unlock_summary">データベースのロックを解除するには、パスワードまたはキーファイル、またはその両方を入力します。\n\nデータベース ファイルは変更するたびに安全な場所へバックアップしてください。</string>
|
<string name="education_unlock_summary">データベースのロックを解除するには、パスワードまたはキーファイル、またはその両方を入力します。\n\nデータベース ファイルは変更するたびに安全な場所へバックアップしてください。</string>
|
||||||
<string name="education_read_only_title">データベースの書き込みを禁止</string>
|
<string name="education_read_only_title">データベースの書き込みを禁止</string>
|
||||||
<string name="education_read_only_summary">セッションのロック解除モードを変更します。\n\n[書き込み禁止] では、データベースに対する意図しない変更を防ぐことができます。\n[変更可能] では、すべての要素を追加、削除、変更できます。</string>
|
<string name="education_read_only_summary">セッションのロック解除モードを変更します。
|
||||||
|
\n
|
||||||
|
\n[書き込み禁止] では、データベースに対する意図しない変更を防ぐことができます。
|
||||||
|
\n[変更可能] では、すべての要素を必要に応じて追加、削除、変更できます。</string>
|
||||||
<string name="education_field_copy_title">フィールドをコピー</string>
|
<string name="education_field_copy_title">フィールドをコピー</string>
|
||||||
<string name="education_field_copy_summary">コピーしたフィールドはどこにでも貼り付けることができます。\n\nお好みのフォーム入力方法を使用してください。</string>
|
<string name="education_field_copy_summary">コピーしたフィールドはどこにでも貼り付けることができます。\n\nお好みのフォーム入力方法を使用してください。</string>
|
||||||
<string name="education_lock_title">データベースをロック</string>
|
<string name="education_lock_title">データベースをロック</string>
|
||||||
@@ -488,7 +475,6 @@
|
|||||||
<string name="encryption_twofish">Twofish</string>
|
<string name="encryption_twofish">Twofish</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string-array name="timeout_options">
|
<string-array name="timeout_options">
|
||||||
<item>5秒</item>
|
<item>5秒</item>
|
||||||
<item>10秒</item>
|
<item>10秒</item>
|
||||||
@@ -522,4 +508,38 @@
|
|||||||
<string name="hide_expired_entries_summary">有効期限切れのエントリーは非表示になります</string>
|
<string name="hide_expired_entries_summary">有効期限切れのエントリーは非表示になります</string>
|
||||||
<string name="show_uuid_title">UUID を表示</string>
|
<string name="show_uuid_title">UUID を表示</string>
|
||||||
<string name="show_uuid_summary">エントリーにリンクされた UUID を表示します</string>
|
<string name="show_uuid_summary">エントリーにリンクされた UUID を表示します</string>
|
||||||
</resources>
|
<string name="autofill_read_only_save">データの保存は読み取り専用として開かれたデータベースでは許可されていません。</string>
|
||||||
|
<string name="save_mode">保存モード</string>
|
||||||
|
<string name="search_mode">検索モード</string>
|
||||||
|
<string name="error_field_name_already_exists">フィールド名はすでに存在します。</string>
|
||||||
|
<string name="menu_keystore_remove_key">高度なロック解除用の鍵を削除</string>
|
||||||
|
<string name="advanced_unlock_not_recognized">高度なロック解除を使って認証できませんでした</string>
|
||||||
|
<string name="enter">エンター</string>
|
||||||
|
<string name="backspace">バックスペース</string>
|
||||||
|
<string name="back_to_previous_keyboard">前のキーボードに戻る</string>
|
||||||
|
<string name="custom_fields">カスタム フィールド</string>
|
||||||
|
<string name="advanced_unlock_delete_all_key_warning">高度なロック解除に関する暗号鍵をすべて削除しますか?</string>
|
||||||
|
<string name="device_credential_unlock_enable_summary">デバイス認証情報を使用してデータベースを開くことができるようにします</string>
|
||||||
|
<string name="device_credential_unlock_enable_title">デバイス認証情報によるロック解除</string>
|
||||||
|
<string name="device_credential">デバイス認証情報</string>
|
||||||
|
<string name="credential_before_click_advanced_unlock_button">パスワードを入力し、[高度なロック解除] ボタンをタップします。</string>
|
||||||
|
<string name="advanced_unlock_prompt_not_initialized">高度なロック解除プロンプトを初期化できません。</string>
|
||||||
|
<string name="advanced_unlock_scanning_error">高度なロック解除のエラー:%1$s</string>
|
||||||
|
<string name="advanced_unlock_invalid_key">高度なロック解除用の鍵が読み取れません。削除してロック解除の手順をやり直してください。</string>
|
||||||
|
<string name="advanced_unlock_prompt_extract_credential_message">高度なロック解除を使ってデータベース認証情報を取り出します</string>
|
||||||
|
<string name="advanced_unlock_prompt_extract_credential_title">高度なロック解除を使ってデータベースを開く</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_message">警告:高度なロック解除を使用する場合も、マスター パスワードを記憶する必要があります。</string>
|
||||||
|
<string name="advanced_unlock_prompt_store_credential_title">高度なロック解除の認証</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_store_credential">ログイン プロンプトを開いて認証情報を保存する</string>
|
||||||
|
<string name="open_advanced_unlock_prompt_unlock_database">ログイン プロンプトを開いてロックを解除する</string>
|
||||||
|
<string name="select_entry">エントリーを選択</string>
|
||||||
|
<string name="education_advanced_unlock_summary">スキャンした生体情報またはデバイス認証情報にパスワードをリンクして、データベースのロックをすばやく解除します。</string>
|
||||||
|
<string name="education_advanced_unlock_title">データベースの高度なロック解除</string>
|
||||||
|
<string name="advanced_unlock_timeout">高度なロック解除のタイムアウト</string>
|
||||||
|
<string name="temp_advanced_unlock_timeout_summary">コンテンツを削除して高度なロック解除を終了するまでの期間</string>
|
||||||
|
<string name="temp_advanced_unlock_timeout_title">高度なロック解除の有効期限</string>
|
||||||
|
<string name="temp_advanced_unlock_enable_summary">高度なロック解除に使用する暗号化コンテンツを保存しません</string>
|
||||||
|
<string name="temp_advanced_unlock_enable_title">一時的な高度なロック解除</string>
|
||||||
|
<string name="advanced_unlock_tap_delete">タップして高度なロック解除用の鍵を削除する</string>
|
||||||
|
<string name="content">コンテンツ</string>
|
||||||
|
</resources>
|
||||||
@@ -123,7 +123,6 @@
|
|||||||
<string name="menu_open">열기</string>
|
<string name="menu_open">열기</string>
|
||||||
<string name="menu_search">검색</string>
|
<string name="menu_search">검색</string>
|
||||||
<string name="menu_showpass">비밀번호 보이기</string>
|
<string name="menu_showpass">비밀번호 보이기</string>
|
||||||
<string name="menu_biometric_remove_key">저장된 지문 삭제됨</string>
|
|
||||||
<string name="menu_url">링크로 가기</string>
|
<string name="menu_url">링크로 가기</string>
|
||||||
<string name="menu_file_selection_read_only">쓰기 보호됨</string>
|
<string name="menu_file_selection_read_only">쓰기 보호됨</string>
|
||||||
<string name="menu_open_file_read_and_write">수정 가능</string>
|
<string name="menu_open_file_read_and_write">수정 가능</string>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
<string name="add_group">Jauna grupa</string>
|
<string name="add_group">Jauna grupa</string>
|
||||||
<string name="encryption_algorithm">Šifrēšanas algoritms</string>
|
<string name="encryption_algorithm">Šifrēšanas algoritms</string>
|
||||||
<string name="app_timeout">Pielikuma taimauts</string>
|
<string name="app_timeout">Pielikuma taimauts</string>
|
||||||
<string name="app_timeout_summary">Bloķēšanas taimauts, kad programma nav aktīva.</string>
|
<string name="app_timeout_summary">Bloķēšanas taimauts, kad programma nav aktīva</string>
|
||||||
<string name="application">Programma</string>
|
<string name="application">Programma</string>
|
||||||
<string name="menu_app_settings">Programmas iestatījumi</string>
|
<string name="menu_app_settings">Programmas iestatījumi</string>
|
||||||
<string name="brackets">Iekavas</string>
|
<string name="brackets">Iekavas</string>
|
||||||
|
|||||||
@@ -124,7 +124,7 @@
|
|||||||
<string name="error_wrong_length">\"ദൈർഘ്യം\" ഫീൽഡിൽ ഒരു പോസിറ്റീവ് നമ്പർ നൽകുക.</string>
|
<string name="error_wrong_length">\"ദൈർഘ്യം\" ഫീൽഡിൽ ഒരു പോസിറ്റീവ് നമ്പർ നൽകുക.</string>
|
||||||
<string name="error_pass_gen_type">ഒരു പാസ്വേഡ് ജനറേഷൻ തരമെങ്കിലും തിരഞ്ഞെടുക്കണം.</string>
|
<string name="error_pass_gen_type">ഒരു പാസ്വേഡ് ജനറേഷൻ തരമെങ്കിലും തിരഞ്ഞെടുക്കണം.</string>
|
||||||
<string name="otp_counter">കൌണ്ടർ</string>
|
<string name="otp_counter">കൌണ്ടർ</string>
|
||||||
<string name="html_about_contribution">In order to <strong>keep our freedom</strong>, <strong>fix bugs</strong>, <strong>add features</strong> and <strong>to be always active</strong>, we count on your <strong>contribution</strong>.</string>
|
<string name="html_about_contribution">ഞങ്ങളുടെ <strong>സ്വാതന്ത്ര്യം നിലനിർത്തുന്നതിനും</strong>, <strong> ബഗുകൾ പരിഹരിക്കുന്നതിനും</strong>, <strong>സവിശേഷതകൾ ചേർക്കുന്നതിനും </strong>, എല്ലായ്പ്പോഴും<strong>സജീവമായിരിക്കുന്നതിനും</strong>, നിങ്ങളുടെ <strong>സംഭാവന</strong> ഞങ്ങൾ കണക്കാക്കുന്നു.</string>
|
||||||
<string name="error_create_database_file">ഈ പാസ്വേഡും കീഫയലും ഉപയോഗിച്ച് ഡാറ്റാബേസ് സൃഷ്ടിക്കാൻ കഴിയില്ല.</string>
|
<string name="error_create_database_file">ഈ പാസ്വേഡും കീഫയലും ഉപയോഗിച്ച് ഡാറ്റാബേസ് സൃഷ്ടിക്കാൻ കഴിയില്ല.</string>
|
||||||
<string name="error_copy_group_here">നിങ്ങൾക്ക് ഇവിടെ ഒരു ഗ്രൂപ്പ് പകർത്താൻ കഴിയില്ല.</string>
|
<string name="error_copy_group_here">നിങ്ങൾക്ക് ഇവിടെ ഒരു ഗ്രൂപ്പ് പകർത്താൻ കഴിയില്ല.</string>
|
||||||
<string name="error_copy_entry_here">നിങ്ങൾക്ക് ഇവിടെ ഒരു എൻട്രി പകർത്താൻ കഴിയില്ല.</string>
|
<string name="error_copy_entry_here">നിങ്ങൾക്ക് ഇവിടെ ഒരു എൻട്രി പകർത്താൻ കഴിയില്ല.</string>
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
<string name="error_load_database_KDF_memory">കീ ലോഡുചെയ്യാനായില്ല. KDF \"മെമ്മറി ഉപയോഗം\" കുറയ്ക്കാൻ ശ്രമിക്കുക.</string>
|
<string name="error_load_database_KDF_memory">കീ ലോഡുചെയ്യാനായില്ല. KDF \"മെമ്മറി ഉപയോഗം\" കുറയ്ക്കാൻ ശ്രമിക്കുക.</string>
|
||||||
<string name="error_out_of_memory">നിങ്ങളുടെ മുഴുവൻ ഡാറ്റാബേസും ലോഡുചെയ്യാൻ മെമ്മറിയൊന്നുമില്ല.</string>
|
<string name="error_out_of_memory">നിങ്ങളുടെ മുഴുവൻ ഡാറ്റാബേസും ലോഡുചെയ്യാൻ മെമ്മറിയൊന്നുമില്ല.</string>
|
||||||
<string name="error_invalid_OTP">OTP രഹസ്യം അസാധുവാണ്.</string>
|
<string name="error_invalid_OTP">OTP രഹസ്യം അസാധുവാണ്.</string>
|
||||||
<string name="error_can_not_handle_uri">ഈ URI കൈകാര്യം ചെയ്യാൻ Keepass DXന് കഴിഞ്ഞില്ല.</string>
|
<string name="error_can_not_handle_uri">ഈ URI കൈകാര്യം ചെയ്യാൻ KeePassDXന് കഴിഞ്ഞില്ല.</string>
|
||||||
<string name="error_arc4">Arcfour stream cipher പിന്തുണയ്ക്കുന്നില്ല.</string>
|
<string name="error_arc4">Arcfour stream cipher പിന്തുണയ്ക്കുന്നില്ല.</string>
|
||||||
<string name="entry_not_found">എൻട്രി ഡാറ്റ കണ്ടെത്താനായില്ല.</string>
|
<string name="entry_not_found">എൻട്രി ഡാറ്റ കണ്ടെത്താനായില്ല.</string>
|
||||||
<string name="entry_attachments">അറ്റാച്ചുമെന്റുകൾ</string>
|
<string name="entry_attachments">അറ്റാച്ചുമെന്റുകൾ</string>
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
<string name="content_description_entry_icon">എൻട്രി ഐക്കൺ</string>
|
<string name="content_description_entry_icon">എൻട്രി ഐക്കൺ</string>
|
||||||
<string name="clipboard_timeout_summary">ക്ലിപ്പ്ബോർഡിലെ സ്റ്റോറേജിന്റെ ദൈർക്യം</string>
|
<string name="clipboard_timeout_summary">ക്ലിപ്പ്ബോർഡിലെ സ്റ്റോറേജിന്റെ ദൈർക്യം</string>
|
||||||
<string name="key_derivation_function">കീ ഡെറിവേഷൻ ഫംഗ്ഷൻ</string>
|
<string name="key_derivation_function">കീ ഡെറിവേഷൻ ഫംഗ്ഷൻ</string>
|
||||||
<string name="about_description">Keepass പാസ്വേഡ് മാനേജറിന്റെ Android നടപ്പിലാക്കൽ</string>
|
<string name="about_description">KeePass പാസ്വേഡ് മാനേജറിന്റെ Android നടപ്പിലാക്കൽ</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="encryption_twofish">Twofish</string>
|
<string name="encryption_twofish">Twofish</string>
|
||||||
<string name="encryption_rijndael">Rijndael (AES)</string>
|
<string name="encryption_rijndael">Rijndael (AES)</string>
|
||||||
@@ -160,13 +160,13 @@
|
|||||||
<string name="keyboard_change">കീബോർഡ് മാറ്റുക</string>
|
<string name="keyboard_change">കീബോർഡ് മാറ്റുക</string>
|
||||||
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
|
<string name="keyboard_label">Magikeyboard (KeePassDX)</string>
|
||||||
<string name="compression_gzip">Gzip</string>
|
<string name="compression_gzip">Gzip</string>
|
||||||
<string name="database_version_title">"ഡാറ്റാബ്സിൻ്റെ പതിപ്പ്"</string>
|
<string name="database_version_title">ഡാറ്റാബ്സിൻ്റെ പതിപ്പ്</string>
|
||||||
<string name="max_history_items_title">പരമാവധി നമ്പർ</string>
|
<string name="max_history_items_title">പരമാവധി നമ്പർ</string>
|
||||||
<string name="recycle_bin_title">റീസൈക്കിൾ ബിനിൻ്റെ ഉപയോഗം</string>
|
<string name="recycle_bin_title">റീസൈക്കിൾ ബിനിൻ്റെ ഉപയോഗം</string>
|
||||||
<string name="biometric_delete_all_key_title">എൻക്രിപ്ഷൻ കീ ഇല്ലാതാക്കുക</string>
|
<string name="biometric_delete_all_key_title">എൻക്രിപ്ഷൻ കീ ഇല്ലാതാക്കുക</string>
|
||||||
<string name="autofill">സ്വയം പൂരിപ്പിക്കൽ</string>
|
<string name="autofill">സ്വയം പൂരിപ്പിക്കൽ</string>
|
||||||
<string name="encrypted_value_stored">എൻക്രിപ്റ്റഡ് പാസ്സ്വേഡ് സംരക്ഷിച്ചു</string>
|
<string name="encrypted_value_stored">എൻക്രിപ്റ്റഡ് പാസ്സ്വേഡ് സംരക്ഷിച്ചു</string>
|
||||||
<string name="build_label">Build %1$s</string>
|
<string name="build_label">ബിൽഡ് %1$s</string>
|
||||||
<string name="warning_permanently_delete_nodes">തിരഞ്ഞെടുത്ത നോഡുകൾ ശാശ്വതമായി ഇല്ലാതാക്കുക\?</string>
|
<string name="warning_permanently_delete_nodes">തിരഞ്ഞെടുത്ത നോഡുകൾ ശാശ്വതമായി ഇല്ലാതാക്കുക\?</string>
|
||||||
<string name="no_url_handler">URL തുറക്കാൻ ഒരു വെബ് ബ്രൌസർ ഇൻസ്റ്റാൾ ചെയ്യുക.</string>
|
<string name="no_url_handler">URL തുറക്കാൻ ഒരു വെബ് ബ്രൌസർ ഇൻസ്റ്റാൾ ചെയ്യുക.</string>
|
||||||
<string name="menu_delete_entry_history">നാൾവഴി ഇല്ലാതാക്കുക</string>
|
<string name="menu_delete_entry_history">നാൾവഴി ഇല്ലാതാക്കുക</string>
|
||||||
@@ -177,31 +177,28 @@
|
|||||||
<string name="content_description_file_information">ഫയലിനെക്കുറിച്ചുള്ള വിവരം</string>
|
<string name="content_description_file_information">ഫയലിനെക്കുറിച്ചുള്ള വിവരം</string>
|
||||||
<string name="content_description_background">ബാക്ക്ഗ്രൗണ്ട്</string>
|
<string name="content_description_background">ബാക്ക്ഗ്രൗണ്ട്</string>
|
||||||
<string name="brackets">ബ്രാക്കറ്റുകൾ</string>
|
<string name="brackets">ബ്രാക്കറ്റുകൾ</string>
|
||||||
<string name="biometric_prompt_store_credential_message">മുന്നറിയിപ്പ്: ബയോമെട്രിക് തിരിച്ചറിയൽ ഉപയോഗിക്കുകയാണെങ്കിലും നിങ്ങൾ മാസ്റ്റർ പാസ്സ്വേഡ് ഓർത്തിരിക്കണം.</string>
|
|
||||||
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft is <strong>ഓപ്പൺ സോഴ്സും</strong> and <strong>പരസ്യം ഇല്ലാത്ത</strong>.
|
<string name="html_about_licence">KeePassDX © %1$d Kunzisoft is <strong>ഓപ്പൺ സോഴ്സും</strong> and <strong>പരസ്യം ഇല്ലാത്ത</strong>.
|
||||||
\nIt is provided as is, under <strong>GPLv3</strong> license, without any warranty.</string>
|
\nIt is provided as is, under <strong>GPLv3</strong> license, without any warranty.</string>
|
||||||
<string name="warning_empty_password">പാസ്വേഡ് അൺലോക്കുചെയ്യൽ പരിരക്ഷയില്ലാതെ തുടരുക</string>
|
<string name="warning_empty_password">പാസ്വേഡ് അൺലോക്കുചെയ്യൽ പരിരക്ഷയില്ലാതെ തുടരുക\?</string>
|
||||||
<string name="icon_pack_choose_title">"ഐക്കൺ സമാഹാരം "</string>
|
<string name="icon_pack_choose_title">ഐക്കൺ സമാഹാരം</string>
|
||||||
<string name="magic_keyboard_title">Magikeyboard</string>
|
<string name="magic_keyboard_title">Magikeyboard</string>
|
||||||
<string name="database_history">നാൾവഴി</string>
|
<string name="database_history">നാൾവഴി</string>
|
||||||
<string name="special">പ്രത്യേക</string>
|
<string name="special">പ്രത്യേക</string>
|
||||||
<string name="download_progression">പുരോഗതിയിൽ: %1$d%%</string>
|
<string name="download_progression">പുരോഗതിയിൽ: %1$d%%</string>
|
||||||
<string name="database_description_title">ഡാറ്റാബേസിനെ കുറിച്ചുള്ള വിവരണം</string>
|
<string name="database_description_title">ഡാറ്റാബേസിനെ കുറിച്ചുള്ള വിവരണം</string>
|
||||||
<string name="education_field_copy_title">ഏതെങ്കിലും ഒരു ഫീൽഡ് പകർത്തുക</string>
|
<string name="education_field_copy_title">ഏതെങ്കിലും ഒരു ഫീൽഡ് പകർത്തുക</string>
|
||||||
<string name="error_invalid_path">Path ശെരിയാണോ എന്ന് ഉറപ്പാക്കുക</string>
|
<string name="error_invalid_path">Path ശെരിയാണോ എന്ന് ഉറപ്പാക്കുക.</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="biometric_scanning_error">ബയോമെട്രിക് പിശക്: %1$s</string>
|
|
||||||
<string name="extended_ASCII">വിപുലീകരിച്ച ASCII</string>
|
<string name="extended_ASCII">വിപുലീകരിച്ച ASCII</string>
|
||||||
<string name="icon_pack_choose_summary">Icon collection used in the app.</string>
|
<string name="icon_pack_choose_summary">ആപ്പിൽ ഉപയോഗിച്ചിരിക്കുന്ന ഐക്കൺ പാക്ക്</string>
|
||||||
<string name="style_choose_title">അപ്പ്ലിക്കേഷന്റെ തീം</string>
|
<string name="style_choose_title">അപ്പ്ലിക്കേഷന്റെ തീം</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
<string name="download_finalization">അന്തിമമാക്കുന്നു. . .</string>
|
||||||
<string name="download_finalization">അന്തിമമാക്കുന്നു...</string>
|
|
||||||
<string name="html_text_dev_feature_thanks">നിങ്ങളുടെ സംഭാവനയ്ക്ക് ഒരുപാട് നന്ദി.</string>
|
<string name="html_text_dev_feature_thanks">നിങ്ങളുടെ സംഭാവനയ്ക്ക് ഒരുപാട് നന്ദി.</string>
|
||||||
<string name="education_unlock_title">ഡാറ്റാബേസ് തുറക്കുക</string>
|
<string name="education_unlock_title">ഡാറ്റാബേസ് തുറക്കുക</string>
|
||||||
<string name="education_setup_OTP_title">OTP സജ്ജമാക്കുക</string>
|
<string name="education_setup_OTP_title">OTP സജ്ജമാക്കുക</string>
|
||||||
<string name="education_entry_new_field_title">ഇഷ്ടാനുസൃത ഫീൽഡുകൾ ചേർക്കുക</string>
|
<string name="education_entry_new_field_title">ഇഷ്ടാനുസൃത ഫീൽഡുകൾ ചേർക്കുക</string>
|
||||||
<string name="education_generate_password_title">ശക്തമായ പാസ്വേഡ് സൃഷ്ടിക്കുക</string>
|
<string name="education_generate_password_title">ശക്തമായ പാസ്വേഡ് സൃഷ്ടിക്കുക</string>
|
||||||
<string name="education_create_database_summary">നിങ്ങളുടെ ആദ്യ പാസ്വേഡ് മാനേജുമെന്റ് ഫയൽ സൃഷ്ടിക്കുക</string>
|
<string name="education_create_database_summary">നിങ്ങളുടെ ആദ്യ പാസ്വേഡ് മാനേജുമെന്റ് ഫയൽ സൃഷ്ടിക്കുക.</string>
|
||||||
<string name="enable_education_screens_title">വിദ്യാഭ്യാസ സൂചനകൾ</string>
|
<string name="enable_education_screens_title">വിദ്യാഭ്യാസ സൂചനകൾ</string>
|
||||||
<string name="delete_entered_password_title">പാസ്സ്വേഡ് ഇല്ലാതാക്കുക</string>
|
<string name="delete_entered_password_title">പാസ്സ്വേഡ് ഇല്ലാതാക്കുക</string>
|
||||||
<string name="autofill_block">ഓട്ടോഫിൽ തടയുക</string>
|
<string name="autofill_block">ഓട്ടോഫിൽ തടയുക</string>
|
||||||
@@ -221,14 +218,11 @@
|
|||||||
<string name="lock_database_screen_off_summary">സ്ക്രീൻ ഓഫാകുമ്പോൾ ഡാറ്റാബേസ് പൂട്ടുക</string>
|
<string name="lock_database_screen_off_summary">സ്ക്രീൻ ഓഫാകുമ്പോൾ ഡാറ്റാബേസ് പൂട്ടുക</string>
|
||||||
<string name="database_opened">ഡാറ്റാബേസ് തുറന്നു</string>
|
<string name="database_opened">ഡാറ്റാബേസ് തുറന്നു</string>
|
||||||
<string name="autofill_preference_title">ഓട്ടോഫിൽ ക്രമീകരണങ്ങൾ</string>
|
<string name="autofill_preference_title">ഓട്ടോഫിൽ ക്രമീകരണങ്ങൾ</string>
|
||||||
<string name="autofill_sign_in_prompt">KeePass DX ഉപയോഗിച്ച് പ്രവേശിക്കുക</string>
|
<string name="autofill_sign_in_prompt">KeePassDX ഉപയോഗിച്ച് പ്രവേശിക്കുക</string>
|
||||||
<string name="biometric_not_recognized">ബയോമെട്രിക് തിരിച്ചറിയാൻ കഴിഞ്ഞില്ല</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">ഡാറ്റാബേസ് ബയോമെട്രിക് തിരിച്ചറിയൽ ഉപയോഗിച്ച് തുറക്കുക</string>
|
|
||||||
<string name="unsupported_db_version">പിന്തുണയ്ക്കാത്ത ഡാറ്റാബേസ് പതിപ്പ്.</string>
|
<string name="unsupported_db_version">പിന്തുണയ്ക്കാത്ത ഡാറ്റാബേസ് പതിപ്പ്.</string>
|
||||||
<string name="sort_last_modify_time">പരിഷ്ക്കരണം</string>
|
<string name="sort_last_modify_time">പരിഷ്ക്കരണം</string>
|
||||||
<string name="command_execution">കമാൻഡ് നടപ്പിലാക്കുന്നു...</string>
|
<string name="command_execution">കമാൻഡ് നടപ്പിലാക്കുന്നു. . .</string>
|
||||||
<string name="subdomain_search_title">"ഉപഡൊമെയ്ൻ തിരയുക "</string>
|
<string name="subdomain_search_title">ഉപഡൊമെയ്ൻ തിരയുക</string>
|
||||||
<string name="menu_biometric_remove_key">സംരക്ഷിച്ച ബയോമെട്രിക് കീ ഇല്ലാതാക്കുക</string>
|
|
||||||
<string name="menu_master_key_settings">മാസ്റ്റർകീയുടെ ക്രമീകരണങ്ങൾ</string>
|
<string name="menu_master_key_settings">മാസ്റ്റർകീയുടെ ക്രമീകരണങ്ങൾ</string>
|
||||||
<string name="about">ഇതിനെ കുറിച്ച്</string>
|
<string name="about">ഇതിനെ കുറിച്ച്</string>
|
||||||
<string name="lowercase">ചെറിയക്ഷരം</string>
|
<string name="lowercase">ചെറിയക്ഷരം</string>
|
||||||
@@ -277,7 +271,7 @@
|
|||||||
<string name="education_select_database_title">നിലവിലുള്ള ഡാറ്റാബേസ് തുറക്കുക</string>
|
<string name="education_select_database_title">നിലവിലുള്ള ഡാറ്റാബേസ് തുറക്കുക</string>
|
||||||
<string name="menu_paste">പേസ്റ്റ്</string>
|
<string name="menu_paste">പേസ്റ്റ്</string>
|
||||||
<string name="keyboard_key_sound_title">കേൾക്കാവുന്ന കീപ്രസ്സ്</string>
|
<string name="keyboard_key_sound_title">കേൾക്കാവുന്ന കീപ്രസ്സ്</string>
|
||||||
<string name="download_initialization">സമാരംഭിക്കുന്നു...</string>
|
<string name="download_initialization">സമാരംഭിക്കുന്നു. . .</string>
|
||||||
<string name="menu_advanced_unlock_settings">വിപുലമായ അൺലോക്ക്</string>
|
<string name="menu_advanced_unlock_settings">വിപുലമായ അൺലോക്ക്</string>
|
||||||
<string name="allow_no_password_title">മാസ്റ്റർ കീകളൊന്നും അനുവദിക്കരുത്</string>
|
<string name="allow_no_password_title">മാസ്റ്റർ കീകളൊന്നും അനുവദിക്കരുത്</string>
|
||||||
<string name="device_keyboard_setting_title">ഉപകരണ കീബോർഡ് ക്രമീകരണങ്ങൾ</string>
|
<string name="device_keyboard_setting_title">ഉപകരണ കീബോർഡ് ക്രമീകരണങ്ങൾ</string>
|
||||||
@@ -298,13 +292,7 @@
|
|||||||
<string name="file_manager_install_description">ഉദ്ദേശിക്കുന്ന പ്രവര്ത്തനം സ്വീകരിക്കുന്ന ഒരു ഫയല് മാനേജര്. ഡാറ്റാബേസ് ഫയലുകള് നിര്മ്മിക്കാനും തുറക്കാനും സൂക്ഷിക്കാനും ACTION_CREATE_DOCUMENT നോടൊപ്പം ACTION_OPEN_DOCUMENT കൂടെ ആവശ്യമുണ്ട്.</string>
|
<string name="file_manager_install_description">ഉദ്ദേശിക്കുന്ന പ്രവര്ത്തനം സ്വീകരിക്കുന്ന ഒരു ഫയല് മാനേജര്. ഡാറ്റാബേസ് ഫയലുകള് നിര്മ്മിക്കാനും തുറക്കാനും സൂക്ഷിക്കാനും ACTION_CREATE_DOCUMENT നോടൊപ്പം ACTION_OPEN_DOCUMENT കൂടെ ആവശ്യമുണ്ട്.</string>
|
||||||
<string name="autofill_service_name">KeePassDX ഫോം ഓട്ടോഫില്ലിംഗ്</string>
|
<string name="autofill_service_name">KeePassDX ഫോം ഓട്ടോഫില്ലിംഗ്</string>
|
||||||
<string name="biometric">ബയോമെട്രിക്</string>
|
<string name="biometric">ബയോമെട്രിക്</string>
|
||||||
<string name="credential_before_click_biometric_button">പാസ്വേഡ് ടൈപ്പുചെയ്യുക, തുടർന്ന് \"ബയോമെട്രിക്\" ബട്ടൺ ക്ലിക്കുചെയ്യുക.</string>
|
|
||||||
<string name="no_credentials_stored">ഈ ഡാറ്റാബേസിൽ ഇതുവരെ ക്രെഡൻഷ്യൽ സംഭരിച്ചിട്ടില്ല.</string>
|
<string name="no_credentials_stored">ഈ ഡാറ്റാബേസിൽ ഇതുവരെ ക്രെഡൻഷ്യൽ സംഭരിച്ചിട്ടില്ല.</string>
|
||||||
<string name="biometric_invalid_key">ബയോമെട്രിക് കീ വായിക്കാൻ കഴിയില്ല. ദയവായി ഇത് ഇല്ലാതാക്കി ബയോമെട്രിക് തിരിച്ചറിയൽ നടപടിക്രമം ആവർത്തിക്കുക.</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_message">ബയോമെട്രിക് ഡാറ്റ ഉപയോഗിച്ച് ഡാറ്റാബേസ് ക്രെഡൻഷ്യൽ എക്സ്ട്രാക്റ്റുചെയ്യുക</string>
|
|
||||||
<string name="biometric_prompt_store_credential_title">ബയോമെട്രിക് തിരിച്ചറിയൽ സംരക്ഷിക്കുക</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">ക്രെഡൻഷ്യലുകൾ സംഭരിക്കുന്നതിന് ബയോമെട്രിക് പ്രോംപ്റ്റ് തുറക്കുക</string>
|
|
||||||
<string name="open_biometric_prompt_unlock_database">ഡാറ്റാബേസ് അൺലോക്കുചെയ്യുന്നതിന് ബയോമെട്രിക് പ്രോംപ്റ്റ് തുറക്കുക</string>
|
|
||||||
<string name="warning_sure_add_file">എന്തായാലും ഫയൽ ചേർക്കണോ\?</string>
|
<string name="warning_sure_add_file">എന്തായാലും ഫയൽ ചേർക്കണോ\?</string>
|
||||||
<string name="warning_replace_file">ഈ ഫയൽ അപ്ലോഡുചെയ്യുന്നത് നിലവിലുള്ള ഫയലിനെ മാറ്റിസ്ഥാപിക്കും.</string>
|
<string name="warning_replace_file">ഈ ഫയൽ അപ്ലോഡുചെയ്യുന്നത് നിലവിലുള്ള ഫയലിനെ മാറ്റിസ്ഥാപിക്കും.</string>
|
||||||
<string name="warning_database_link_revoked">ഫയൽ മാനേജർ റദ്ദാക്കിയ ഫയലിലേക്കുള്ള ആക്സസ്</string>
|
<string name="warning_database_link_revoked">ഫയൽ മാനേജർ റദ്ദാക്കിയ ഫയലിലേക്കുള്ള ആക്സസ്</string>
|
||||||
@@ -322,13 +310,13 @@
|
|||||||
<string name="remember_database_locations_summary">ഡാറ്റാബേസുകൾ എവിടെയാണ് സൂക്ഷിച്ചിരിക്കുന്നതെന്ന് ട്രാക്ക് ചെയ്യുന്നു</string>
|
<string name="remember_database_locations_summary">ഡാറ്റാബേസുകൾ എവിടെയാണ് സൂക്ഷിച്ചിരിക്കുന്നതെന്ന് ട്രാക്ക് ചെയ്യുന്നു</string>
|
||||||
<string name="remember_database_locations_title">ഡാറ്റാബേസ് ലൊക്കേഷനുകൾ ഓർത്തുവെയ്ക്കുക</string>
|
<string name="remember_database_locations_title">ഡാറ്റാബേസ് ലൊക്കേഷനുകൾ ഓർത്തുവെയ്ക്കുക</string>
|
||||||
<string name="contains_duplicate_uuid">ഡാറ്റാബേസിൽ തനിപ്പകർപ്പ് UUID-കൾ അടങ്ങിയിരിക്കുന്നു.</string>
|
<string name="contains_duplicate_uuid">ഡാറ്റാബേസിൽ തനിപ്പകർപ്പ് UUID-കൾ അടങ്ങിയിരിക്കുന്നു.</string>
|
||||||
<string name="read_only_warning">നിങ്ങളുടെ ഫയൽ മാനേജരെ ആശ്രയിച്ച്, നിങ്ങളുടെ സ്റ്റോറേജിൽ എഴുതാൻ KeepassDX-നെ അനുവദിച്ചേക്കില്ല.</string>
|
<string name="read_only_warning">നിങ്ങളുടെ ഫയൽ മാനേജരെ ആശ്രയിച്ച്, നിങ്ങളുടെ സ്റ്റോറേജിൽ എഴുതാൻ KeePassDX-നെ അനുവദിച്ചേക്കില്ല.</string>
|
||||||
<string name="auto_focus_search_summary">ഡാറ്റാബേസ് തുറക്കുമ്പോൾ തിരയൽ അഭ്യർത്ഥിക്കുക</string>
|
<string name="auto_focus_search_summary">ഡാറ്റാബേസ് തുറക്കുമ്പോൾ തിരയൽ അഭ്യർത്ഥിക്കുക</string>
|
||||||
<string name="omit_backup_search_summary">തിരയൽ ഫലങ്ങളിൽ നിന്ന് \"ബാക്കപ്പ്\", \"റീസൈക്കിൾ ബിൻ\" ഗ്രൂപ്പുകൾ ഒഴിവാക്കുക</string>
|
<string name="omit_backup_search_summary">തിരയൽ ഫലങ്ങളിൽ നിന്ന് \"ബാക്കപ്പ്\", \"റീസൈക്കിൾ ബിൻ\" ഗ്രൂപ്പുകൾ ഒഴിവാക്കുക</string>
|
||||||
<string name="omit_backup_search_title">ബാക്കപ്പ് എൻട്രികളിലൂടെ തിരയരുത്</string>
|
<string name="omit_backup_search_title">ബാക്കപ്പ് എൻട്രികളിലൂടെ തിരയരുത്</string>
|
||||||
<string name="menu_open_file_read_and_write">പരിഷ്ക്കരിക്കാവുന്ന</string>
|
<string name="menu_open_file_read_and_write">പരിഷ്ക്കരിക്കാവുന്ന</string>
|
||||||
<string name="menu_file_selection_read_only">റൈറ്റ്-പരിരക്ഷിതമാണ്</string>
|
<string name="menu_file_selection_read_only">റൈറ്റ്-പരിരക്ഷിതമാണ്</string>
|
||||||
<string name="error_otp_digits">ടോക്കണിൽ %1$ മുതൽ %2$d അക്കങ്ങൾ ഉണ്ടായിരിക്കണം.</string>
|
<string name="error_otp_digits">ടോക്കണിൽ %1$d മുതൽ %2$d അക്കങ്ങൾ വരെ ഉണ്ടായിരിക്കണം.</string>
|
||||||
<string name="database_custom_color_title">ഇഷ്ടാനുസൃത ഡാറ്റാബേസ് നിറം</string>
|
<string name="database_custom_color_title">ഇഷ്ടാനുസൃത ഡാറ്റാബേസ് നിറം</string>
|
||||||
<string name="keyboard_notification_entry_summary">ഒരു എൻട്രി ലഭ്യമാകുമ്പോൾ, അറിയിപ്പ് കാണിക്കുക</string>
|
<string name="keyboard_notification_entry_summary">ഒരു എൻട്രി ലഭ്യമാകുമ്പോൾ, അറിയിപ്പ് കാണിക്കുക</string>
|
||||||
<string name="keyboard_previous_database_credentials_title">ഡാറ്റാബേസ് ക്രെഡൻഷ്യലുകൾ സ്ക്രീൻ</string>
|
<string name="keyboard_previous_database_credentials_title">ഡാറ്റാബേസ് ക്രെഡൻഷ്യലുകൾ സ്ക്രീൻ</string>
|
||||||
@@ -353,7 +341,7 @@
|
|||||||
<string name="keyboard_selection_entry_title">എൻട്രി തിരഞ്ഞെടുക്കൽ</string>
|
<string name="keyboard_selection_entry_title">എൻട്രി തിരഞ്ഞെടുക്കൽ</string>
|
||||||
<string name="compression">കംപ്രഷൻ</string>
|
<string name="compression">കംപ്രഷൻ</string>
|
||||||
<string name="database_default_username_title">സ്ഥിരസ്ഥിതി ഉപയോക്തൃനാമം</string>
|
<string name="database_default_username_title">സ്ഥിരസ്ഥിതി ഉപയോക്തൃനാമം</string>
|
||||||
<string name="database_data_compression_summary">ഡാറ്റ കംപ്രഷൻ ഡാറ്റാബേസിന്റെ വലുപ്പം കുറയ്ക്കുന്നു.</string>
|
<string name="database_data_compression_summary">ഡാറ്റ കംപ്രഷൻ ഡാറ്റാബേസിന്റെ വലുപ്പം കുറയ്ക്കുന്നു</string>
|
||||||
<string name="database_data_compression_title">ഡാറ്റ കംപ്രഷൻ</string>
|
<string name="database_data_compression_title">ഡാറ്റ കംപ്രഷൻ</string>
|
||||||
<string name="unavailable_feature_hardware">അനുബന്ധ ഹാർഡ്വെയർ കണ്ടെത്താൻ കഴിഞ്ഞില്ല.</string>
|
<string name="unavailable_feature_hardware">അനുബന്ധ ഹാർഡ്വെയർ കണ്ടെത്താൻ കഴിഞ്ഞില്ല.</string>
|
||||||
<string name="biometric_unlock_enable_title">ബയോമെട്രിക് അൺലോക്കിംഗ്</string>
|
<string name="biometric_unlock_enable_title">ബയോമെട്രിക് അൺലോക്കിംഗ്</string>
|
||||||
@@ -372,7 +360,6 @@
|
|||||||
<string name="warning_empty_keyfile">ഒരു ശൂന്യ കീ ഫയൽ ചേർക്കാൻ ശുപാർശ ചെയ്യുന്നില്ല.</string>
|
<string name="warning_empty_keyfile">ഒരു ശൂന്യ കീ ഫയൽ ചേർക്കാൻ ശുപാർശ ചെയ്യുന്നില്ല.</string>
|
||||||
<string name="list_password_generator_options_summary">അനുവദനീയമായ പാസ്വേഡ് ജനറേറ്റർ പ്രതീകങ്ങൾ ക്രമീകരിക്കുക</string>
|
<string name="list_password_generator_options_summary">അനുവദനീയമായ പാസ്വേഡ് ജനറേറ്റർ പ്രതീകങ്ങൾ ക്രമീകരിക്കുക</string>
|
||||||
<string name="lock_database_back_root_summary">ഉപയോക്താവ് റൂട്ട് സ്ക്രീനിലെ ബാക്ക് ബട്ടൺ ക്ലിക്കുചെയ്യുമ്പോൾ ഡാറ്റാബേസ് ലോക്കുചെയ്യുക</string>
|
<string name="lock_database_back_root_summary">ഉപയോക്താവ് റൂട്ട് സ്ക്രീനിലെ ബാക്ക് ബട്ടൺ ക്ലിക്കുചെയ്യുമ്പോൾ ഡാറ്റാബേസ് ലോക്കുചെയ്യുക</string>
|
||||||
<string name="biometric_delete_all_key_warning">ബയോമെട്രിക് തിരിച്ചറിയലുമായി ബന്ധപ്പെട്ട എല്ലാ എൻക്രിപ്ഷൻ കീകളും ഇല്ലാതാക്കണോ\?</string>
|
|
||||||
<string name="biometric_delete_all_key_summary">ബയോമെട്രിക് തിരിച്ചറിയലുമായി ബന്ധപ്പെട്ട എല്ലാ എൻക്രിപ്ഷൻ കീകളും ഇല്ലാതാക്കുക</string>
|
<string name="biometric_delete_all_key_summary">ബയോമെട്രിക് തിരിച്ചറിയലുമായി ബന്ധപ്പെട്ട എല്ലാ എൻക്രിപ്ഷൻ കീകളും ഇല്ലാതാക്കുക</string>
|
||||||
<string name="path">പാത</string>
|
<string name="path">പാത</string>
|
||||||
<string name="database_data_remove_unlinked_attachments_title">ലിങ്കുചെയ്യാത്ത ഡാറ്റ നീക്കംചെയ്യുക</string>
|
<string name="database_data_remove_unlinked_attachments_title">ലിങ്കുചെയ്യാത്ത ഡാറ്റ നീക്കംചെയ്യുക</string>
|
||||||
@@ -381,7 +368,6 @@
|
|||||||
<string name="keyboard_notification_entry_title">അറിയിപ്പ് വിവരം</string>
|
<string name="keyboard_notification_entry_title">അറിയിപ്പ് വിവരം</string>
|
||||||
<string name="education_sort_summary">എൻട്രികളും ഗ്രൂപ്പുകളും എങ്ങനെ അടുക്കുന്നുവെന്ന് തിരഞ്ഞെടുക്കുക.</string>
|
<string name="education_sort_summary">എൻട്രികളും ഗ്രൂപ്പുകളും എങ്ങനെ അടുക്കുന്നുവെന്ന് തിരഞ്ഞെടുക്കുക.</string>
|
||||||
<string name="education_sort_title">ഇനം തരംതിരിക്കൽ</string>
|
<string name="education_sort_title">ഇനം തരംതിരിക്കൽ</string>
|
||||||
<string name="education_biometric_title">ബയോമെട്രിക് ഡാറ്റാബേസ് അൺലോക്കുചെയ്യൽ</string>
|
|
||||||
<string name="keyboard_entry_timeout_title">ടൈം ഔട്ട്</string>
|
<string name="keyboard_entry_timeout_title">ടൈം ഔട്ട്</string>
|
||||||
<string name="monospace_font_fields_enable_title">ഫീൽഡിന്റെ ഫോണ്ട്</string>
|
<string name="monospace_font_fields_enable_title">ഫീൽഡിന്റെ ഫോണ്ട്</string>
|
||||||
<string name="data">ഡാറ്റ</string>
|
<string name="data">ഡാറ്റ</string>
|
||||||
@@ -389,4 +375,17 @@
|
|||||||
<string name="biometric_unlock_enable_summary">ഡാറ്റാബേസ് തുറക്കുന്നതിന് നിങ്ങളുടെ ബയോമെട്രിക്സ് സ്കാൻ ചെയ്യാം</string>
|
<string name="biometric_unlock_enable_summary">ഡാറ്റാബേസ് തുറക്കുന്നതിന് നിങ്ങളുടെ ബയോമെട്രിക്സ് സ്കാൻ ചെയ്യാം</string>
|
||||||
<string name="warning_sure_remove_data">എന്തായാലും ഈ ഡാറ്റ നീക്കംചെയ്യണോ\?</string>
|
<string name="warning_sure_remove_data">എന്തായാലും ഈ ഡാറ്റ നീക്കംചെയ്യണോ\?</string>
|
||||||
<string name="content_description_credentials_information">ക്രെഡൻഷ്യലുകളുടെ വിവരം</string>
|
<string name="content_description_credentials_information">ക്രെഡൻഷ്യലുകളുടെ വിവരം</string>
|
||||||
|
<string name="configure_biometric">ബയോമെട്രിക് അല്ലെങ്കിൽ ഉപകരണ ക്രെഡൻഷ്യലുകളൊന്നും എൻറോൾ ചെയ്തിട്ടില്ല.</string>
|
||||||
|
<string name="show_uuid_title">UUID കാണിക്കുക</string>
|
||||||
|
<string name="reset_education_screens_summary">എല്ലാ വിദ്യാഭ്യാസ വിവരങ്ങളും വീണ്ടും കാണിക്കുക</string>
|
||||||
|
<string name="autofill_ask_to_save_data_title">ഡാറ്റ സംരക്ഷിക്കാൻ ആവശ്യപ്പെടുക</string>
|
||||||
|
<string name="autofill_save_search_info_title">തിരയൽ വിവരങ്ങൾ സംരക്ഷിക്കുക</string>
|
||||||
|
<string name="autofill_close_database_title">ഡാറ്റാബേസ് അടയ്ക്കുക</string>
|
||||||
|
<string name="keyboard_previous_lock_title">ഡാറ്റാബേസ് പൂട്ടുക</string>
|
||||||
|
<string name="keyboard_save_search_info_title">പങ്കിട്ട വിവരം സംരക്ഷിക്കുക</string>
|
||||||
|
<string name="clipboard_notifications_title">ക്ലിപ്ബോർഡ് അറിയിപ്പുകൾ</string>
|
||||||
|
<string name="warning_empty_recycle_bin">റീസൈക്കിൾ ബിന്നിൽ നിന്ന് എല്ലാ നോഡുകളും ശാശ്വതമായി ഇല്ലാതാക്കണോ\?</string>
|
||||||
|
<string name="registration_mode">രജിസ്ട്രേഷൻ മോഡ്</string>
|
||||||
|
<string name="search_mode">തിരയൽ മോഡ്</string>
|
||||||
|
<string name="error_registration_read_only">read-only ഡാറ്റാബേസിൽ പുതിയ ഒരു ഇനം സംരക്ഷിക്കാൻ കഴിയില്ല</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -123,7 +123,6 @@
|
|||||||
<string name="menu_open">Åpne</string>
|
<string name="menu_open">Åpne</string>
|
||||||
<string name="menu_search">Søk</string>
|
<string name="menu_search">Søk</string>
|
||||||
<string name="menu_showpass">Vis passord</string>
|
<string name="menu_showpass">Vis passord</string>
|
||||||
<string name="menu_biometric_remove_key">Fjern fingeravtrykksnøkkelen</string>
|
|
||||||
<string name="menu_url">Gå til nettadresse</string>
|
<string name="menu_url">Gå til nettadresse</string>
|
||||||
<string name="menu_file_selection_read_only">Skrivebeskyttet</string>
|
<string name="menu_file_selection_read_only">Skrivebeskyttet</string>
|
||||||
<string name="menu_open_file_read_and_write">Les og skriv</string>
|
<string name="menu_open_file_read_and_write">Les og skriv</string>
|
||||||
@@ -173,12 +172,7 @@
|
|||||||
<string name="warning_empty_password">Ønsker du å fortsette uten passordbeskyttelse\?</string>
|
<string name="warning_empty_password">Ønsker du å fortsette uten passordbeskyttelse\?</string>
|
||||||
<string name="warning_no_encryption_key">Ønsker du å fortsette uten en krypteringsnøkkel\?</string>
|
<string name="warning_no_encryption_key">Ønsker du å fortsette uten en krypteringsnøkkel\?</string>
|
||||||
<string name="version_label">Versjon %1$s</string>
|
<string name="version_label">Versjon %1$s</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">Venter på fingeravtrykk</string>
|
|
||||||
<string name="encrypted_value_stored">Kryptert passord lagret</string>
|
<string name="encrypted_value_stored">Kryptert passord lagret</string>
|
||||||
<string name="biometric_invalid_key">Kan ikke lese biometrisk nøkkel. Slett den og gjenta biometrisk gjenkjennelse.</string>
|
|
||||||
<string name="biometric_not_recognized">Fremmed fingeravtrykk</string>
|
|
||||||
<string name="biometric_scanning_error">Fingeravtrykksproblem: %1$s</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">Bruk fingeravtrykk til å lagre dette passordet</string>
|
|
||||||
<string name="no_credentials_stored">Denne databasen har ikke et passord enda.</string>
|
<string name="no_credentials_stored">Denne databasen har ikke et passord enda.</string>
|
||||||
<string name="database_history">Historikk</string>
|
<string name="database_history">Historikk</string>
|
||||||
<string name="menu_appearance_settings">Utseende</string>
|
<string name="menu_appearance_settings">Utseende</string>
|
||||||
@@ -204,7 +198,6 @@
|
|||||||
<string name="biometric_unlock_enable_summary">Skru på fingeravtrykksåpning av database</string>
|
<string name="biometric_unlock_enable_summary">Skru på fingeravtrykksåpning av database</string>
|
||||||
<string name="biometric_delete_all_key_title">Slett krypteringsnøkler</string>
|
<string name="biometric_delete_all_key_title">Slett krypteringsnøkler</string>
|
||||||
<string name="biometric_delete_all_key_summary">Slett alle fingeravtrykksnøkler som har med fingeravtrykksgjenkjennelse å gjøre</string>
|
<string name="biometric_delete_all_key_summary">Slett alle fingeravtrykksnøkler som har med fingeravtrykksgjenkjennelse å gjøre</string>
|
||||||
<string name="biometric_delete_all_key_warning">Er du sikker på at du vil slette alle nøklene som har med fingeravtrykk å gjøre?</string>
|
|
||||||
<string name="unavailable_feature_text">Kunne ikke starte denne funksjonen.</string>
|
<string name="unavailable_feature_text">Kunne ikke starte denne funksjonen.</string>
|
||||||
<string name="unavailable_feature_version">Din Androidversjon %1$s oppfyller ikke minimumskravet, %2$s kreves.</string>
|
<string name="unavailable_feature_version">Din Androidversjon %1$s oppfyller ikke minimumskravet, %2$s kreves.</string>
|
||||||
<string name="unavailable_feature_hardware">Fant ikke maskinvaren.</string>
|
<string name="unavailable_feature_hardware">Fant ikke maskinvaren.</string>
|
||||||
@@ -247,8 +240,6 @@
|
|||||||
\nLegg til grupper (tilsvarende mapper) for å organisere dine oppføringer og databasen din.</string>
|
\nLegg til grupper (tilsvarende mapper) for å organisere dine oppføringer og databasen din.</string>
|
||||||
<string name="education_search_title">Søk i dine oppføringer</string>
|
<string name="education_search_title">Søk i dine oppføringer</string>
|
||||||
<string name="education_search_summary">Søk etter oppføringer etter tittel, brukernavn eller andre felter for å hente passordene dine.</string>
|
<string name="education_search_summary">Søk etter oppføringer etter tittel, brukernavn eller andre felter for å hente passordene dine.</string>
|
||||||
<string name="education_biometric_title">Lås opp databasen din med fingeravtrykket ditt</string>
|
|
||||||
<string name="education_biometric_summary">Lenk passordet og fingeravtrykket ditt for å låse opp databasen din enkelt.</string>
|
|
||||||
<string name="education_entry_edit_title">Rediger oppføringen</string>
|
<string name="education_entry_edit_title">Rediger oppføringen</string>
|
||||||
<string name="education_entry_edit_summary">Rediger din oppføring med egendefinerte felter, referanser til pooldata kan legges til mellom felter av forskjellige oppføringer.</string>
|
<string name="education_entry_edit_summary">Rediger din oppføring med egendefinerte felter, referanser til pooldata kan legges til mellom felter av forskjellige oppføringer.</string>
|
||||||
<string name="education_generate_password_title">Opprett et sterkt passord</string>
|
<string name="education_generate_password_title">Opprett et sterkt passord</string>
|
||||||
@@ -293,7 +284,6 @@
|
|||||||
<string name="encryption_twofish">Twofish</string>
|
<string name="encryption_twofish">Twofish</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string name="style_choose_title">Velg en drakt</string>
|
<string name="style_choose_title">Velg en drakt</string>
|
||||||
<string name="style_choose_summary">Tilpass programdrakten ved å endre fargene</string>
|
<string name="style_choose_summary">Tilpass programdrakten ved å endre fargene</string>
|
||||||
<string name="icon_pack_choose_title">Velg en ikonpakke</string>
|
<string name="icon_pack_choose_title">Velg en ikonpakke</string>
|
||||||
@@ -347,8 +337,6 @@
|
|||||||
<string name="content_description_keyboard_close_fields">Lukk felt</string>
|
<string name="content_description_keyboard_close_fields">Lukk felt</string>
|
||||||
<string name="error_create_database_file">Kan ikke opprette database med dette passordet og nøkkelfilen.</string>
|
<string name="error_create_database_file">Kan ikke opprette database med dette passordet og nøkkelfilen.</string>
|
||||||
<string name="menu_advanced_unlock_settings">Avansert opplåsing</string>
|
<string name="menu_advanced_unlock_settings">Avansert opplåsing</string>
|
||||||
<string name="biometric_prompt_store_credential_title">Lagre biometrisk gjenkjennelse</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">Advarsel: Du vil fortsatt måtte huske hovedpassordet dersom du bruker biometrisk gjenkjenning.</string>
|
|
||||||
<string name="enable">Aktiver</string>
|
<string name="enable">Aktiver</string>
|
||||||
<string name="disable">Skru av</string>
|
<string name="disable">Skru av</string>
|
||||||
<string name="content_description_entry_icon">Oppføringsikon</string>
|
<string name="content_description_entry_icon">Oppføringsikon</string>
|
||||||
@@ -424,9 +412,17 @@
|
|||||||
<string name="lock_database_show_button_title">Vis låseknapp</string>
|
<string name="lock_database_show_button_title">Vis låseknapp</string>
|
||||||
<string name="error_label_exists">Denne etiketten finnes allerede.</string>
|
<string name="error_label_exists">Denne etiketten finnes allerede.</string>
|
||||||
<string name="validate">Bekreft</string>
|
<string name="validate">Bekreft</string>
|
||||||
<string name="biometric_prompt_extract_credential_title">Åpne database med biometrisk gjenkjenning</string>
|
|
||||||
<string name="warning_database_link_revoked">Tilgang til filen nektes av filbehandleren</string>
|
<string name="warning_database_link_revoked">Tilgang til filen nektes av filbehandleren</string>
|
||||||
<string name="warning_database_read_only">Innvilg skrivetilgang for å lagre databaseendringer</string>
|
<string name="warning_database_read_only">Innvilg skrivetilgang for å lagre databaseendringer</string>
|
||||||
<string name="hide_broken_locations_summary">Skjul ødelagte lenker i listen over nylige databaser</string>
|
<string name="hide_broken_locations_summary">Skjul ødelagte lenker i listen over nylige databaser</string>
|
||||||
<string name="hide_broken_locations_title">Skjul ødelagte databaselenker</string>
|
<string name="hide_broken_locations_title">Skjul ødelagte databaselenker</string>
|
||||||
|
<string name="autofill_ask_to_save_data_title">Spør om lagring av data</string>
|
||||||
|
<string name="advanced_unlock_scanning_error">Avansert opplåsningsfeil:</string>
|
||||||
|
<string name="warning_empty_keyfile">Det anbefales ikke å legge til en tom nøkkelfil.</string>
|
||||||
|
<string name="warning_sure_add_file">Legg til filen uansett\?</string>
|
||||||
|
<string name="registration_mode">Registreringsmodus</string>
|
||||||
|
<string name="save_mode">Lagringsmodus</string>
|
||||||
|
<string name="search_mode">Søkemodus</string>
|
||||||
|
<string name="error_field_name_already_exists">Feltnavnet finnes allerede.</string>
|
||||||
|
<string name="content_description_add_item">Legg til element</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -170,7 +170,6 @@
|
|||||||
<string name="menu_move">Verplaatsen</string>
|
<string name="menu_move">Verplaatsen</string>
|
||||||
<string name="menu_paste">Plakken</string>
|
<string name="menu_paste">Plakken</string>
|
||||||
<string name="menu_cancel">Annuleren</string>
|
<string name="menu_cancel">Annuleren</string>
|
||||||
<string name="menu_biometric_remove_key">Opgeslagen biometrische gegevens verwijderen</string>
|
|
||||||
<string name="menu_file_selection_read_only">Alleen-lezen</string>
|
<string name="menu_file_selection_read_only">Alleen-lezen</string>
|
||||||
<string name="menu_open_file_read_and_write">Lezen en schrijven</string>
|
<string name="menu_open_file_read_and_write">Lezen en schrijven</string>
|
||||||
<string name="protection">Beveiliging</string>
|
<string name="protection">Beveiliging</string>
|
||||||
@@ -198,12 +197,7 @@
|
|||||||
<string name="warning_password_encoding">Vermijd wachtwoordtekens buiten het tekstcoderingsformaat in het databasebestand (niet-herkende tekens worden geconverteerd naar dezelfde letter).</string>
|
<string name="warning_password_encoding">Vermijd wachtwoordtekens buiten het tekstcoderingsformaat in het databasebestand (niet-herkende tekens worden geconverteerd naar dezelfde letter).</string>
|
||||||
<string name="warning_empty_password">Doorgaan zonder beveiliging voor wachtwoordontgrendeling\?</string>
|
<string name="warning_empty_password">Doorgaan zonder beveiliging voor wachtwoordontgrendeling\?</string>
|
||||||
<string name="warning_no_encryption_key">Doorgaan zonder coderingssleutel\?</string>
|
<string name="warning_no_encryption_key">Doorgaan zonder coderingssleutel\?</string>
|
||||||
<string name="open_biometric_prompt_unlock_database">Biometrische herkenning gebruiken om de database te ontgrendelen</string>
|
|
||||||
<string name="encrypted_value_stored">Versleuteld wachtwoord is opgeslagen</string>
|
<string name="encrypted_value_stored">Versleuteld wachtwoord is opgeslagen</string>
|
||||||
<string name="biometric_invalid_key">Kan de biometrische gegevens niet lezen. Verwijder deze en herhaal de procedure voor biometrische herkenning.</string>
|
|
||||||
<string name="biometric_not_recognized">Biometrie niet herkend</string>
|
|
||||||
<string name="biometric_scanning_error">Probleem met biometrie: %1$s</string>
|
|
||||||
<string name="open_biometric_prompt_store_credential">Biometrische herkenning gebruiken om wachtwoorden op te slaan</string>
|
|
||||||
<string name="no_credentials_stored">Deze database heeft nog geen opgeslagen gegevens.</string>
|
<string name="no_credentials_stored">Deze database heeft nog geen opgeslagen gegevens.</string>
|
||||||
<string name="database_history">Geschiedenis</string>
|
<string name="database_history">Geschiedenis</string>
|
||||||
<string name="menu_appearance_settings">Uiterlijk</string>
|
<string name="menu_appearance_settings">Uiterlijk</string>
|
||||||
@@ -229,7 +223,6 @@
|
|||||||
<string name="biometric_unlock_enable_summary">Gebruik biometrische herkenning om de database te openen</string>
|
<string name="biometric_unlock_enable_summary">Gebruik biometrische herkenning om de database te openen</string>
|
||||||
<string name="biometric_delete_all_key_title">Coderingssleutels verwijderen</string>
|
<string name="biometric_delete_all_key_title">Coderingssleutels verwijderen</string>
|
||||||
<string name="biometric_delete_all_key_summary">Alle sleutels voor biometrische herkenning verwijderen</string>
|
<string name="biometric_delete_all_key_summary">Alle sleutels voor biometrische herkenning verwijderen</string>
|
||||||
<string name="biometric_delete_all_key_warning">Alle coderingssleutels voor biometrische herkenning verwijderen\?</string>
|
|
||||||
<string name="unavailable_feature_text">Kan deze functie niet starten.</string>
|
<string name="unavailable_feature_text">Kan deze functie niet starten.</string>
|
||||||
<string name="unavailable_feature_version">Het apparaat draait op Android %1$s, maar %2$s of hoger is vereist.</string>
|
<string name="unavailable_feature_version">Het apparaat draait op Android %1$s, maar %2$s of hoger is vereist.</string>
|
||||||
<string name="unavailable_feature_hardware">De bijbehorende hardware werd niet gevonden.</string>
|
<string name="unavailable_feature_hardware">De bijbehorende hardware werd niet gevonden.</string>
|
||||||
@@ -272,8 +265,6 @@
|
|||||||
\nGroepen (~mappen) organiseren de items in je database.</string>
|
\nGroepen (~mappen) organiseren de items in je database.</string>
|
||||||
<string name="education_search_title">Doorzoek al je items</string>
|
<string name="education_search_title">Doorzoek al je items</string>
|
||||||
<string name="education_search_summary">Doorzoek items op titel, gebruikersnaam of andere velden om wachtwoorden te vinden.</string>
|
<string name="education_search_summary">Doorzoek items op titel, gebruikersnaam of andere velden om wachtwoorden te vinden.</string>
|
||||||
<string name="education_biometric_title">Biometrische database -ontgrendeling</string>
|
|
||||||
<string name="education_biometric_summary">Koppel je wachtwoord aan je biometrie om de database snel te ontgrendelen.</string>
|
|
||||||
<string name="education_entry_edit_title">Item bewerken</string>
|
<string name="education_entry_edit_title">Item bewerken</string>
|
||||||
<string name="education_entry_edit_summary">Bewerk het item met aangepaste velden. Referenties kunnen worden toegevoegd tussen velden van verschillende items.</string>
|
<string name="education_entry_edit_summary">Bewerk het item met aangepaste velden. Referenties kunnen worden toegevoegd tussen velden van verschillende items.</string>
|
||||||
<string name="education_generate_password_title">Genereer een sterk wachtwoord</string>
|
<string name="education_generate_password_title">Genereer een sterk wachtwoord</string>
|
||||||
@@ -311,7 +302,6 @@
|
|||||||
<string name="contribute">Bijdragen</string>
|
<string name="contribute">Bijdragen</string>
|
||||||
<string name="encryption_chacha20">ChaCha20</string>
|
<string name="encryption_chacha20">ChaCha20</string>
|
||||||
<string name="kdf_AES">AES</string>
|
<string name="kdf_AES">AES</string>
|
||||||
<string name="kdf_Argon2">Argon2</string>
|
|
||||||
<string name="style_choose_title">App-thema</string>
|
<string name="style_choose_title">App-thema</string>
|
||||||
<string name="style_choose_summary">Thema gebruikt in de app</string>
|
<string name="style_choose_summary">Thema gebruikt in de app</string>
|
||||||
<string name="icon_pack_choose_title">Pictogrammenverzameling</string>
|
<string name="icon_pack_choose_title">Pictogrammenverzameling</string>
|
||||||
@@ -370,10 +360,6 @@
|
|||||||
<string name="content_description_keyboard_close_fields">Velden sluiten</string>
|
<string name="content_description_keyboard_close_fields">Velden sluiten</string>
|
||||||
<string name="error_create_database_file">Kan geen database aanmaken met dit wachtwoord en sleutelbestand.</string>
|
<string name="error_create_database_file">Kan geen database aanmaken met dit wachtwoord en sleutelbestand.</string>
|
||||||
<string name="menu_advanced_unlock_settings">Geavanceerd ontgrendelen</string>
|
<string name="menu_advanced_unlock_settings">Geavanceerd ontgrendelen</string>
|
||||||
<string name="biometric_prompt_store_credential_title">Biometrische herkenning opslaan</string>
|
|
||||||
<string name="biometric_prompt_store_credential_message">Waarschuwing: Je moet nog steeds je hoofdwachtwoord onthouden als je biometrische herkenning gebruikt.</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_title">Database openen met biometrische herkenning</string>
|
|
||||||
<string name="biometric_prompt_extract_credential_message">Database-referenties uitpakken met biometrische herkenning</string>
|
|
||||||
<string name="biometric">Biometrie</string>
|
<string name="biometric">Biometrie</string>
|
||||||
<string name="biometric_auto_open_prompt_title">Automatisch om biometrie vragen</string>
|
<string name="biometric_auto_open_prompt_title">Automatisch om biometrie vragen</string>
|
||||||
<string name="biometric_auto_open_prompt_summary">Automatisch om biometrie vragen als een database hiervoor is ingesteld</string>
|
<string name="biometric_auto_open_prompt_summary">Automatisch om biometrie vragen als een database hiervoor is ingesteld</string>
|
||||||
@@ -443,7 +429,6 @@
|
|||||||
<string name="lock_database_show_button_summary">Geeft de vergrendelknop weer in de gebruikersinterface</string>
|
<string name="lock_database_show_button_summary">Geeft de vergrendelknop weer in de gebruikersinterface</string>
|
||||||
<string name="lock_database_show_button_title">Vergrendelknop weergeven</string>
|
<string name="lock_database_show_button_title">Vergrendelknop weergeven</string>
|
||||||
<string name="autofill_preference_title">Instellingen voor automatisch aanvullen</string>
|
<string name="autofill_preference_title">Instellingen voor automatisch aanvullen</string>
|
||||||
<string name="credential_before_click_biometric_button">Voer het wachtwoord in en klik vervolgens op de knop \"Biometrie\".</string>
|
|
||||||
<string name="keystore_not_accessible">De sleutelopslag is niet correct geïnitialiseerd.</string>
|
<string name="keystore_not_accessible">De sleutelopslag is niet correct geïnitialiseerd.</string>
|
||||||
<string name="warning_permanently_delete_nodes">Geselecteerde knooppunten definitief verwijderen\?</string>
|
<string name="warning_permanently_delete_nodes">Geselecteerde knooppunten definitief verwijderen\?</string>
|
||||||
<string name="warning_database_link_revoked">Toegang tot het bestand ingetrokken door bestandsbeheer</string>
|
<string name="warning_database_link_revoked">Toegang tot het bestand ingetrokken door bestandsbeheer</string>
|
||||||
@@ -506,4 +491,26 @@
|
|||||||
<string name="data">Gegevens</string>
|
<string name="data">Gegevens</string>
|
||||||
<string name="database_data_remove_unlinked_attachments_title">Niet-gekoppelde gegevens verwijderen</string>
|
<string name="database_data_remove_unlinked_attachments_title">Niet-gekoppelde gegevens verwijderen</string>
|
||||||
<string name="database_data_remove_unlinked_attachments_summary">Verwijdert bijlagen die in de database staan, maar niet aan een item zijn gekoppeld</string>
|
<string name="database_data_remove_unlinked_attachments_summary">Verwijdert bijlagen die in de database staan, maar niet aan een item zijn gekoppeld</string>
|
||||||
|
<string name="show_uuid_summary">Geeft de UUID weer die aan een item is gekoppeld</string>
|
||||||
|
<string name="show_uuid_title">UUID tonen</string>
|
||||||
|
<string name="autofill_read_only_save">Het opslaan van gegevens is niet toegestaan voor een database die is geopend als alleen-lezen.</string>
|
||||||
|
<string name="autofill_ask_to_save_data_summary">Vraag om gegevens op te slaan wanneer een formulier is gevalideerd</string>
|
||||||
|
<string name="autofill_ask_to_save_data_title">Vragen om gegevens op te slaan</string>
|
||||||
|
<string name="autofill_save_search_info_summary">Probeer zoekinformatie op te slaan bij u een handmatige invoerselectie</string>
|
||||||
|
<string name="autofill_save_search_info_title">Zoekinformatie opslaan</string>
|
||||||
|
<string name="autofill_close_database_summary">Sluit de database na een selectie voor automatisch aanvullen</string>
|
||||||
|
<string name="autofill_close_database_title">Database sluiten</string>
|
||||||
|
<string name="keyboard_previous_lock_summary">Schakel na het vergrendelen van de database automatisch terug naar het vorige toetsenbord</string>
|
||||||
|
<string name="keyboard_previous_lock_title">Database vergrendelen</string>
|
||||||
|
<string name="keyboard_save_search_info_summary">Probeer gedeelde informatie op te slaan bij een handmatige invoerselectie</string>
|
||||||
|
<string name="keyboard_save_search_info_title">Gedeelde info opslaan</string>
|
||||||
|
<string name="notification">Melding</string>
|
||||||
|
<string name="crypto_object_not_initialized">Kan crypto-object niet ophalen.</string>
|
||||||
|
<string name="biometric_security_update_required">Biometrische beveiligingsupdate vereist.</string>
|
||||||
|
<string name="configure_biometric">Geen biometrische gegevens of apparaatgegevens geregistreerd.</string>
|
||||||
|
<string name="warning_empty_recycle_bin">Alles definitief uit de prullenbak verwijderen\?</string>
|
||||||
|
<string name="registration_mode">Registratiemodus</string>
|
||||||
|
<string name="save_mode">Veilige modus</string>
|
||||||
|
<string name="search_mode">Zoekmodus</string>
|
||||||
|
<string name="error_registration_read_only">Het opslaan van een nieuw item is niet toegestaan in een alleen-lezen database</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
<string name="add_group">Legg til gruppe</string>
|
<string name="add_group">Legg til gruppe</string>
|
||||||
<string name="encryption_algorithm">Encryption algorithm</string>
|
<string name="encryption_algorithm">Encryption algorithm</string>
|
||||||
<string name="app_timeout">Programtidsavbrot</string>
|
<string name="app_timeout">Programtidsavbrot</string>
|
||||||
<string name="app_timeout_summary">Idle time before locking the database</string>
|
<string name="app_timeout_summary"></string>
|
||||||
<string name="application">App</string>
|
<string name="application">App</string>
|
||||||
<string name="menu_app_settings">Programinnstillingar</string>
|
<string name="menu_app_settings">Programinnstillingar</string>
|
||||||
<string name="brackets">Parentesar</string>
|
<string name="brackets">Parentesar</string>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user