mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-10-01 01:26:01 -04:00
Release 2.2.1
- Corrected multiple snap issues [#934, #1011] - Corrected multiple custom icon issues [#708, #719, #994] - Corrected multiple Yubikey issues [#880] - Fixed single instance preventing load on occasion [#997] - Keep entry history when merging databases [#970] - Prevent data loss if passwords were mismatched [#1007] - Fixed crash after merge [#941] - Added configurable auto-type default delay [#703] - Unlock database dialog window comes to front [#663] - Translation and compiling fixes
This commit is contained in:
commit
2bce9c8add
@ -1,6 +1,8 @@
|
||||
language: cpp
|
||||
sudo: required
|
||||
dist: trusty
|
||||
# FIXME : remove when (https://github.com/google/sanitizers/issues/837) is resolved.
|
||||
group: deprecated-2017Q3
|
||||
services: [docker]
|
||||
|
||||
os:
|
||||
|
@ -72,7 +72,7 @@ get_icon
|
||||
cat << EOF > ./usr/bin/keepassxc_env
|
||||
#!/usr/bin/env bash
|
||||
#export QT_QPA_PLATFORMTHEME=gtk2
|
||||
export LD_LIBRARY_PATH="../opt/qt58/lib:\${LD_LIBRARY_PATH}"
|
||||
export LD_LIBRARY_PATH="..$(dirname ${QT_PLUGIN_PATH})/lib:\${LD_LIBRARY_PATH}"
|
||||
export QT_PLUGIN_PATH="..${QT_PLUGIN_PATH}"
|
||||
|
||||
# unset XDG_DATA_DIRS to make tray icon work in Ubuntu Unity
|
||||
|
14
CHANGELOG
14
CHANGELOG
@ -1,3 +1,17 @@
|
||||
2.2.1 (2017-10-01)
|
||||
=========================
|
||||
|
||||
- Corrected multiple snap issues [#934, #1011]
|
||||
- Corrected multiple custom icon issues [#708, #719, #994]
|
||||
- Corrected multiple Yubikey issues [#880]
|
||||
- Fixed single instance preventing load on occasion [#997]
|
||||
- Keep entry history when merging databases [#970]
|
||||
- Prevent data loss if passwords were mismatched [#1007]
|
||||
- Fixed crash after merge [#941]
|
||||
- Added configurable auto-type default delay [#703]
|
||||
- Unlock database dialog window comes to front [#663]
|
||||
- Translation and compiling fixes
|
||||
|
||||
2.2.0 (2017-06-23)
|
||||
=========================
|
||||
|
||||
|
@ -22,7 +22,7 @@ endif()
|
||||
|
||||
project(KeePassXC)
|
||||
|
||||
cmake_minimum_required(VERSION 2.8.12)
|
||||
cmake_minimum_required(VERSION 3.1.0)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
||||
@ -49,7 +49,7 @@ set(CMAKE_AUTOUIC ON)
|
||||
|
||||
set(KEEPASSXC_VERSION_MAJOR "2")
|
||||
set(KEEPASSXC_VERSION_MINOR "2")
|
||||
set(KEEPASSXC_VERSION_PATCH "0")
|
||||
set(KEEPASSXC_VERSION_PATCH "1")
|
||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION_MAJOR}.${KEEPASSXC_VERSION_MINOR}.${KEEPASSXC_VERSION_PATCH}")
|
||||
|
||||
if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
||||
@ -225,6 +225,8 @@ find_package(Gcrypt 1.6.0 REQUIRED)
|
||||
|
||||
find_package(ZLIB REQUIRED)
|
||||
|
||||
set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
|
||||
|
||||
check_cxx_source_compiles("
|
||||
#include <zlib.h>
|
||||
|
||||
|
20
Dockerfile
20
Dockerfile
@ -21,7 +21,13 @@ RUN set -x \
|
||||
&& apt-get install --yes software-properties-common
|
||||
|
||||
RUN set -x \
|
||||
&& add-apt-repository --yes ppa:beineri/opt-qt58-trusty
|
||||
&& add-apt-repository ppa:george-edison55/cmake-3.x
|
||||
|
||||
ENV QT_VERSION=qt59
|
||||
|
||||
RUN set -x \
|
||||
&& add-apt-repository --yes ppa:beineri/opt-${QT_VERSION}-trusty
|
||||
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get update \
|
||||
@ -29,9 +35,9 @@ RUN set -x \
|
||||
g++ \
|
||||
cmake \
|
||||
libgcrypt20-dev \
|
||||
qt58base \
|
||||
qt58tools \
|
||||
qt58x11extras \
|
||||
${QT_VERSION}base \
|
||||
${QT_VERSION}tools \
|
||||
${QT_VERSION}x11extras \
|
||||
libxi-dev \
|
||||
libxtst-dev \
|
||||
zlib1g-dev \
|
||||
@ -50,7 +56,7 @@ VOLUME /keepassxc/src
|
||||
VOLUME /keepassxc/out
|
||||
WORKDIR /keepassxc
|
||||
|
||||
ENV CMAKE_PREFIX_PATH=/opt/qt58/lib/cmake
|
||||
ENV LD_LIBRARY_PATH=/opt/qt58/lib
|
||||
ENV CMAKE_PREFIX_PATH=/opt/${QT_VERSION}/lib/cmake
|
||||
ENV LD_LIBRARY_PATH=/opt/${QT_VERSION}/lib
|
||||
RUN set -x \
|
||||
&& echo /opt/qt58/lib > /etc/ld.so.conf.d/qt58.conf
|
||||
&& echo /opt/${QT_VERSION}/lib > /etc/ld.so.conf.d/${QT_VERSION}.conf
|
||||
|
201
LICENSE.APACHE-2.0
Normal file
201
LICENSE.APACHE-2.0
Normal file
@ -0,0 +1,201 @@
|
||||
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.
|
@ -525,8 +525,7 @@ build() {
|
||||
done
|
||||
|
||||
init
|
||||
|
||||
performChecks
|
||||
checkWorkingTreeClean
|
||||
|
||||
OUTPUT_DIR="$(realpath "$OUTPUT_DIR")"
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -3,129 +3,94 @@
|
||||
<name>AboutDialog</name>
|
||||
<message>
|
||||
<source>About KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Om KeePassXC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About</source>
|
||||
<translation>Om</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues"><span style="text-decoration: underline; color:#0000ff;">https://github.com</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head><style>li {font-size: 10pt}</style></head><body><p><span style=" font-size:10pt;">Project Maintainers:</span></p><ul><li>droidmonkey</li><li>phoerious</li><li>TheZ3ro</li><li>louib</li><li>Weslly</li><li>debfx (KeePassX)</li></ul></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contributors</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><body>
|
||||
<p style="font-size:x-large; font-weight:600;">Code:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt">debfx (KeePassX)</li>
|
||||
<li style="font-size:10pt">BlueIce (KeePassX)</li>
|
||||
<li style="font-size:10pt">droidmonkey</li>
|
||||
<li style="font-size:10pt">phoerious</li>
|
||||
<li style="font-size:10pt">TheZ3ro</li>
|
||||
<li style="font-size:10pt">louib</li>
|
||||
<li style="font-size:10pt">weslly</li>
|
||||
<li style="font-size:10pt">keithbennett (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">Typz (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">denk-mal (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">kylemanna (YubiKey)</li>
|
||||
<li style="font-size:10pt">seatedscribe (CSV Importer)</li>
|
||||
<li style="font-size:10pt">pgalves (Inline Messages)</li>
|
||||
</ul>
|
||||
<p style="font-size:x-large; font-weight:600;">Translations:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Chinese:</span> Biggulu, ligyxy, BestSteve</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Czech:</span> pavelb, JosefVitu</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Dutch:</span> Vistaus, KnooL, apie</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Finnish:</span> MawKKe</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">French:</span> Scrat15, frgnca, gilbsgilbs, gtalbot, iannick, kyodev, logut</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">German:</span> Calyrx, DavidHamburg, antsas, codejunky, jensrutschmann, montilo, omnisome4, origin_de, pcrcoding, phoerious, rgloor, vlenzer</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Greek:</span> nplatis</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Italian:</span> TheZ3ro, FranzMari, Mte90, tosky</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Kazakh:</span> sotrud_nik</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Lithuanian:</span> Moo</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Polish:</span> konradmb, mrerexx</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Portuguese: </span>vitor895, weslly, American_Jesus, mihai.ile</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Russian:</span> vsvyatski, KekcuHa, wkill95</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Spanish:</span> EdwardNavarro, antifaz, piegope, pquin, vsvyatski</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Swedish:</span> henziger</li>
|
||||
</ul>
|
||||
</body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p align="center"><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">See Contributions on GitHub</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Bidragsydere</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug Info</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Include the following information whenever you report a bug:</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fejlsøgningsinformation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kopier til udklipsholder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version %1
|
||||
</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Version %1
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Revision: %1</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Revision: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Libraries:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Biblioteker:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Operating system: %1
|
||||
CPU architecture: %2
|
||||
Kernel: %3 %4</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Operativsystem: %1
|
||||
CPU-arkitektur: %2
|
||||
Kerne: %3 %4</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enabled extensions:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Aktiverede udvidelser:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a></source>
|
||||
<translation>Rapportér fejl på: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation>KeePassXC distribueres under betingelserne i GNU General Public License (GPL) version 2 eller (efter eget valg) version 3.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Project Maintainers:</source>
|
||||
<translation>Projektet vedligeholdes af:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">See Contributions on GitHub</a></source>
|
||||
<translation><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">Se bidrag på GitHub</a></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include the following information whenever you report a bug:</source>
|
||||
<translation>Inkludér følgende information når du indrapporterer en fejl:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AccessControlDialog</name>
|
||||
<message>
|
||||
<source>Remember this decision</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Husk dette valg</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Allow</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Tillad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Deny</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Afvis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has requested access to passwords for the following item(s).
|
||||
Please select whether you want to allow access.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1 har forespurgt adgang til kodeord tilhørende disse element(er).
|
||||
Vælg venligst hvorvidt du vil tillade denne adgang.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassXC HTTP Confirm Access</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>KeePassXC HTTP Bekræft Adgang</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -136,7 +101,7 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type - KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Auto-Indsæt - KeePassXC</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -162,7 +127,7 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type - KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Auto-Indsæt - KeePassXC</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -231,57 +196,57 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Refresh</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Genopfrisk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty password</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Tomt kodeord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Changing master key failed: no YubiKey inserted.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kunne ikke skifte hovednøgle: ingen YubiKey indsat.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CloneDialog</name>
|
||||
<message>
|
||||
<source>Clone Options</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Copy' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kloningsindstillinger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replace username and password with references</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Udskift brugernavn og kodeord med referencer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy history</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kopier historik</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Clone' to title</source>
|
||||
<translation>Tilføj ' - Clone' til titel</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CsvImportWidget</name>
|
||||
<message>
|
||||
<source>Import CSV fields</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Importér CSV-felter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>filename</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>filnavn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>size, rows, columns</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>størrelse, rækker, kolonner</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Encoding</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Encoding</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Codec</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Codec</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Text is qualified by</source>
|
||||
@ -289,11 +254,11 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Fields are separated by</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Felter separeres med</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comments start with</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kommentarer starter med</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>First record has field names</source>
|
||||
@ -309,39 +274,39 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Preview</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Forhåndsvisning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Column layout</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kolonnelayout</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not present in CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ikke til stede i CSV-fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty fieldname </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Tomt feltnavn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>column </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>kolonne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Imported from CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Importeret fra CSV-fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Original data: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Original data:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error(s) detected in CSV file !</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fejl detekteret i CSV-fil !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> more messages skipped]</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>flere beskeder blev sprunget over]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@ -357,7 +322,7 @@ Please select whether you want to allow access.</source>
|
||||
<name>CsvImportWizard</name>
|
||||
<message>
|
||||
<source>Import CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Importér CSV-fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@ -372,15 +337,15 @@ Please select whether you want to allow access.</source>
|
||||
<name>CsvParserModel</name>
|
||||
<message>
|
||||
<source> byte, </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>byte,</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> rows, </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>rækker,</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> columns</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>kolonner</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -423,7 +388,7 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Refresh</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Genopfrisk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Challenge Response:</source>
|
||||
@ -503,19 +468,19 @@ Du kan gemme den nu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use recycle bin</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Brug papirkurv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>AES: 256 Bit (default)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>AES: 256 Bit (standard)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Twofish: 256 Bit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Twofish: 256 Bit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Algorithm:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Algoritme:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -630,38 +595,41 @@ Kassér ændringer og luk alligevel?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Merge database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Flet database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to save as is locked by another instance of KeePassXC.
|
||||
Do you want to save it anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Databasen som du prøver at gemme er låst af en anden instans af KeePassXC.
|
||||
Ønsker du alligevel at gemme den?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Passwords</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kodeord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database already opened</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Database er allerede åben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassXC.
|
||||
|
||||
Do you want to open it anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Databasen som du prøver at gemme er låst af en anden instans af KeePassXC.
|
||||
|
||||
Ønsker du alligevel at åbne den?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open read-only</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Åbn skrivebeskyttet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File opened in read only mode.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fil åbnet i skrivebeskyttet tilstand</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Åbn CSV-fil</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -708,7 +676,7 @@ Do you want to open it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Flyt post til papirkurven?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
@ -716,7 +684,7 @@ Do you want to open it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Searching...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Søger...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No current database.</source>
|
||||
@ -1091,10 +1059,6 @@ Do you want to open it anyway?</source>
|
||||
<source>Select Image</source>
|
||||
<translation>Vælg Billede</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fejl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download favicon</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1123,6 +1087,14 @@ Do you want to open it anyway?</source>
|
||||
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hint: You can enable Google as a fallback under Tools>Settings>Security</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom icon already exists</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@ -1330,17 +1302,14 @@ Do you want to open it anyway?</source>
|
||||
<translation>Kan ikke beregne hovednøgle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Den valgte fil er en gammel KeePass 1 databasefil (.kdb).
|
||||
|
||||
Du kan importere den ved at klikke på Database > 'Importér KeePass 1 database'.
|
||||
Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den importerede database med den gamle KeePassX 0.4 version.</translation>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database...'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@ -1362,6 +1331,10 @@ Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den impo
|
||||
<source>Another instance of KeePassXC is already running.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Existing single-instance lock file is invalid. Launching new instance.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
@ -1417,10 +1390,6 @@ Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den impo
|
||||
<source>&Recent databases</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>He&lp</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>E&ntries</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1445,10 +1414,6 @@ Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den impo
|
||||
<source>&About</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Save database</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1489,14 +1454,6 @@ Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den impo
|
||||
<source>&Delete group</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Database settings</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1509,10 +1466,6 @@ Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den impo
|
||||
<source>Timed one-time password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Setup TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1561,14 +1514,6 @@ Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den impo
|
||||
<source>&Notes</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password Generator</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1589,14 +1534,6 @@ Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den impo
|
||||
<source>&Tools</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database</source>
|
||||
<translation>Importér KeePass 1 database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty recycle bin</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1613,6 +1550,42 @@ Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den impo
|
||||
<source>Please touch the button on your YubiKey!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Help</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set up TOTP...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OptionDialog</name>
|
||||
@ -2159,6 +2132,18 @@ give it a unique name to identify and accept it.</source>
|
||||
<source>Always ask before performing Auto-Type</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type delay</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source> ms</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start only a single instance of KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@ -2198,6 +2183,14 @@ give it a unique name to identify and accept it.</source>
|
||||
<source>Lock databases when session is locked or lid is closed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Privacy</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Google as fallback for downloading website icons</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SetupTotpDialog</name>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -11,73 +11,14 @@
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues"><span style="text-decoration: underline; color:#0000ff;">https://github.com</span></a></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head><style>li {font-size: 10pt}</style></head><body><p><span style=" font-size:10pt;">Project Maintainers:</span></p><ul><li>droidmonkey</li><li>phoerious</li><li>TheZ3ro</li><li>louib</li><li>Weslly</li><li>debfx (KeePassX)</li></ul></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contributors</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><body>
|
||||
<p style="font-size:x-large; font-weight:600;">Code:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt">debfx (KeePassX)</li>
|
||||
<li style="font-size:10pt">BlueIce (KeePassX)</li>
|
||||
<li style="font-size:10pt">droidmonkey</li>
|
||||
<li style="font-size:10pt">phoerious</li>
|
||||
<li style="font-size:10pt">TheZ3ro</li>
|
||||
<li style="font-size:10pt">louib</li>
|
||||
<li style="font-size:10pt">weslly</li>
|
||||
<li style="font-size:10pt">keithbennett (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">Typz (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">denk-mal (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">kylemanna (YubiKey)</li>
|
||||
<li style="font-size:10pt">seatedscribe (CSV Importer)</li>
|
||||
<li style="font-size:10pt">pgalves (Inline Messages)</li>
|
||||
</ul>
|
||||
<p style="font-size:x-large; font-weight:600;">Translations:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Chinese:</span> Biggulu, ligyxy, BestSteve</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Czech:</span> pavelb, JosefVitu</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Dutch:</span> Vistaus, KnooL, apie</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Finnish:</span> MawKKe</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">French:</span> Scrat15, frgnca, gilbsgilbs, gtalbot, iannick, kyodev, logut</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">German:</span> Calyrx, DavidHamburg, antsas, codejunky, jensrutschmann, montilo, omnisome4, origin_de, pcrcoding, phoerious, rgloor, vlenzer</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Greek:</span> nplatis</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Italian:</span> TheZ3ro, FranzMari, Mte90, tosky</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Kazakh:</span> sotrud_nik</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Lithuanian:</span> Moo</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Polish:</span> konradmb, mrerexx</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Portuguese: </span>vitor895, weslly, American_Jesus, mihai.ile</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Russian:</span> vsvyatski, KekcuHa, wkill95</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Spanish:</span> EdwardNavarro, antifaz, piegope, pquin, vsvyatski</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Swedish:</span> henziger</li>
|
||||
</ul>
|
||||
</body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p align="center"><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">See Contributions on GitHub</span></a></p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug Info</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Include the following information whenever you report a bug:</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -105,6 +46,26 @@ Kernel: %3 %4</source>
|
||||
<source>Enabled extensions:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Project Maintainers:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">See Contributions on GitHub</a></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include the following information whenever you report a bug:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AccessControlDialog</name>
|
||||
@ -249,10 +210,6 @@ Please select whether you want to allow access.</source>
|
||||
<source>Clone Options</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Copy' to title</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replace username and password with references</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -261,6 +218,10 @@ Please select whether you want to allow access.</source>
|
||||
<source>Copy history</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Clone' to title</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CsvImportWidget</name>
|
||||
@ -1094,10 +1055,6 @@ Do you want to open it anyway?</source>
|
||||
<source>Select Image</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download favicon</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1126,6 +1083,14 @@ Do you want to open it anyway?</source>
|
||||
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hint: You can enable Google as a fallback under Tools>Settings>Security</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom icon already exists</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@ -1333,14 +1298,14 @@ Do you want to open it anyway?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database...'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -1362,6 +1327,10 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>Another instance of KeePassXC is already running.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Existing single-instance lock file is invalid. Launching new instance.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
@ -1417,10 +1386,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Recent databases</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>He&lp</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>E&ntries</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1445,10 +1410,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Save database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1489,14 +1450,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Delete group</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Database settings</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1509,10 +1462,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>Timed one-time password</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Setup TOTP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &TOTP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1561,14 +1510,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Notes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password Generator</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1589,14 +1530,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Tools</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty recycle bin</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1613,6 +1546,42 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>Please touch the button on your YubiKey!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Help</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set up TOTP...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OptionDialog</name>
|
||||
@ -2159,6 +2128,18 @@ give it a unique name to identify and accept it.</source>
|
||||
<source>Always ask before performing Auto-Type</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type delay</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> ms</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start only a single instance of KeePassXC</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@ -2198,6 +2179,14 @@ give it a unique name to identify and accept it.</source>
|
||||
<source>Lock databases when session is locked or lid is closed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Privacy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Google as fallback for downloading website icons</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SetupTotpDialog</name>
|
||||
|
File diff suppressed because it is too large
Load Diff
2369
share/translations/keepassx_eu.ts
Normal file
2369
share/translations/keepassx_eu.ts
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
2392
share/translations/keepassx_hu.ts
Normal file
2392
share/translations/keepassx_hu.ts
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -9,73 +9,14 @@
|
||||
<source>About</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues"><span style="text-decoration: underline; color:#0000ff;">https://github.com</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head><style>li {font-size: 10pt}</style></head><body><p><span style=" font-size:10pt;">Project Maintainers:</span></p><ul><li>droidmonkey</li><li>phoerious</li><li>TheZ3ro</li><li>louib</li><li>Weslly</li><li>debfx (KeePassX)</li></ul></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contributors</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><body>
|
||||
<p style="font-size:x-large; font-weight:600;">Code:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt">debfx (KeePassX)</li>
|
||||
<li style="font-size:10pt">BlueIce (KeePassX)</li>
|
||||
<li style="font-size:10pt">droidmonkey</li>
|
||||
<li style="font-size:10pt">phoerious</li>
|
||||
<li style="font-size:10pt">TheZ3ro</li>
|
||||
<li style="font-size:10pt">louib</li>
|
||||
<li style="font-size:10pt">weslly</li>
|
||||
<li style="font-size:10pt">keithbennett (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">Typz (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">denk-mal (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">kylemanna (YubiKey)</li>
|
||||
<li style="font-size:10pt">seatedscribe (CSV Importer)</li>
|
||||
<li style="font-size:10pt">pgalves (Inline Messages)</li>
|
||||
</ul>
|
||||
<p style="font-size:x-large; font-weight:600;">Translations:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Chinese:</span> Biggulu, ligyxy, BestSteve</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Czech:</span> pavelb, JosefVitu</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Dutch:</span> Vistaus, KnooL, apie</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Finnish:</span> MawKKe</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">French:</span> Scrat15, frgnca, gilbsgilbs, gtalbot, iannick, kyodev, logut</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">German:</span> Calyrx, DavidHamburg, antsas, codejunky, jensrutschmann, montilo, omnisome4, origin_de, pcrcoding, phoerious, rgloor, vlenzer</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Greek:</span> nplatis</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Italian:</span> TheZ3ro, FranzMari, Mte90, tosky</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Kazakh:</span> sotrud_nik</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Lithuanian:</span> Moo</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Polish:</span> konradmb, mrerexx</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Portuguese: </span>vitor895, weslly, American_Jesus, mihai.ile</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Russian:</span> vsvyatski, KekcuHa, wkill95</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Spanish:</span> EdwardNavarro, antifaz, piegope, pquin, vsvyatski</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Swedish:</span> henziger</li>
|
||||
</ul>
|
||||
</body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p align="center"><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">See Contributions on GitHub</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug Info</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Include the following information whenever you report a bug:</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -103,6 +44,26 @@ Kernel: %3 %4</source>
|
||||
<source>Enabled extensions:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Project Maintainers:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">See Contributions on GitHub</a></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include the following information whenever you report a bug:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AccessControlDialog</name>
|
||||
@ -248,10 +209,6 @@ Please select whether you want to allow access.</source>
|
||||
<source>Clone Options</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Copy' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replace username and password with references</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -260,6 +217,10 @@ Please select whether you want to allow access.</source>
|
||||
<source>Copy history</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Clone' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CsvImportWidget</name>
|
||||
@ -1092,10 +1053,6 @@ Do you want to open it anyway?</source>
|
||||
<source>Select Image</source>
|
||||
<translation>Суретті таңдау</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Қате</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download favicon</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1124,6 +1081,14 @@ Do you want to open it anyway?</source>
|
||||
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hint: You can enable Google as a fallback under Tools>Settings>Security</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom icon already exists</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@ -1331,17 +1296,14 @@ Do you want to open it anyway?</source>
|
||||
<translation>Басты парольді есептеу мүмкін емес</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Таңдалған файл ескі KeePass 1 дерекқоры (.kdb) болып табылады.
|
||||
|
||||
Оны Дерекқор > 'KeePass 1 дерекқорын импорттау' арқылы импорттай аласыз.
|
||||
Бұл - бір жақты миграция. Одан кейін сіз импортталған дерекқорды ескі KeePassX 0.4 нұсқасымен аша алмайтын боласыз.</translation>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database...'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@ -1363,6 +1325,10 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>Another instance of KeePassXC is already running.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Existing single-instance lock file is invalid. Launching new instance.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
@ -1418,10 +1384,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Recent databases</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>He&lp</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>E&ntries</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1446,10 +1408,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&About</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Save database</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1490,14 +1448,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Delete group</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Database settings</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1510,10 +1460,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>Timed one-time password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Setup TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1562,14 +1508,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Notes</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password Generator</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1590,14 +1528,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Tools</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty recycle bin</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1614,6 +1544,42 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>Please touch the button on your YubiKey!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Help</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set up TOTP...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OptionDialog</name>
|
||||
@ -2160,6 +2126,18 @@ give it a unique name to identify and accept it.</source>
|
||||
<source>Always ask before performing Auto-Type</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type delay</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source> ms</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start only a single instance of KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@ -2199,6 +2177,14 @@ give it a unique name to identify and accept it.</source>
|
||||
<source>Lock databases when session is locked or lid is closed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Privacy</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Google as fallback for downloading website icons</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SetupTotpDialog</name>
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -9,73 +9,14 @@
|
||||
<source>About</source>
|
||||
<translation>Over</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues"><span style="text-decoration: underline; color:#0000ff;">https://github.com</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head><style>li {font-size: 10pt}</style></head><body><p><span style=" font-size:10pt;">Project Maintainers:</span></p><ul><li>droidmonkey</li><li>phoerious</li><li>TheZ3ro</li><li>louib</li><li>Weslly</li><li>debfx (KeePassX)</li></ul></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contributors</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><body>
|
||||
<p style="font-size:x-large; font-weight:600;">Code:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt">debfx (KeePassX)</li>
|
||||
<li style="font-size:10pt">BlueIce (KeePassX)</li>
|
||||
<li style="font-size:10pt">droidmonkey</li>
|
||||
<li style="font-size:10pt">phoerious</li>
|
||||
<li style="font-size:10pt">TheZ3ro</li>
|
||||
<li style="font-size:10pt">louib</li>
|
||||
<li style="font-size:10pt">weslly</li>
|
||||
<li style="font-size:10pt">keithbennett (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">Typz (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">denk-mal (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">kylemanna (YubiKey)</li>
|
||||
<li style="font-size:10pt">seatedscribe (CSV Importer)</li>
|
||||
<li style="font-size:10pt">pgalves (Inline Messages)</li>
|
||||
</ul>
|
||||
<p style="font-size:x-large; font-weight:600;">Translations:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Chinese:</span> Biggulu, ligyxy, BestSteve</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Czech:</span> pavelb, JosefVitu</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Dutch:</span> Vistaus, KnooL, apie</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Finnish:</span> MawKKe</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">French:</span> Scrat15, frgnca, gilbsgilbs, gtalbot, iannick, kyodev, logut</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">German:</span> Calyrx, DavidHamburg, antsas, codejunky, jensrutschmann, montilo, omnisome4, origin_de, pcrcoding, phoerious, rgloor, vlenzer</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Greek:</span> nplatis</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Italian:</span> TheZ3ro, FranzMari, Mte90, tosky</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Kazakh:</span> sotrud_nik</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Lithuanian:</span> Moo</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Polish:</span> konradmb, mrerexx</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Portuguese: </span>vitor895, weslly, American_Jesus, mihai.ile</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Russian:</span> vsvyatski, KekcuHa, wkill95</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Spanish:</span> EdwardNavarro, antifaz, piegope, pquin, vsvyatski</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Swedish:</span> henziger</li>
|
||||
</ul>
|
||||
</body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p align="center"><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">See Contributions on GitHub</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug Info</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Include the following information whenever you report a bug:</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -103,6 +44,26 @@ Kernel: %3 %4</source>
|
||||
<source>Enabled extensions:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation>KeePassXC wordt verspreid onder de voorwaarden van de GNU General Public License (GPL) versie 2 of (als u wenst) versie 3.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Project Maintainers:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">See Contributions on GitHub</a></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include the following information whenever you report a bug:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AccessControlDialog</name>
|
||||
@ -249,10 +210,6 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
|
||||
<source>Clone Options</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Copy' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replace username and password with references</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -261,6 +218,10 @@ Geef aan of u toegang wilt toestaan of niet.</translation>
|
||||
<source>Copy history</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Clone' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CsvImportWidget</name>
|
||||
@ -1095,10 +1056,6 @@ Wilt u toch doorgaan met openen?</translation>
|
||||
<source>Select Image</source>
|
||||
<translation>Kies afbeelding</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fout</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download favicon</source>
|
||||
<translation>Favicon downloaden</translation>
|
||||
@ -1127,6 +1084,14 @@ Wilt u toch doorgaan met openen?</translation>
|
||||
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hint: You can enable Google as a fallback under Tools>Settings>Security</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom icon already exists</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@ -1334,17 +1299,14 @@ Wilt u toch doorgaan met openen?</translation>
|
||||
<translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Het gekozen bestand is een oude KeePass 1 database (.kdb).
|
||||
|
||||
U kunt het importeren door te klikken op Database > 'KeePass 1 database importeren'.
|
||||
Deze actie is niet omkeerbaar. U kunt de geimporteerde database niet meer openen met KeePassX 0.4.</translation>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database...'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@ -1366,6 +1328,10 @@ Deze actie is niet omkeerbaar. U kunt de geimporteerde database niet meer openen
|
||||
<source>Another instance of KeePassXC is already running.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Existing single-instance lock file is invalid. Launching new instance.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
@ -1421,10 +1387,6 @@ Deze actie is niet omkeerbaar. U kunt de geimporteerde database niet meer openen
|
||||
<source>&Recent databases</source>
|
||||
<translation>&Recente databases</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>He&lp</source>
|
||||
<translation>He&lp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>E&ntries</source>
|
||||
<translation>Items</translation>
|
||||
@ -1449,10 +1411,6 @@ Deze actie is niet omkeerbaar. U kunt de geimporteerde database niet meer openen
|
||||
<source>&About</source>
|
||||
<translation>&Over</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database</source>
|
||||
<translation>&Open database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Save database</source>
|
||||
<translation>&Sla database op</translation>
|
||||
@ -1493,14 +1451,6 @@ Deze actie is niet omkeerbaar. U kunt de geimporteerde database niet meer openen
|
||||
<source>&Delete group</source>
|
||||
<translation>&Verwijder groep</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as</source>
|
||||
<translation>Database opslaan als</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key</source>
|
||||
<translation>Wijzig &hoofdsleutel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Database settings</source>
|
||||
<translation>&Database-instellingen</translation>
|
||||
@ -1513,10 +1463,6 @@ Deze actie is niet omkeerbaar. U kunt de geimporteerde database niet meer openen
|
||||
<source>Timed one-time password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Setup TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1565,14 +1511,6 @@ Deze actie is niet omkeerbaar. U kunt de geimporteerde database niet meer openen
|
||||
<source>&Notes</source>
|
||||
<translation>&Opmerkingen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file</source>
|
||||
<translation>&Naar CSV-bestand exporteren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database</source>
|
||||
<translation>Database repareren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password Generator</source>
|
||||
<translation>Wachtwoord generator</translation>
|
||||
@ -1593,14 +1531,6 @@ Deze actie is niet omkeerbaar. U kunt de geimporteerde database niet meer openen
|
||||
<source>&Tools</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database</source>
|
||||
<translation>Importeer Keepass 1-database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty recycle bin</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1617,6 +1547,42 @@ Deze actie is niet omkeerbaar. U kunt de geimporteerde database niet meer openen
|
||||
<source>Please touch the button on your YubiKey!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Help</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set up TOTP...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OptionDialog</name>
|
||||
@ -2167,6 +2133,18 @@ Geef het een unieke identificerende naam en accepteer de associate wanneer je de
|
||||
<source>Always ask before performing Auto-Type</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type delay</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source> ms</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start only a single instance of KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@ -2206,6 +2184,14 @@ Geef het een unieke identificerende naam en accepteer de associate wanneer je de
|
||||
<source>Lock databases when session is locked or lid is closed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Privacy</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Google as fallback for downloading website icons</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SetupTotpDialog</name>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -9,99 +9,63 @@
|
||||
<source>About</source>
|
||||
<translation>Sobre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues"><span style="text-decoration: underline; color:#0000ff;">https://github.com</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head><style>li {font-size: 10pt}</style></head><body><p><span style=" font-size:10pt;">Project Maintainers:</span></p><ul><li>droidmonkey</li><li>phoerious</li><li>TheZ3ro</li><li>louib</li><li>Weslly</li><li>debfx (KeePassX)</li></ul></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contributors</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><body>
|
||||
<p style="font-size:x-large; font-weight:600;">Code:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt">debfx (KeePassX)</li>
|
||||
<li style="font-size:10pt">BlueIce (KeePassX)</li>
|
||||
<li style="font-size:10pt">droidmonkey</li>
|
||||
<li style="font-size:10pt">phoerious</li>
|
||||
<li style="font-size:10pt">TheZ3ro</li>
|
||||
<li style="font-size:10pt">louib</li>
|
||||
<li style="font-size:10pt">weslly</li>
|
||||
<li style="font-size:10pt">keithbennett (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">Typz (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">denk-mal (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">kylemanna (YubiKey)</li>
|
||||
<li style="font-size:10pt">seatedscribe (CSV Importer)</li>
|
||||
<li style="font-size:10pt">pgalves (Inline Messages)</li>
|
||||
</ul>
|
||||
<p style="font-size:x-large; font-weight:600;">Translations:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Chinese:</span> Biggulu, ligyxy, BestSteve</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Czech:</span> pavelb, JosefVitu</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Dutch:</span> Vistaus, KnooL, apie</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Finnish:</span> MawKKe</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">French:</span> Scrat15, frgnca, gilbsgilbs, gtalbot, iannick, kyodev, logut</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">German:</span> Calyrx, DavidHamburg, antsas, codejunky, jensrutschmann, montilo, omnisome4, origin_de, pcrcoding, phoerious, rgloor, vlenzer</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Greek:</span> nplatis</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Italian:</span> TheZ3ro, FranzMari, Mte90, tosky</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Kazakh:</span> sotrud_nik</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Lithuanian:</span> Moo</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Polish:</span> konradmb, mrerexx</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Portuguese: </span>vitor895, weslly, American_Jesus, mihai.ile</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Russian:</span> vsvyatski, KekcuHa, wkill95</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Spanish:</span> EdwardNavarro, antifaz, piegope, pquin, vsvyatski</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Swedish:</span> henziger</li>
|
||||
</ul>
|
||||
</body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p align="center"><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">See Contributions on GitHub</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Colaboradores</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug Info</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Include the following information whenever you report a bug:</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Informações de Depuração</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Copiar para a área de transferência</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version %1
|
||||
</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Versão %1
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Revision: %1</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Revisão: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Libraries:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Bibliotecas:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Operating system: %1
|
||||
CPU architecture: %2
|
||||
Kernel: %3 %4</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Sistema operacional: %1
|
||||
Arquitetura da CPU: %2
|
||||
Kernel: %3 %4</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enabled extensions:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Extensões habilitadas:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a></source>
|
||||
<translation>Reporte erros em: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation>KeePassXC é distribuído nos termos da Licença Pública Geral (GPL), versão 2 ou (à sua escolha) versão 3, do GNU.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Project Maintainers:</source>
|
||||
<translation>Mantedores do Projeto:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">See Contributions on GitHub</a></source>
|
||||
<translation><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">Ver Colaborações no GitHub</a></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include the following information whenever you report a bug:</source>
|
||||
<translation>Inclua as informações abaixo quando reportar um erro:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -232,11 +196,11 @@ Selecione se deseja permitir o acesso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Refresh</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Atualizar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty password</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Senha vazia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Changing master key failed: no YubiKey inserted.</source>
|
||||
@ -247,18 +211,18 @@ Selecione se deseja permitir o acesso.</translation>
|
||||
<name>CloneDialog</name>
|
||||
<message>
|
||||
<source>Clone Options</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Copy' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Opções de Clonagem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replace username and password with references</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Substituir o usuário e senha com referências</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy history</source>
|
||||
<translation>Copiar histórico</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Clone' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@ -266,23 +230,23 @@ Selecione se deseja permitir o acesso.</translation>
|
||||
<name>CsvImportWidget</name>
|
||||
<message>
|
||||
<source>Import CSV fields</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Importar campos CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>filename</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>nome do arquivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>size, rows, columns</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>tamanho, linhas, colunas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Encoding</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Codificação</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Codec</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Codec</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Text is qualified by</source>
|
||||
@ -310,7 +274,7 @@ Selecione se deseja permitir o acesso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Preview</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Visualização</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Column layout</source>
|
||||
@ -326,7 +290,7 @@ Selecione se deseja permitir o acesso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>column </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>coluna</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Imported from CSV file</source>
|
||||
@ -334,7 +298,7 @@ Selecione se deseja permitir o acesso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Original data: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Dados originais:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error(s) detected in CSV file !</source>
|
||||
@ -358,7 +322,7 @@ Selecione se deseja permitir o acesso.</translation>
|
||||
<name>CsvImportWizard</name>
|
||||
<message>
|
||||
<source>Import CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Importar arquivo CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@ -381,7 +345,7 @@ Selecione se deseja permitir o acesso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> columns</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>colunas</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -424,7 +388,7 @@ Selecione se deseja permitir o acesso.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Refresh</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Atualizar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Challenge Response:</source>
|
||||
@ -772,7 +736,7 @@ Mesmo assim deseja salvá-la?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty recycle bin?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Esvaziar lixeira?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to permanently delete everything from your recycle bin?</source>
|
||||
@ -904,15 +868,15 @@ Mesmo assim deseja salvá-la?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit Name</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Editar Nome</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Protect</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Proteger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reveal</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Revelar</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -951,7 +915,7 @@ Mesmo assim deseja salvá-la?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Window Associations</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Associações de Janela</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1096,10 +1060,6 @@ Mesmo assim deseja salvá-la?</translation>
|
||||
<source>Select Image</source>
|
||||
<translation>Selecionar imagem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Erro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download favicon</source>
|
||||
<translation>Baixar favicon</translation>
|
||||
@ -1122,12 +1082,20 @@ Mesmo assim deseja salvá-la?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Confirm Delete</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Confirmar Exclusão</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hint: You can enable Google as a fallback under Tools>Settings>Security</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom icon already exists</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@ -1202,7 +1170,7 @@ Mesmo assim deseja salvá-la?</translation>
|
||||
<message>
|
||||
<source>Ref: </source>
|
||||
<comment>Reference abbreviation</comment>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ref:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1267,11 +1235,11 @@ Mesmo assim deseja salvá-la?</translation>
|
||||
<name>KMessageWidget</name>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fe&char</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close message</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fechar mensagem</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1335,17 +1303,14 @@ Mesmo assim deseja salvá-la?</translation>
|
||||
<translation>Não foi possível calcular a chave mestre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>O arquivo selecionado é um banco de dados antigo do KeePass 1 (.kdb).
|
||||
|
||||
Você pode importá-lo clicando em Banco de Dados > 'Importar banco de dados KeePass 1'.
|
||||
Esta é uma migração de uma via. Você não poderá abrir o banco de dados importado com a versão antiga do KeePassX 0.4.</translation>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database...'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@ -1367,6 +1332,10 @@ Esta é uma migração de uma via. Você não poderá abrir o banco de dados imp
|
||||
<source>Another instance of KeePassXC is already running.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Existing single-instance lock file is invalid. Launching new instance.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
@ -1422,10 +1391,6 @@ Esta é uma migração de uma via. Você não poderá abrir o banco de dados imp
|
||||
<source>&Recent databases</source>
|
||||
<translation>&Bancos de dados recentes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>He&lp</source>
|
||||
<translation>&Ajuda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>E&ntries</source>
|
||||
<translation>E&ntradas</translation>
|
||||
@ -1450,10 +1415,6 @@ Esta é uma migração de uma via. Você não poderá abrir o banco de dados imp
|
||||
<source>&About</source>
|
||||
<translation>&Sobre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database</source>
|
||||
<translation>&Abrir base de dados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Save database</source>
|
||||
<translation>&Salvar base de dados</translation>
|
||||
@ -1494,14 +1455,6 @@ Esta é uma migração de uma via. Você não poderá abrir o banco de dados imp
|
||||
<source>&Delete group</source>
|
||||
<translation>&Apagar grupo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as</source>
|
||||
<translation>Sal&var base de dados como</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key</source>
|
||||
<translation>Alterar chave &mestra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Database settings</source>
|
||||
<translation>&Definições da base de dados</translation>
|
||||
@ -1512,19 +1465,15 @@ Esta é uma migração de uma via. Você não poderá abrir o banco de dados imp
|
||||
</message>
|
||||
<message>
|
||||
<source>Timed one-time password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Setup TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Senha temporária de uso único</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Copiar &TOTP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Mostrar TOTP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Find</source>
|
||||
@ -1566,45 +1515,29 @@ Esta é uma migração de uma via. Você não poderá abrir o banco de dados imp
|
||||
<source>&Notes</source>
|
||||
<translation>&Notas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file</source>
|
||||
<translation>&Exportar para arquivo CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database</source>
|
||||
<translation>Re&parar banco de dados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password Generator</source>
|
||||
<translation>Gerador de Senha</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear history</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Limpar histórico</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Banco de &dados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Importar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Tools</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database</source>
|
||||
<translation>Importar banco de dados KeePass1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>&Ferramentas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty recycle bin</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Esvaziar lixeira</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Access error for config file %1</source>
|
||||
@ -1612,12 +1545,48 @@ Esta é uma migração de uma via. Você não poderá abrir o banco de dados imp
|
||||
</message>
|
||||
<message>
|
||||
<source>Quit KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fechar KeePassXC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Please touch the button on your YubiKey!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Help</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set up TOTP...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OptionDialog</name>
|
||||
@ -1705,7 +1674,7 @@ Usando porta padrão 19455.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable KeePassHTTP server</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Habilitar servidor KeePassHTTP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
|
||||
@ -1837,23 +1806,23 @@ Change them only if you know what you are doing.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Passphrase</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Senha</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wordlist:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Lista de palavras:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Word Count:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Número de Palavras:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Word Separator:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Separador de Palavras:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Copiar</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1909,7 +1878,7 @@ Change them only if you know what you are doing.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Browser Integration</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Integração com o Navegador</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
|
||||
@ -1917,11 +1886,11 @@ Change them only if you know what you are doing.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Aperte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Passive</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Passivo</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1974,11 +1943,11 @@ Change them only if you know what you are doing.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Buscar...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Limit search to selected group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Limitar busca ao grupo selecionado</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -2147,7 +2116,7 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Basic Settings</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Configurações Básicas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files and security dongles</source>
|
||||
@ -2169,6 +2138,18 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
|
||||
<source>Always ask before performing Auto-Type</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type delay</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source> ms</source>
|
||||
<translation>ms</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start only a single instance of KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@ -2202,46 +2183,54 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Convenience</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Conveniência</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock databases when session is locked or lid is closed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Privacy</source>
|
||||
<translation>Privacidade</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Google as fallback for downloading website icons</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SetupTotpDialog</name>
|
||||
<message>
|
||||
<source>Setup TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Configurar TOTP</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Chave:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use custom settings</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Usar configurações personalizadas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Note: Change these settings only if you know what you are doing.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Nota: Altere estas configurações apenas se souber o que está fazendo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Time step:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Período de tempo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>8 digits</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>8 dígitos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>6 digits</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>6 dígitos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Code size:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Tamanho do código:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> sec</source>
|
||||
@ -2252,23 +2241,23 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
|
||||
<name>TotpDialog</name>
|
||||
<message>
|
||||
<source>Timed Password</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Senha Temporária</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>000000</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>000000</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Copiar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires in</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Expira em</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>seconds</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>segundos</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -2282,7 +2271,7 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
|
||||
<name>WelcomeWidget</name>
|
||||
<message>
|
||||
<source>Welcome to KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Bem vindo ao KeePassXC</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start storing your passwords securely in a KeePassXC database</source>
|
||||
@ -2290,19 +2279,19 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create new database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Criar novo banco de dados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open existing database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Abrir banco de dados existente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import from KeePass 1</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Importar do KeePass 1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import from CSV</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Importar arquivo CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent databases</source>
|
||||
@ -2337,7 +2326,7 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path of the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Caminho do banco de dados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use a GUI prompt unlocking the database.</source>
|
||||
@ -2353,15 +2342,15 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path of the database to extract.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Caminho do banco de dados para extração.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name of the command to execute.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Nome do comando para executar.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>List database entries.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Listar entradas do banco de dados.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path of the group to list. Default is /</source>
|
||||
@ -2373,7 +2362,7 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Merge two databases.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Juntar dois bancos de dados.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path of the database to merge into.</source>
|
||||
@ -2389,11 +2378,11 @@ dar-lhe um nome único para identificá-lo e aceitá-lo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show a password.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Mostrar uma senha.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name of the entry to show.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Nome da entrada para mostrar.</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -9,73 +9,14 @@
|
||||
<source>About</source>
|
||||
<translation>O programu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues"><span style="text-decoration: underline; color:#0000ff;">https://github.com</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head><style>li {font-size: 10pt}</style></head><body><p><span style=" font-size:10pt;">Project Maintainers:</span></p><ul><li>droidmonkey</li><li>phoerious</li><li>TheZ3ro</li><li>louib</li><li>Weslly</li><li>debfx (KeePassX)</li></ul></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contributors</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><body>
|
||||
<p style="font-size:x-large; font-weight:600;">Code:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt">debfx (KeePassX)</li>
|
||||
<li style="font-size:10pt">BlueIce (KeePassX)</li>
|
||||
<li style="font-size:10pt">droidmonkey</li>
|
||||
<li style="font-size:10pt">phoerious</li>
|
||||
<li style="font-size:10pt">TheZ3ro</li>
|
||||
<li style="font-size:10pt">louib</li>
|
||||
<li style="font-size:10pt">weslly</li>
|
||||
<li style="font-size:10pt">keithbennett (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">Typz (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">denk-mal (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">kylemanna (YubiKey)</li>
|
||||
<li style="font-size:10pt">seatedscribe (CSV Importer)</li>
|
||||
<li style="font-size:10pt">pgalves (Inline Messages)</li>
|
||||
</ul>
|
||||
<p style="font-size:x-large; font-weight:600;">Translations:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Chinese:</span> Biggulu, ligyxy, BestSteve</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Czech:</span> pavelb, JosefVitu</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Dutch:</span> Vistaus, KnooL, apie</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Finnish:</span> MawKKe</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">French:</span> Scrat15, frgnca, gilbsgilbs, gtalbot, iannick, kyodev, logut</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">German:</span> Calyrx, DavidHamburg, antsas, codejunky, jensrutschmann, montilo, omnisome4, origin_de, pcrcoding, phoerious, rgloor, vlenzer</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Greek:</span> nplatis</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Italian:</span> TheZ3ro, FranzMari, Mte90, tosky</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Kazakh:</span> sotrud_nik</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Lithuanian:</span> Moo</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Polish:</span> konradmb, mrerexx</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Portuguese: </span>vitor895, weslly, American_Jesus, mihai.ile</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Russian:</span> vsvyatski, KekcuHa, wkill95</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Spanish:</span> EdwardNavarro, antifaz, piegope, pquin, vsvyatski</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Swedish:</span> henziger</li>
|
||||
</ul>
|
||||
</body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p align="center"><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">See Contributions on GitHub</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug Info</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Include the following information whenever you report a bug:</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -103,6 +44,26 @@ Kernel: %3 %4</source>
|
||||
<source>Enabled extensions:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Project Maintainers:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">See Contributions on GitHub</a></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include the following information whenever you report a bug:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AccessControlDialog</name>
|
||||
@ -248,10 +209,6 @@ Please select whether you want to allow access.</source>
|
||||
<source>Clone Options</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Copy' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replace username and password with references</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -260,6 +217,10 @@ Please select whether you want to allow access.</source>
|
||||
<source>Copy history</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Clone' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CsvImportWidget</name>
|
||||
@ -1090,10 +1051,6 @@ Do you want to open it anyway?</source>
|
||||
<source>Select Image</source>
|
||||
<translation>Izberi sliko</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Napaka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download favicon</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1122,6 +1079,14 @@ Do you want to open it anyway?</source>
|
||||
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hint: You can enable Google as a fallback under Tools>Settings>Security</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom icon already exists</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@ -1329,14 +1294,14 @@ Do you want to open it anyway?</source>
|
||||
<translation>Izračun glavnega ključa ni uspel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database...'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@ -1358,6 +1323,10 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>Another instance of KeePassXC is already running.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Existing single-instance lock file is invalid. Launching new instance.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
@ -1413,10 +1382,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Recent databases</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>He&lp</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>E&ntries</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1441,10 +1406,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&About</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Save database</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1485,14 +1446,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Delete group</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Database settings</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1505,10 +1458,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>Timed one-time password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Setup TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1557,14 +1506,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Notes</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password Generator</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1585,14 +1526,6 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>&Tools</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database</source>
|
||||
<translation>Uvozi KeePass 1 podatkovno bazo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty recycle bin</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1609,6 +1542,42 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>Please touch the button on your YubiKey!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Help</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set up TOTP...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OptionDialog</name>
|
||||
@ -2155,6 +2124,18 @@ give it a unique name to identify and accept it.</source>
|
||||
<source>Always ask before performing Auto-Type</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type delay</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source> ms</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start only a single instance of KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@ -2194,6 +2175,14 @@ give it a unique name to identify and accept it.</source>
|
||||
<source>Lock databases when session is locked or lid is closed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Privacy</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Google as fallback for downloading website icons</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SetupTotpDialog</name>
|
||||
|
@ -9,73 +9,14 @@
|
||||
<source>About</source>
|
||||
<translation>Om</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues"><span style="text-decoration: underline; color:#0000ff;">https://github.com</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head><style>li {font-size: 10pt}</style></head><body><p><span style=" font-size:10pt;">Project Maintainers:</span></p><ul><li>droidmonkey</li><li>phoerious</li><li>TheZ3ro</li><li>louib</li><li>Weslly</li><li>debfx (KeePassX)</li></ul></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Contributors</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><body>
|
||||
<p style="font-size:x-large; font-weight:600;">Code:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt">debfx (KeePassX)</li>
|
||||
<li style="font-size:10pt">BlueIce (KeePassX)</li>
|
||||
<li style="font-size:10pt">droidmonkey</li>
|
||||
<li style="font-size:10pt">phoerious</li>
|
||||
<li style="font-size:10pt">TheZ3ro</li>
|
||||
<li style="font-size:10pt">louib</li>
|
||||
<li style="font-size:10pt">weslly</li>
|
||||
<li style="font-size:10pt">keithbennett (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">Typz (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">denk-mal (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">kylemanna (YubiKey)</li>
|
||||
<li style="font-size:10pt">seatedscribe (CSV Importer)</li>
|
||||
<li style="font-size:10pt">pgalves (Inline Messages)</li>
|
||||
</ul>
|
||||
<p style="font-size:x-large; font-weight:600;">Translations:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Chinese:</span> Biggulu, ligyxy, BestSteve</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Czech:</span> pavelb, JosefVitu</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Dutch:</span> Vistaus, KnooL, apie</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Finnish:</span> MawKKe</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">French:</span> Scrat15, frgnca, gilbsgilbs, gtalbot, iannick, kyodev, logut</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">German:</span> Calyrx, DavidHamburg, antsas, codejunky, jensrutschmann, montilo, omnisome4, origin_de, pcrcoding, phoerious, rgloor, vlenzer</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Greek:</span> nplatis</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Italian:</span> TheZ3ro, FranzMari, Mte90, tosky</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Kazakh:</span> sotrud_nik</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Lithuanian:</span> Moo</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Polish:</span> konradmb, mrerexx</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Portuguese: </span>vitor895, weslly, American_Jesus, mihai.ile</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Russian:</span> vsvyatski, KekcuHa, wkill95</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Spanish:</span> EdwardNavarro, antifaz, piegope, pquin, vsvyatski</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Swedish:</span> henziger</li>
|
||||
</ul>
|
||||
</body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p align="center"><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">See Contributions on GitHub</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Debug Info</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><html><head/><body><p>Include the following information whenever you report a bug:</p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy to clipboard</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -103,6 +44,26 @@ Kernel: %3 %4</source>
|
||||
<source>Enabled extensions:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation>KeePassXC distribueras enligt villkoren i GNU General Public License (GPL) version 2 eller (om du vill) version 3.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Project Maintainers:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">See Contributions on GitHub</a></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Include the following information whenever you report a bug:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AccessControlDialog</name>
|
||||
@ -112,11 +73,11 @@ Kernel: %3 %4</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Allow</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Tillåt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Deny</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Neka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 has requested access to passwords for the following item(s).
|
||||
@ -231,7 +192,7 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Refresh</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Uppdatera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty password</source>
|
||||
@ -248,10 +209,6 @@ Please select whether you want to allow access.</source>
|
||||
<source>Clone Options</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Copy' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replace username and password with references</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -260,6 +217,10 @@ Please select whether you want to allow access.</source>
|
||||
<source>Copy history</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Append ' - Clone' to title</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CsvImportWidget</name>
|
||||
@ -269,7 +230,7 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>filename</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>filnamn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>size, rows, columns</source>
|
||||
@ -309,7 +270,7 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Preview</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Förhandsgranska</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Column layout</source>
|
||||
@ -325,7 +286,7 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>column </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>kolumn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Imported from CSV file</source>
|
||||
@ -380,7 +341,7 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source> columns</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation> kolumner</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -423,7 +384,7 @@ Please select whether you want to allow access.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Refresh</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Uppdatera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Challenge Response:</source>
|
||||
@ -610,7 +571,7 @@ I annat fall försvinner ändringarna.</translation>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation>"%1" är i redigeringsläge.
|
||||
Kasta ändringarna och stäng endå?</translation>
|
||||
Kasta ändringarna och stäng ändå?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
@ -1092,10 +1053,6 @@ Do you want to open it anyway?</source>
|
||||
<source>Select Image</source>
|
||||
<translation>Välj bild</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download favicon</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1124,6 +1081,14 @@ Do you want to open it anyway?</source>
|
||||
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hint: You can enable Google as a fallback under Tools>Settings>Security</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom icon already exists</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@ -1331,17 +1296,14 @@ Do you want to open it anyway?</source>
|
||||
<translation>Kunde inte räkna nu master-nyckeln</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Den valda filen är en gammal KeePass 1 databas (.kdb)
|
||||
|
||||
Du kan importera den genom att klicka på Databas > Importera KeePass 1 databas.
|
||||
Detta är en envägsmigration. Du kan inte spara en databas som KeePass1 databas. Det som används i KeePassX 0.4.</translation>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to issue challenge-response.</source>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database...'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
@ -1363,6 +1325,10 @@ Detta är en envägsmigration. Du kan inte spara en databas som KeePass1 databas
|
||||
<source>Another instance of KeePassXC is already running.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Existing single-instance lock file is invalid. Launching new instance.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
@ -1418,10 +1384,6 @@ Detta är en envägsmigration. Du kan inte spara en databas som KeePass1 databas
|
||||
<source>&Recent databases</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>He&lp</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>E&ntries</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1446,10 +1408,6 @@ Detta är en envägsmigration. Du kan inte spara en databas som KeePass1 databas
|
||||
<source>&About</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Save database</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1490,14 +1448,6 @@ Detta är en envägsmigration. Du kan inte spara en databas som KeePass1 databas
|
||||
<source>&Delete group</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Database settings</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1510,10 +1460,6 @@ Detta är en envägsmigration. Du kan inte spara en databas som KeePass1 databas
|
||||
<source>Timed one-time password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Setup TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy &TOTP</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1562,21 +1508,13 @@ Detta är en envägsmigration. Du kan inte spara en databas som KeePass1 databas
|
||||
<source>&Notes</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password Generator</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear history</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Töm historiken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Database</source>
|
||||
@ -1584,20 +1522,12 @@ Detta är en envägsmigration. Du kan inte spara en databas som KeePass1 databas
|
||||
</message>
|
||||
<message>
|
||||
<source>Import</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Importera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Tools</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database</source>
|
||||
<translation>Importera KeePass1 databas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Empty recycle bin</source>
|
||||
<translation type="unfinished"/>
|
||||
@ -1614,6 +1544,42 @@ Detta är en envägsmigration. Du kan inte spara en databas som KeePass1 databas
|
||||
<source>Please touch the button on your YubiKey!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Help</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sa&ve database as...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change &master key...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Export to CSV file...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import CSV file...</source>
|
||||
<translation>Importera CSV fil...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Re&pair database...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set up TOTP...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OptionDialog</name>
|
||||
@ -1792,7 +1758,7 @@ Change them only if you know what you are doing.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Stäng</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Apply</source>
|
||||
@ -1848,7 +1814,7 @@ Change them only if you know what you are doing.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kopiera</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -1965,7 +1931,7 @@ Change them only if you know what you are doing.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Rensa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search...</source>
|
||||
@ -2010,7 +1976,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
|
||||
</message>
|
||||
<message>
|
||||
<source>Abort</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Avbryt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Successfully removed permissions from %1 %2.</source>
|
||||
@ -2160,6 +2126,18 @@ give it a unique name to identify and accept it.</source>
|
||||
<source>Always ask before performing Auto-Type</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type delay</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source> ms</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start only a single instance of KeePassXC</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@ -2199,6 +2177,14 @@ give it a unique name to identify and accept it.</source>
|
||||
<source>Lock databases when session is locked or lid is closed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Privacy</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Google as fallback for downloading website icons</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SetupTotpDialog</name>
|
||||
@ -2251,7 +2237,7 @@ give it a unique name to identify and accept it.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kopiera</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires in</source>
|
||||
@ -2281,11 +2267,11 @@ give it a unique name to identify and accept it.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create new database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Skapa ny databas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open existing database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Öppna befintlig databas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import from KeePass 1</source>
|
||||
@ -2293,7 +2279,7 @@ give it a unique name to identify and accept it.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import from CSV</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Importera från CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent databases</source>
|
||||
|
2384
share/translations/keepassx_tr.ts
Normal file
2384
share/translations/keepassx_tr.ts
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,17 +1,64 @@
|
||||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 or (at your option)
|
||||
# version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
BASEDIR=$(dirname $0)
|
||||
BASEDIR="$(dirname $0)"
|
||||
|
||||
cd $BASEDIR/../..
|
||||
PUSH=true
|
||||
PULL=true
|
||||
UPDATE=true
|
||||
|
||||
echo Updating source file
|
||||
lupdate-qt5 -no-ui-lines -disable-heuristic similartext -locations none -no-obsolete src -ts share/translations/keepassx_en.ts
|
||||
lupdate-qt5 -no-ui-lines -disable-heuristic similartext -locations none -pluralonly src -ts share/translations/keepassx_en_plurals.ts
|
||||
if [ "$1" == "push" ]; then
|
||||
PULL=false
|
||||
elif [ "$1" == "pull" ]; then
|
||||
PUSH=false
|
||||
UPDATE=false
|
||||
elif [ "$1" == "update" ]; then
|
||||
PUSH=false
|
||||
PULL=false
|
||||
elif [ "$1" != "" ]; then
|
||||
echo "Unknown command '${1}'"
|
||||
echo "Usage: $(basename $0) [update|pull|push]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
echo Pushing English translation file to Transifex
|
||||
tx push -s
|
||||
cd "${BASEDIR}/../.."
|
||||
|
||||
echo
|
||||
echo Pulling translations from Transifex
|
||||
tx pull -af --minimum-perc=40
|
||||
if $UPDATE; then
|
||||
echo "Updating source files..."
|
||||
|
||||
LUPDATE=lupdate-qt5
|
||||
command -v $LUPDATE > /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
LUPDATE=lupdate
|
||||
fi
|
||||
$LUPDATE -no-ui-lines -disable-heuristic similartext -locations none -no-obsolete src -ts share/translations/keepassx_en.ts
|
||||
$LUPDATE -no-ui-lines -disable-heuristic similartext -locations none -pluralonly src -ts share/translations/keepassx_en_plurals.ts
|
||||
echo
|
||||
fi
|
||||
|
||||
if $PUSH; then
|
||||
echo "Pushing English source files to Transifex..."
|
||||
tx push -s
|
||||
echo
|
||||
fi
|
||||
|
||||
if $PULL; then
|
||||
echo "Pulling translations from Transifex..."
|
||||
tx pull -af --minimum-perc=40
|
||||
echo
|
||||
fi
|
||||
|
@ -1,13 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=KeePassXC
|
||||
GenericName=Community Password Manager
|
||||
GenericName[de]=Passwortverwaltung
|
||||
GenericName[es]=Gestor de contraseñas
|
||||
GenericName[fr]=Gestionnaire de mot de passe
|
||||
GenericName[ru]=менеджер паролей
|
||||
Exec=keepassxc %f
|
||||
Icon=${SNAP}/share/icons/hicolor/256x256/apps/keepassxc.png
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Qt;Utility;
|
||||
MimeType=application/x-keepass2;
|
@ -1,5 +1,5 @@
|
||||
name: keepassxc
|
||||
version: 2.2.0
|
||||
version: 2.2.1
|
||||
grade: stable
|
||||
summary: community driven port of the windows application “Keepass Password Safe”
|
||||
description: |
|
||||
@ -11,7 +11,11 @@ confinement: strict
|
||||
apps:
|
||||
keepassxc:
|
||||
command: desktop-launch keepassxc
|
||||
plugs: [unity7, x11, opengl, gsettings, home, network, network-bind, removable-media]
|
||||
plugs: [unity7, x11, opengl, gsettings, home, network, network-bind, removable-media, raw-usb]
|
||||
desktop: share/applications/keepassxc.desktop
|
||||
cli:
|
||||
command: keepassxc-cli
|
||||
plugs: [gsettings, home, removable-media, raw-usb]
|
||||
|
||||
parts:
|
||||
keepassxc:
|
||||
@ -36,8 +40,9 @@ parts:
|
||||
- libyubikey-dev
|
||||
- libykpers-1-dev
|
||||
after: [desktop-qt5]
|
||||
|
||||
# Redefine desktop-qt5 stage packages to work with Ubuntu 17.04
|
||||
desktop-qt5:
|
||||
# Redefine stage packages to work with Ubuntu 17.04
|
||||
stage-packages:
|
||||
- libxkbcommon0
|
||||
- ttf-ubuntu-font-family
|
||||
@ -48,3 +53,12 @@ parts:
|
||||
- libgdk-pixbuf2.0-0
|
||||
- libqt5svg5 # for loading icon themes which are svg
|
||||
- locales-all
|
||||
|
||||
# Overcome limitation in snapd to support URL loading (CTRL+U)
|
||||
snapd-xdg-open:
|
||||
source: https://github.com/ubuntu-core/snapd-xdg-open.git
|
||||
plugin: dump
|
||||
organize:
|
||||
data/xdg-open: bin/xdg-open
|
||||
stage-packages:
|
||||
- dbus
|
||||
|
@ -317,7 +317,7 @@ bool AutoType::parseActions(const QString& sequence, const Entry* entry, QList<A
|
||||
{
|
||||
QString tmpl;
|
||||
bool inTmpl = false;
|
||||
m_autoTypeDelay = 0;
|
||||
m_autoTypeDelay = config()->get("AutoTypeDelay").toInt();
|
||||
|
||||
|
||||
for (const QChar& ch : sequence) {
|
||||
|
@ -499,14 +499,12 @@ void AutoTypeExecutorMac::execChar(AutoTypeChar* action)
|
||||
{
|
||||
m_platform->sendChar(action->character, true);
|
||||
m_platform->sendChar(action->character, false);
|
||||
usleep(25 * 1000);
|
||||
}
|
||||
|
||||
void AutoTypeExecutorMac::execKey(AutoTypeKey* action)
|
||||
{
|
||||
m_platform->sendKey(action->key, true);
|
||||
m_platform->sendKey(action->key, false);
|
||||
usleep(25 * 1000);
|
||||
}
|
||||
|
||||
void AutoTypeExecutorMac::execClearField(AutoTypeClearField* action = nullptr)
|
||||
|
@ -522,14 +522,12 @@ void AutoTypeExecutorWin::execChar(AutoTypeChar* action)
|
||||
{
|
||||
m_platform->sendChar(action->character, true);
|
||||
m_platform->sendChar(action->character, false);
|
||||
::Sleep(25);
|
||||
}
|
||||
|
||||
void AutoTypeExecutorWin::execKey(AutoTypeKey* action)
|
||||
{
|
||||
m_platform->sendKey(action->key, true);
|
||||
m_platform->sendKey(action->key, false);
|
||||
::Sleep(25);
|
||||
}
|
||||
|
||||
void AutoTypeExecutorWin::execClearField(AutoTypeClearField* action = nullptr)
|
||||
|
@ -641,21 +641,13 @@ int AutoTypePlatformX11::AddKeysym(KeySym keysym)
|
||||
* If input focus is specified explicitly, select the window
|
||||
* before send event to the window.
|
||||
*/
|
||||
void AutoTypePlatformX11::SendEvent(XKeyEvent* event, int event_type)
|
||||
void AutoTypePlatformX11::SendKeyEvent(unsigned keycode, bool press)
|
||||
{
|
||||
XSync(event->display, False);
|
||||
XSync(m_dpy, False);
|
||||
int (*oldHandler) (Display*, XErrorEvent*) = XSetErrorHandler(MyErrorHandler);
|
||||
|
||||
event->type = event_type;
|
||||
Bool press;
|
||||
if (event->type == KeyPress) {
|
||||
press = True;
|
||||
}
|
||||
else {
|
||||
press = False;
|
||||
}
|
||||
XTestFakeKeyEvent(event->display, event->keycode, press, 0);
|
||||
XFlush(event->display);
|
||||
XTestFakeKeyEvent(m_dpy, keycode, press, 0);
|
||||
XFlush(m_dpy);
|
||||
|
||||
XSetErrorHandler(oldHandler);
|
||||
}
|
||||
@ -664,17 +656,12 @@ void AutoTypePlatformX11::SendEvent(XKeyEvent* event, int event_type)
|
||||
* Send a modifier press/release event for all modifiers
|
||||
* which are set in the mask variable.
|
||||
*/
|
||||
void AutoTypePlatformX11::SendModifier(XKeyEvent *event, unsigned int mask, int event_type)
|
||||
void AutoTypePlatformX11::SendModifiers(unsigned int mask, bool press)
|
||||
{
|
||||
int mod_index;
|
||||
for (mod_index = ShiftMapIndex; mod_index <= Mod5MapIndex; mod_index ++) {
|
||||
if (mask & (1 << mod_index)) {
|
||||
event->keycode = m_modifier_keycode[mod_index];
|
||||
SendEvent(event, event_type);
|
||||
if (event_type == KeyPress)
|
||||
event->state |= (1 << mod_index);
|
||||
else
|
||||
event->state &= (1 << mod_index);
|
||||
SendKeyEvent(m_modifier_keycode[mod_index], press);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -729,43 +716,15 @@ bool AutoTypePlatformX11::keysymModifiers(KeySym keysym, int keycode, unsigned i
|
||||
* window to simulate keyboard. If modifiers (shift, control, etc)
|
||||
* are set ON, many events will be sent.
|
||||
*/
|
||||
void AutoTypePlatformX11::SendKeyPressedEvent(KeySym keysym)
|
||||
void AutoTypePlatformX11::SendKey(KeySym keysym, unsigned int modifiers)
|
||||
{
|
||||
SendKey(keysym,true);
|
||||
SendKey(keysym,false);
|
||||
}
|
||||
|
||||
void AutoTypePlatformX11::SendKey(KeySym keysym, bool isKeyDown)
|
||||
{
|
||||
Window cur_focus;
|
||||
int revert_to;
|
||||
XKeyEvent event;
|
||||
int keycode;
|
||||
|
||||
if (keysym == NoSymbol) {
|
||||
qWarning("No such key: keysym=0x%lX", keysym);
|
||||
return;
|
||||
}
|
||||
|
||||
XGetInputFocus(m_dpy, &cur_focus, &revert_to);
|
||||
|
||||
event.display = m_dpy;
|
||||
event.window = cur_focus;
|
||||
event.root = m_rootWindow;
|
||||
event.subwindow = None;
|
||||
event.time = CurrentTime;
|
||||
event.x = 1;
|
||||
event.y = 1;
|
||||
event.x_root = 1;
|
||||
event.y_root = 1;
|
||||
event.same_screen = True;
|
||||
|
||||
Window root, child;
|
||||
int root_x, root_y, x, y;
|
||||
unsigned int wanted_mask = 0;
|
||||
unsigned int original_mask;
|
||||
|
||||
XQueryPointer(m_dpy, event.root, &root, &child, &root_x, &root_y, &x, &y, &original_mask);
|
||||
int keycode;
|
||||
unsigned int wanted_mask;
|
||||
|
||||
/* determine keycode and mask for the given keysym */
|
||||
keycode = GetKeycode(keysym, &wanted_mask);
|
||||
@ -773,8 +732,14 @@ void AutoTypePlatformX11::SendKey(KeySym keysym, bool isKeyDown)
|
||||
qWarning("Unable to get valid keycode for key: keysym=0x%lX", keysym);
|
||||
return;
|
||||
}
|
||||
wanted_mask |= modifiers;
|
||||
|
||||
event.state = original_mask;
|
||||
Window root, child;
|
||||
int root_x, root_y, x, y;
|
||||
unsigned int original_mask;
|
||||
|
||||
XSync(m_dpy, False);
|
||||
XQueryPointer(m_dpy, m_rootWindow, &root, &child, &root_x, &root_y, &x, &y, &original_mask);
|
||||
|
||||
// modifiers that need to be pressed but aren't
|
||||
unsigned int press_mask = wanted_mask & ~original_mask;
|
||||
@ -785,6 +750,7 @@ void AutoTypePlatformX11::SendKey(KeySym keysym, bool isKeyDown)
|
||||
// modifiers we need to release before sending the keycode
|
||||
unsigned int release_mask = 0;
|
||||
|
||||
if (!modifiers) {
|
||||
// check every release_check_mask individually if it affects the keysym we would generate
|
||||
// if it doesn't we probably don't need to release it
|
||||
for (int mod_index = ShiftMapIndex; mod_index <= Mod5MapIndex; mod_index ++) {
|
||||
@ -807,25 +773,29 @@ void AutoTypePlatformX11::SendKey(KeySym keysym, bool isKeyDown)
|
||||
// oh well, release all the modifiers we don't want
|
||||
release_mask = release_check_mask;
|
||||
}
|
||||
|
||||
/* release all modifiers */
|
||||
SendModifier(&event, release_mask, KeyRelease);
|
||||
|
||||
SendModifier(&event, press_mask, KeyPress);
|
||||
|
||||
/* press and release key */
|
||||
event.keycode = keycode;
|
||||
if (isKeyDown) {
|
||||
SendEvent(&event, KeyPress);
|
||||
} else {
|
||||
SendEvent(&event, KeyRelease);
|
||||
release_mask = release_check_mask;
|
||||
}
|
||||
|
||||
/* release the modifiers */
|
||||
SendModifier(&event, press_mask, KeyRelease);
|
||||
/* set modifiers mask */
|
||||
if ((release_mask | press_mask) & LockMask) {
|
||||
SendModifiers(LockMask, true);
|
||||
SendModifiers(LockMask, false);
|
||||
}
|
||||
SendModifiers(release_mask & ~LockMask, false);
|
||||
SendModifiers(press_mask & ~LockMask, true);
|
||||
|
||||
/* restore the old keyboard mask */
|
||||
SendModifier(&event, release_mask, KeyPress);
|
||||
/* press and release release key */
|
||||
SendKeyEvent(keycode, true);
|
||||
SendKeyEvent(keycode, false);
|
||||
|
||||
/* restore previous modifiers mask */
|
||||
SendModifiers(press_mask & ~LockMask, false);
|
||||
SendModifiers(release_mask & ~LockMask, true);
|
||||
if ((release_mask | press_mask) & LockMask) {
|
||||
SendModifiers(LockMask, true);
|
||||
SendModifiers(LockMask, false);
|
||||
}
|
||||
}
|
||||
|
||||
int AutoTypePlatformX11::MyErrorHandler(Display* my_dpy, XErrorEvent* event)
|
||||
@ -848,14 +818,12 @@ AutoTypeExecutorX11::AutoTypeExecutorX11(AutoTypePlatformX11* platform)
|
||||
|
||||
void AutoTypeExecutorX11::execChar(AutoTypeChar* action)
|
||||
{
|
||||
m_platform->SendKeyPressedEvent(m_platform->charToKeySym(action->character));
|
||||
Tools::wait(25);
|
||||
m_platform->SendKey(m_platform->charToKeySym(action->character));
|
||||
}
|
||||
|
||||
void AutoTypeExecutorX11::execKey(AutoTypeKey* action)
|
||||
{
|
||||
m_platform->SendKeyPressedEvent(m_platform->keyToKeySym(action->key));
|
||||
Tools::wait(25);
|
||||
m_platform->SendKey(m_platform->keyToKeySym(action->key));
|
||||
}
|
||||
|
||||
void AutoTypeExecutorX11::execClearField(AutoTypeClearField* action = nullptr)
|
||||
@ -866,19 +834,13 @@ void AutoTypeExecutorX11::execClearField(AutoTypeClearField* action = nullptr)
|
||||
ts.tv_sec = 0;
|
||||
ts.tv_nsec = 25 * 1000 * 1000;
|
||||
|
||||
m_platform->SendKey(m_platform->keyToKeySym(Qt::Key_Control), true);
|
||||
m_platform->SendKeyPressedEvent(m_platform->keyToKeySym(Qt::Key_Home));
|
||||
m_platform->SendKey(m_platform->keyToKeySym(Qt::Key_Control), false);
|
||||
m_platform->SendKey(m_platform->keyToKeySym(Qt::Key_Home), static_cast<unsigned int>(ControlMask));
|
||||
nanosleep(&ts, nullptr);
|
||||
|
||||
m_platform->SendKey(m_platform->keyToKeySym(Qt::Key_Control), true);
|
||||
m_platform->SendKey(m_platform->keyToKeySym(Qt::Key_Shift), true);
|
||||
m_platform->SendKeyPressedEvent(m_platform->keyToKeySym(Qt::Key_End));
|
||||
m_platform->SendKey(m_platform->keyToKeySym(Qt::Key_Shift), false);
|
||||
m_platform->SendKey(m_platform->keyToKeySym(Qt::Key_Control), false);
|
||||
m_platform->SendKey(m_platform->keyToKeySym(Qt::Key_End), static_cast<unsigned int>(ControlMask | ShiftMask));
|
||||
nanosleep(&ts, nullptr);
|
||||
|
||||
m_platform->SendKeyPressedEvent(m_platform->keyToKeySym(Qt::Key_Backspace));
|
||||
m_platform->SendKey(m_platform->keyToKeySym(Qt::Key_Backspace));
|
||||
nanosleep(&ts, nullptr);
|
||||
}
|
||||
|
||||
|
@ -58,8 +58,7 @@ public:
|
||||
KeySym charToKeySym(const QChar& ch);
|
||||
KeySym keyToKeySym(Qt::Key key);
|
||||
|
||||
void SendKeyPressedEvent(KeySym keysym);
|
||||
void SendKey(KeySym keysym, bool isKeyDown);
|
||||
void SendKey(KeySym keysym, unsigned int modifiers = 0);
|
||||
|
||||
signals:
|
||||
void globalShortcutTriggered();
|
||||
@ -80,8 +79,8 @@ private:
|
||||
bool isRemapKeycodeValid();
|
||||
int AddKeysym(KeySym keysym);
|
||||
void AddModifier(KeySym keysym);
|
||||
void SendEvent(XKeyEvent* event, int event_type);
|
||||
void SendModifier(XKeyEvent *event, unsigned int mask, int event_type);
|
||||
void SendKeyEvent(unsigned keycode, bool press);
|
||||
void SendModifiers(unsigned int mask, bool press);
|
||||
int GetKeycode(KeySym keysym, unsigned int *mask);
|
||||
bool keysymModifiers(KeySym keysym, int keycode, unsigned int *mask);
|
||||
|
||||
|
@ -107,6 +107,7 @@ void Config::init(const QString& fileName)
|
||||
{
|
||||
m_settings.reset(new QSettings(fileName, QSettings::IniFormat));
|
||||
|
||||
m_defaults.insert("SingleInstance", true);
|
||||
m_defaults.insert("RememberLastDatabases", true);
|
||||
m_defaults.insert("RememberLastKeyFiles", true);
|
||||
m_defaults.insert("OpenPreviousDatabasesOnStartup", true);
|
||||
@ -118,8 +119,9 @@ void Config::init(const QString& fileName)
|
||||
m_defaults.insert("MinimizeOnCopy", false);
|
||||
m_defaults.insert("UseGroupIconOnEntryCreation", false);
|
||||
m_defaults.insert("AutoTypeEntryTitleMatch", true);
|
||||
m_defaults.insert("AutoTypeDelay", 25);
|
||||
m_defaults.insert("UseGroupIconOnEntryCreation", true);
|
||||
m_defaults.insert("IgnoreGroupExpansion", false);
|
||||
m_defaults.insert("IgnoreGroupExpansion", true);
|
||||
m_defaults.insert("security/clearclipboard", true);
|
||||
m_defaults.insert("security/clearclipboardtimeout", 10);
|
||||
m_defaults.insert("security/lockdatabaseidle", false);
|
||||
@ -129,6 +131,7 @@ void Config::init(const QString& fileName)
|
||||
m_defaults.insert("security/passwordsrepeat", false);
|
||||
m_defaults.insert("security/passwordscleartext", false);
|
||||
m_defaults.insert("security/autotypeask", true);
|
||||
m_defaults.insert("security/IconDownloadFallbackToGoogle", false);
|
||||
m_defaults.insert("GUI/Language", "system");
|
||||
m_defaults.insert("GUI/ShowTrayIcon", false);
|
||||
m_defaults.insert("GUI/MinimizeToTray", false);
|
||||
|
@ -17,6 +17,8 @@
|
||||
*/
|
||||
#include "Entry.h"
|
||||
|
||||
#include "config-keepassx.h"
|
||||
|
||||
#include "core/Database.h"
|
||||
#include "core/DatabaseIcons.h"
|
||||
#include "core/Group.h"
|
||||
@ -237,6 +239,11 @@ QString Entry::url() const
|
||||
return m_attributes->value(EntryAttributes::URLKey);
|
||||
}
|
||||
|
||||
QString Entry::webUrl() const
|
||||
{
|
||||
return resolveUrl(m_attributes->value(EntryAttributes::URLKey));
|
||||
}
|
||||
|
||||
QString Entry::username() const
|
||||
{
|
||||
return m_attributes->value(EntryAttributes::UserNameKey);
|
||||
@ -720,6 +727,13 @@ const Database* Entry::database() const
|
||||
}
|
||||
}
|
||||
|
||||
QString Entry::maskPasswordPlaceholders(const QString &str) const
|
||||
{
|
||||
QString result = str;
|
||||
result.replace(QRegExp("(\\{PASSWORD\\})", Qt::CaseInsensitive, QRegExp::RegExp2), "******");
|
||||
return result;
|
||||
}
|
||||
|
||||
QString Entry::resolveMultiplePlaceholders(const QString& str) const
|
||||
{
|
||||
QString result = str;
|
||||
@ -784,3 +798,31 @@ QString Entry::resolvePlaceholder(const QString& str) const
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
QString Entry::resolveUrl(const QString& url) const
|
||||
{
|
||||
#ifdef WITH_XC_HTTP
|
||||
QString newUrl = url;
|
||||
if (!url.contains("://")) {
|
||||
// URL doesn't have a protocol, add https by default
|
||||
newUrl.prepend("https://");
|
||||
}
|
||||
QUrl tempUrl = QUrl(newUrl);
|
||||
|
||||
if (tempUrl.isValid()) {
|
||||
if (tempUrl.scheme() == "cmd") {
|
||||
// URL is a cmd, hopefully the second argument is an URL
|
||||
QStringList cmd = newUrl.split(" ");
|
||||
if (cmd.size() > 1) {
|
||||
return resolveUrl(cmd[1].remove("'").remove("\""));
|
||||
}
|
||||
} else if (tempUrl.scheme() == "http" || tempUrl.scheme() == "https") {
|
||||
// URL is nice
|
||||
return tempUrl.url();
|
||||
}
|
||||
}
|
||||
#else
|
||||
Q_UNUSED(url);
|
||||
#endif
|
||||
return QString("");
|
||||
}
|
||||
|
@ -78,6 +78,7 @@ public:
|
||||
const AutoTypeAssociations* autoTypeAssociations() const;
|
||||
QString title() const;
|
||||
QString url() const;
|
||||
QString webUrl() const;
|
||||
QString username() const;
|
||||
QString password() const;
|
||||
QString notes() const;
|
||||
@ -141,8 +142,10 @@ public:
|
||||
*/
|
||||
Entry* clone(CloneFlags flags) const;
|
||||
void copyDataFrom(const Entry* other);
|
||||
QString maskPasswordPlaceholders(const QString& str) const;
|
||||
QString resolveMultiplePlaceholders(const QString& str) const;
|
||||
QString resolvePlaceholder(const QString& str) const;
|
||||
QString resolveUrl(const QString& url) const;
|
||||
|
||||
/**
|
||||
* Call before and after set*() methods to create a history item
|
||||
|
@ -667,7 +667,7 @@ void Group::merge(const Group* other)
|
||||
for (Entry* entry : dbEntries) {
|
||||
// entries are searched by uuid
|
||||
if (!findEntryByUuid(entry->uuid())) {
|
||||
entry->clone(Entry::CloneNoFlags)->setGroup(this);
|
||||
entry->clone(Entry::CloneIncludeHistory)->setGroup(this);
|
||||
} else {
|
||||
resolveConflict(findEntryByUuid(entry->uuid()), entry);
|
||||
}
|
||||
@ -891,11 +891,11 @@ void Group::resolveConflict(Entry* existingEntry, Entry* otherEntry)
|
||||
case KeepBoth:
|
||||
// if one entry is newer, create a clone and add it to the group
|
||||
if (timeExisting > timeOther) {
|
||||
clonedEntry = otherEntry->clone(Entry::CloneNoFlags);
|
||||
clonedEntry = otherEntry->clone(Entry::CloneIncludeHistory);
|
||||
clonedEntry->setGroup(this);
|
||||
markOlderEntry(clonedEntry);
|
||||
} else if (timeExisting < timeOther) {
|
||||
clonedEntry = otherEntry->clone(Entry::CloneNoFlags);
|
||||
clonedEntry = otherEntry->clone(Entry::CloneIncludeHistory);
|
||||
clonedEntry->setGroup(this);
|
||||
markOlderEntry(existingEntry);
|
||||
}
|
||||
@ -904,7 +904,8 @@ void Group::resolveConflict(Entry* existingEntry, Entry* otherEntry)
|
||||
if (timeExisting < timeOther) {
|
||||
// only if other entry is newer, replace existing one
|
||||
removeEntry(existingEntry);
|
||||
addEntry(otherEntry->clone(Entry::CloneNoFlags));
|
||||
clonedEntry = otherEntry->clone(Entry::CloneIncludeHistory);
|
||||
clonedEntry->setGroup(this);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -15,6 +15,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <QtCore/QCryptographicHash>
|
||||
#include "Metadata.h"
|
||||
|
||||
#include "core/Entry.h"
|
||||
@ -390,6 +391,9 @@ void Metadata::addCustomIcon(const Uuid& uuid, const QImage& icon)
|
||||
m_customIconCacheKeys[uuid] = QPixmapCache::Key();
|
||||
m_customIconScaledCacheKeys[uuid] = QPixmapCache::Key();
|
||||
m_customIconsOrder.append(uuid);
|
||||
// Associate image hash to uuid
|
||||
QByteArray hash = hashImage(icon);
|
||||
m_customIconsHashes[hash] = uuid;
|
||||
Q_ASSERT(m_customIcons.count() == m_customIconsOrder.count());
|
||||
emit modified();
|
||||
}
|
||||
@ -415,6 +419,12 @@ void Metadata::removeCustomIcon(const Uuid& uuid)
|
||||
Q_ASSERT(!uuid.isNull());
|
||||
Q_ASSERT(m_customIcons.contains(uuid));
|
||||
|
||||
// Remove hash record only if this is the same uuid
|
||||
QByteArray hash = hashImage(m_customIcons[uuid]);
|
||||
if (m_customIconsHashes.contains(hash) && m_customIconsHashes[hash] == uuid) {
|
||||
m_customIconsHashes.remove(hash);
|
||||
}
|
||||
|
||||
m_customIcons.remove(uuid);
|
||||
QPixmapCache::remove(m_customIconCacheKeys.value(uuid));
|
||||
m_customIconCacheKeys.remove(uuid);
|
||||
@ -425,6 +435,12 @@ void Metadata::removeCustomIcon(const Uuid& uuid)
|
||||
emit modified();
|
||||
}
|
||||
|
||||
Uuid Metadata::findCustomIcon(const QImage &candidate)
|
||||
{
|
||||
QByteArray hash = hashImage(candidate);
|
||||
return m_customIconsHashes.value(hash, Uuid());
|
||||
}
|
||||
|
||||
void Metadata::copyCustomIcons(const QSet<Uuid>& iconList, const Metadata* otherMetadata)
|
||||
{
|
||||
for (const Uuid& uuid : iconList) {
|
||||
@ -436,6 +452,12 @@ void Metadata::copyCustomIcons(const QSet<Uuid>& iconList, const Metadata* other
|
||||
}
|
||||
}
|
||||
|
||||
QByteArray Metadata::hashImage(const QImage& image)
|
||||
{
|
||||
auto data = QByteArray((char*)image.bits(), image.byteCount());
|
||||
return QCryptographicHash::hash(data, QCryptographicHash::Md5);
|
||||
}
|
||||
|
||||
void Metadata::setRecycleBinEnabled(bool value)
|
||||
{
|
||||
set(m_data.recycleBinEnabled, value);
|
||||
|
@ -122,6 +122,7 @@ public:
|
||||
void addCustomIconScaled(const Uuid& uuid, const QImage& icon);
|
||||
void removeCustomIcon(const Uuid& uuid);
|
||||
void copyCustomIcons(const QSet<Uuid>& iconList, const Metadata* otherMetadata);
|
||||
Uuid findCustomIcon(const QImage& candidate);
|
||||
void setRecycleBinEnabled(bool value);
|
||||
void setRecycleBin(Group* group);
|
||||
void setRecycleBinChanged(const QDateTime& value);
|
||||
@ -154,12 +155,15 @@ private:
|
||||
template <class P, class V> bool set(P& property, const V& value);
|
||||
template <class P, class V> bool set(P& property, const V& value, QDateTime& dateTime);
|
||||
|
||||
QByteArray hashImage(const QImage& image);
|
||||
|
||||
MetadataData m_data;
|
||||
|
||||
QHash<Uuid, QImage> m_customIcons;
|
||||
mutable QHash<Uuid, QPixmapCache::Key> m_customIconCacheKeys;
|
||||
mutable QHash<Uuid, QPixmapCache::Key> m_customIconScaledCacheKeys;
|
||||
QList<Uuid> m_customIconsOrder;
|
||||
QHash<QByteArray, Uuid> m_customIconsHashes;
|
||||
|
||||
QPointer<Group> m_recycleBin;
|
||||
QDateTime m_recycleBinChanged;
|
||||
|
@ -73,7 +73,7 @@ Database* KeePass2Reader::readDatabase(QIODevice* device, const CompositeKey& ke
|
||||
quint32 signature2 = Endian::readUInt32(m_headerStream, KeePass2::BYTEORDER, &ok);
|
||||
if (ok && signature2 == KeePass1::SIGNATURE_2) {
|
||||
raiseError(tr("The selected file is an old KeePass 1 database (.kdb).\n\n"
|
||||
"You can import it by clicking on Database > 'Import KeePass 1 database'.\n"
|
||||
"You can import it by clicking on Database > 'Import KeePass 1 database...'.\n"
|
||||
"This is a one-way migration. You won't be able to open the imported "
|
||||
"database with the old KeePassX 0.4 version."));
|
||||
return nullptr;
|
||||
|
@ -2,30 +2,10 @@
|
||||
<ui version="4.0">
|
||||
<class>AboutDialog</class>
|
||||
<widget class="QDialog" name="AboutDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>450</width>
|
||||
<height>450</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>450</width>
|
||||
<height>450</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>About KeePassXC</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,1,0">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="topMargin">
|
||||
@ -71,7 +51,7 @@
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"><span style="font-size: 24pt"> KeePassXC v${VERSION}</span></string>
|
||||
<string notr="true"><span style="font-size: 20pt"> KeePassXC ${VERSION}</span></string>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
@ -102,7 +82,7 @@
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"><html><head/><body><p>Website: <a href="https://keepassxc.org/"><span style="text-decoration: underline; color:#0000ff;">https://keepassxc.org</span></a></p></body></html></string>
|
||||
<string notr="true">Website: <a href="https://keepassxc.org/" style="text-decoration: underline">https://keepassxc.org</a></string>
|
||||
</property>
|
||||
<property name="openExternalLinks">
|
||||
<bool>true</bool>
|
||||
@ -112,7 +92,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues"><span style="text-decoration: underline; color:#0000ff;">https://github.com</span></a></p></body></html></string>
|
||||
<string>Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a></string>
|
||||
</property>
|
||||
<property name="openExternalLinks">
|
||||
<bool>true</bool>
|
||||
@ -138,13 +118,13 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</p></body></html></string>
|
||||
<string>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
@ -167,6 +147,13 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Project Maintainers:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="sizePolicy">
|
||||
@ -176,7 +163,14 @@
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head><style>li {font-size: 10pt}</style></head><body><p><span style=" font-size:10pt;">Project Maintainers:</span></p><ul><li>droidmonkey</li><li>phoerious</li><li>TheZ3ro</li><li>louib</li><li>Weslly</li><li>debfx (KeePassX)</li></ul></body></html></string>
|
||||
<string notr="true"><ul>
|
||||
<li>droidmonkey</li>
|
||||
<li>phoerious</li>
|
||||
<li>TheZ3ro</li>
|
||||
<li>louib</li>
|
||||
<li>Weslly</li>
|
||||
<li>debfx (KeePassX)</li>
|
||||
</ul></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -201,51 +195,90 @@
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QTextEdit" name="contributors">
|
||||
<property name="html">
|
||||
<string><html><body>
|
||||
<p style="font-size:x-large; font-weight:600;">Code:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt">debfx (KeePassX)</li>
|
||||
<li style="font-size:10pt">BlueIce (KeePassX)</li>
|
||||
<li style="font-size:10pt">droidmonkey</li>
|
||||
<li style="font-size:10pt">phoerious</li>
|
||||
<li style="font-size:10pt">TheZ3ro</li>
|
||||
<li style="font-size:10pt">louib</li>
|
||||
<li style="font-size:10pt">weslly</li>
|
||||
<li style="font-size:10pt">keithbennett (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">Typz (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">denk-mal (KeePassHTTP)</li>
|
||||
<li style="font-size:10pt">kylemanna (YubiKey)</li>
|
||||
<li style="font-size:10pt">seatedscribe (CSV Importer)</li>
|
||||
<li style="font-size:10pt">pgalves (Inline Messages)</li>
|
||||
</ul>
|
||||
<p style="font-size:x-large; font-weight:600;">Translations:</p>
|
||||
<ul>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Chinese:</span> Biggulu, ligyxy, BestSteve</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Czech:</span> pavelb, JosefVitu</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Dutch:</span> Vistaus, KnooL, apie</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Finnish:</span> MawKKe</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">French:</span> Scrat15, frgnca, gilbsgilbs, gtalbot, iannick, kyodev, logut</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">German:</span> Calyrx, DavidHamburg, antsas, codejunky, jensrutschmann, montilo, omnisome4, origin_de, pcrcoding, phoerious, rgloor, vlenzer</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Greek:</span> nplatis</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Italian:</span> TheZ3ro, FranzMari, Mte90, tosky</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Kazakh:</span> sotrud_nik</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Lithuanian:</span> Moo</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Polish:</span> konradmb, mrerexx</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Portuguese: </span>vitor895, weslly, American_Jesus, mihai.ile</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Russian:</span> vsvyatski, KekcuHa, wkill95</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Spanish:</span> EdwardNavarro, antifaz, piegope, pquin, vsvyatski</li>
|
||||
<li style="font-size:10pt"><span style="font-weight:600;">Swedish:</span> henziger</li>
|
||||
</ul>
|
||||
</body></html></string>
|
||||
<widget class="QScrollArea" name="scrollArea">
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>591</width>
|
||||
<height>760</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||
<item>
|
||||
<widget class="QLabel" name="contributors">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="cursor">
|
||||
<cursorShape>IBeamCursor</cursorShape>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true"><h2>Code:</h2>
|
||||
<ul>
|
||||
<li>debfx (KeePassX) </li>
|
||||
<li>BlueIce (KeePassX) </li>
|
||||
<li>droidmonkey </li>
|
||||
<li>phoerious </li>
|
||||
<li>TheZ3ro </li>
|
||||
<li>louib </li>
|
||||
<li >weslly </li>
|
||||
<li>keithbennett (KeePassHTTP) </li>
|
||||
<li>Typz (KeePassHTTP) </li>
|
||||
<li>denk-mal (KeePassHTTP) </li>
|
||||
<li>kylemanna (YubiKey) </li>
|
||||
<li>seatedscribe (CSV Importer) </li>
|
||||
<li>pgalves (Inline Messages) </li>
|
||||
</ul>
|
||||
|
||||
<h2>Translations:</h2>
|
||||
<ul>
|
||||
<li><b>Chinese:</b> Biggulu, ligyxy, BestSteve </li>
|
||||
<li><b>Czech:</b> pavelb, JosefVitu </li>
|
||||
<li><b>Dutch:</b> Vistaus, KnooL, apie </li>
|
||||
<li><b>Finnish:</b> MawKKe </li>
|
||||
<li><b>French:</b> Scrat15, frgnca, gilbsgilbs, gtalbot, iannick, kyodev, logut </li>
|
||||
<li><b>German:</b> Calyrx, DavidHamburg, antsas, codejunky, jensrutschmann, montilo, omnisome4, origin_de, pcrcoding, phoerious, rgloor, vlenzer </li>
|
||||
<li><b>Greek:</b> nplatis </li>
|
||||
<li><b>Italian:</b> TheZ3ro, FranzMari, Mte90, tosky </li>
|
||||
<li><b>Kazakh:</b> sotrud_nik </li>
|
||||
<li><b>Lithuanian:</b> Moo </li>
|
||||
<li><b>Polish:</b> konradmb, mrerexx </li>
|
||||
<li><b>Portuguese: </b>vitor895, weslly, American_Jesus, mihai.ile </li>
|
||||
<li><b>Russian:</b> vsvyatski, KekcuHa, wkill95 </li>
|
||||
<li><b>Spanish:</b> EdwardNavarro, antifaz, piegope, pquin, vsvyatski </li>
|
||||
<li><b>Swedish:</b> henziger </li>
|
||||
</ul></string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::RichText</enum>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::TextBrowserInteraction</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p align="center"><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">See Contributions on GitHub</span></a></p></body></html></string>
|
||||
<string><a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">See Contributions on GitHub</a></string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="openExternalLinks">
|
||||
<bool>true</bool>
|
||||
@ -268,21 +301,21 @@
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p>Include the following information whenever you report a bug:</p></body></html></string>
|
||||
<string>Include the following information whenever you report a bug:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPlainTextEdit" name="debugInfo">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="plainText">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::TextBrowserInteraction</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include "Application.h"
|
||||
#include "MainWindow.h"
|
||||
#include "core/Config.h"
|
||||
|
||||
#include <QAbstractNativeEventFilter>
|
||||
#include <QFileOpenEvent>
|
||||
@ -80,8 +81,8 @@ Application::Application(int& argc, char** argv)
|
||||
#ifdef Q_OS_UNIX
|
||||
, m_unixSignalNotifier(nullptr)
|
||||
#endif
|
||||
, alreadyRunning(false)
|
||||
, lock(nullptr)
|
||||
, m_alreadyRunning(false)
|
||||
, m_lockFile(nullptr)
|
||||
{
|
||||
#if defined(Q_OS_UNIX) && !defined(Q_OS_OSX)
|
||||
installNativeEventFilter(new XcbEventFilter());
|
||||
@ -98,35 +99,57 @@ Application::Application(int& argc, char** argv)
|
||||
}
|
||||
QString identifier = "keepassxc";
|
||||
if (!userName.isEmpty()) {
|
||||
identifier.append("-");
|
||||
identifier.append(userName);
|
||||
identifier += "-" + userName;
|
||||
}
|
||||
#ifdef QT_DEBUG
|
||||
// In DEBUG mode don't interfere with Release instances
|
||||
identifier += "-DEBUG";
|
||||
#endif
|
||||
QString socketName = identifier + ".socket";
|
||||
QString lockName = identifier + ".lock";
|
||||
|
||||
// According to documentation we should use RuntimeLocation on *nixes, but even Qt doesn't respect
|
||||
// this and creates sockets in TempLocation, so let's be consistent.
|
||||
lock = new QLockFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation) + "/" + lockName);
|
||||
lock->setStaleLockTime(0);
|
||||
lock->tryLock();
|
||||
switch (lock->error()) {
|
||||
m_lockFile = new QLockFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation) + "/" + lockName);
|
||||
m_lockFile->setStaleLockTime(0);
|
||||
m_lockFile->tryLock();
|
||||
|
||||
switch (m_lockFile->error()) {
|
||||
case QLockFile::NoError:
|
||||
server.setSocketOptions(QLocalServer::UserAccessOption);
|
||||
server.listen(socketName);
|
||||
connect(&server, SIGNAL(newConnection()), this, SIGNAL(anotherInstanceStarted()));
|
||||
// No existing lock was found, start listener
|
||||
m_lockServer.setSocketOptions(QLocalServer::UserAccessOption);
|
||||
m_lockServer.listen(socketName);
|
||||
connect(&m_lockServer, SIGNAL(newConnection()), this, SIGNAL(anotherInstanceStarted()));
|
||||
break;
|
||||
case QLockFile::LockFailedError: {
|
||||
alreadyRunning = true;
|
||||
// notify the other instance
|
||||
// try several times, in case the other instance is still starting up
|
||||
if (config()->get("SingleInstance").toBool()) {
|
||||
// Attempt to connect to the existing instance
|
||||
QLocalSocket client;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
client.connectToServer(socketName);
|
||||
if (client.waitForConnected(150)) {
|
||||
// Connection succeeded, this will raise the existing window if minimized
|
||||
client.abort();
|
||||
m_alreadyRunning = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_alreadyRunning) {
|
||||
// If we get here then the original instance is likely dead
|
||||
qWarning() << QCoreApplication::translate("Main",
|
||||
"Existing single-instance lock file is invalid. Launching new instance.")
|
||||
.toUtf8().constData();
|
||||
|
||||
// forceably reset the lock file
|
||||
m_lockFile->removeStaleLockFile();
|
||||
m_lockFile->tryLock();
|
||||
// start the listen server
|
||||
m_lockServer.setSocketOptions(QLocalServer::UserAccessOption);
|
||||
m_lockServer.listen(socketName);
|
||||
connect(&m_lockServer, SIGNAL(newConnection()), this, SIGNAL(anotherInstanceStarted()));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -138,10 +161,10 @@ Application::Application(int& argc, char** argv)
|
||||
|
||||
Application::~Application()
|
||||
{
|
||||
server.close();
|
||||
if (lock) {
|
||||
lock->unlock();
|
||||
delete lock;
|
||||
m_lockServer.close();
|
||||
if (m_lockFile) {
|
||||
m_lockFile->unlock();
|
||||
delete m_lockFile;
|
||||
}
|
||||
}
|
||||
|
||||
@ -232,6 +255,10 @@ void Application::quitBySignal()
|
||||
|
||||
bool Application::isAlreadyRunning() const
|
||||
{
|
||||
return alreadyRunning;
|
||||
#ifdef QT_DEBUG
|
||||
// In DEBUG mode we can run unlimited instances
|
||||
return false;
|
||||
#endif
|
||||
return config()->get("SingleInstance").toBool() && m_alreadyRunning;
|
||||
}
|
||||
|
||||
|
@ -60,9 +60,9 @@ private:
|
||||
static void handleUnixSignal(int sig);
|
||||
static int unixSignalSocket[2];
|
||||
#endif
|
||||
bool alreadyRunning;
|
||||
QLockFile* lock;
|
||||
QLocalServer server;
|
||||
bool m_alreadyRunning;
|
||||
QLockFile* m_lockFile;
|
||||
QLocalServer m_lockServer;
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_APPLICATION_H
|
||||
|
@ -19,7 +19,7 @@
|
||||
<item>
|
||||
<widget class="QCheckBox" name="titleClone">
|
||||
<property name="text">
|
||||
<string>Append ' - Copy' to title</string>
|
||||
<string>Append ' - Clone' to title</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
|
@ -119,6 +119,18 @@ void DatabaseOpenWidget::load(const QString& filename)
|
||||
m_ui->editPassword->setFocus();
|
||||
}
|
||||
|
||||
void DatabaseOpenWidget::clearForms()
|
||||
{
|
||||
m_ui->editPassword->clear();
|
||||
m_ui->comboKeyFile->clear();
|
||||
m_ui->checkPassword->setChecked(false);
|
||||
m_ui->checkKeyFile->setChecked(false);
|
||||
m_ui->checkChallengeResponse->setChecked(false);
|
||||
m_ui->buttonTogglePassword->setChecked(false);
|
||||
m_db = nullptr;
|
||||
}
|
||||
|
||||
|
||||
Database* DatabaseOpenWidget::database()
|
||||
{
|
||||
return m_db;
|
||||
|
@ -39,6 +39,7 @@ public:
|
||||
explicit DatabaseOpenWidget(QWidget* parent = nullptr);
|
||||
~DatabaseOpenWidget();
|
||||
void load(const QString& filename);
|
||||
void clearForms();
|
||||
void enterKey(const QString& pw, const QString& keyFile);
|
||||
Database* database();
|
||||
|
||||
|
@ -363,6 +363,8 @@ bool DatabaseTabWidget::saveDatabase(Database* db)
|
||||
emit messageDismissTab();
|
||||
return true;
|
||||
} else {
|
||||
dbStruct.modified = true;
|
||||
updateTabName(db);
|
||||
emit messageTab(tr("Writing the database failed.").append("\n").append(errorMessage),
|
||||
MessageWidget::Error);
|
||||
return false;
|
||||
|
@ -813,6 +813,7 @@ void DatabaseWidget::mergeDatabase(bool accepted)
|
||||
m_db->merge(srcDb);
|
||||
}
|
||||
|
||||
m_databaseOpenMergeWidget->clearForms();
|
||||
setCurrentWidget(m_mainWidget);
|
||||
emit databaseMerged(m_db);
|
||||
}
|
||||
@ -918,6 +919,7 @@ void DatabaseWidget::switchToImportCsv(const QString& fileName)
|
||||
|
||||
void DatabaseWidget::switchToOpenMergeDatabase(const QString& fileName)
|
||||
{
|
||||
m_databaseOpenMergeWidget->clearForms();
|
||||
m_databaseOpenMergeWidget->load(fileName);
|
||||
setCurrentWidget(m_databaseOpenMergeWidget);
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ EditWidget::EditWidget(QWidget* parent)
|
||||
headerLabelFont.setBold(true);
|
||||
headerLabelFont.setPointSize(headerLabelFont.pointSize() + 2);
|
||||
headlineLabel()->setFont(headerLabelFont);
|
||||
headlineLabel()->setTextFormat(Qt::PlainText);
|
||||
|
||||
connect(m_ui->categoryList, SIGNAL(categoryChanged(int)),
|
||||
m_ui->stackedWidget, SLOT(setCurrentIndex(int)));
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <QMessageBox>
|
||||
#include <QFileDialog>
|
||||
|
||||
#include "core/Config.h"
|
||||
#include "core/Group.h"
|
||||
#include "core/Metadata.h"
|
||||
#include "core/Tools.h"
|
||||
@ -67,7 +68,7 @@ EditWidgetIcons::EditWidgetIcons(QWidget* parent)
|
||||
this, SLOT(updateWidgetsDefaultIcons(bool)));
|
||||
connect(m_ui->customIconsRadio, SIGNAL(toggled(bool)),
|
||||
this, SLOT(updateWidgetsCustomIcons(bool)));
|
||||
connect(m_ui->addButton, SIGNAL(clicked()), SLOT(addCustomIcon()));
|
||||
connect(m_ui->addButton, SIGNAL(clicked()), SLOT(addCustomIconFromFile()));
|
||||
connect(m_ui->deleteButton, SIGNAL(clicked()), SLOT(removeCustomIcon()));
|
||||
connect(m_ui->faviconButton, SIGNAL(clicked()), SLOT(downloadFavicon()));
|
||||
|
||||
@ -184,15 +185,7 @@ void EditWidgetIcons::fetchFavicon(const QUrl& url)
|
||||
image.loadFromData(response->collectedData());
|
||||
|
||||
if (!image.isNull()) {
|
||||
//Set the image
|
||||
Uuid uuid = Uuid::random();
|
||||
m_database->metadata()->addCustomIcon(uuid, image.scaled(16, 16));
|
||||
m_customIconModel->setIcons(m_database->metadata()->customIconsScaledPixmaps(),
|
||||
m_database->metadata()->customIconsOrder());
|
||||
QModelIndex index = m_customIconModel->indexFromUuid(uuid);
|
||||
m_ui->customIconsView->setCurrentIndex(index);
|
||||
m_ui->customIconsRadio->setChecked(true);
|
||||
|
||||
addCustomIcon(image);
|
||||
resetFaviconDownload();
|
||||
} else {
|
||||
fetchFaviconFromGoogle(url.host());
|
||||
@ -222,8 +215,18 @@ void EditWidgetIcons::fetchFavicon(const QUrl& url)
|
||||
}
|
||||
|
||||
m_httpClient->setConnectingTimeOut(5000, [this]() {
|
||||
QUrl tempurl = QUrl(m_url);
|
||||
if (tempurl.scheme() == "http") {
|
||||
resetFaviconDownload();
|
||||
MessageBox::warning(this, tr("Error"), tr("Unable to fetch favicon."));
|
||||
emit messageEditEntry(tr("Unable to fetch favicon.") + "\n" +
|
||||
tr("Hint: You can enable Google as a fallback under Tools>Settings>Security"),
|
||||
MessageWidget::Error);
|
||||
} else {
|
||||
tempurl.setScheme("http");
|
||||
m_url = tempurl.url();
|
||||
tempurl.setPath("/favicon.ico");
|
||||
fetchFavicon(tempurl);
|
||||
}
|
||||
});
|
||||
|
||||
m_ui->faviconButton->setDisabled(true);
|
||||
@ -231,13 +234,15 @@ void EditWidgetIcons::fetchFavicon(const QUrl& url)
|
||||
|
||||
void EditWidgetIcons::fetchFaviconFromGoogle(const QString& domain)
|
||||
{
|
||||
if (m_fallbackToGoogle) {
|
||||
if (config()->get("security/IconDownloadFallbackToGoogle", false).toBool() && m_fallbackToGoogle) {
|
||||
resetFaviconDownload();
|
||||
m_fallbackToGoogle = false;
|
||||
fetchFavicon(QUrl("http://www.google.com/s2/favicons?domain=" + domain));
|
||||
QUrl faviconUrl = QUrl("https://www.google.com/s2/favicons");
|
||||
faviconUrl.setQuery("domain=" + QUrl::toPercentEncoding(domain));
|
||||
fetchFavicon(faviconUrl);
|
||||
} else {
|
||||
resetFaviconDownload();
|
||||
MessageBox::warning(this, tr("Error"), tr("Unable to fetch favicon."));
|
||||
emit messageEditEntry(tr("Unable to fetch favicon."), MessageWidget::Error);
|
||||
}
|
||||
}
|
||||
|
||||
@ -258,7 +263,7 @@ void EditWidgetIcons::resetFaviconDownload(bool clearRedirect)
|
||||
}
|
||||
#endif
|
||||
|
||||
void EditWidgetIcons::addCustomIcon()
|
||||
void EditWidgetIcons::addCustomIconFromFile()
|
||||
{
|
||||
if (m_database) {
|
||||
QString filter = QString("%1 (%2);;%3 (*)").arg(tr("Images"),
|
||||
@ -267,22 +272,41 @@ void EditWidgetIcons::addCustomIcon()
|
||||
QString filename = QFileDialog::getOpenFileName(
|
||||
this, tr("Select Image"), "", filter);
|
||||
if (!filename.isEmpty()) {
|
||||
QImage image(filename);
|
||||
if (!image.isNull()) {
|
||||
Uuid uuid = Uuid::random();
|
||||
m_database->metadata()->addCustomIcon(uuid, image.scaled(16, 16));
|
||||
m_customIconModel->setIcons(m_database->metadata()->customIconsScaledPixmaps(),
|
||||
m_database->metadata()->customIconsOrder());
|
||||
QModelIndex index = m_customIconModel->indexFromUuid(uuid);
|
||||
m_ui->customIconsView->setCurrentIndex(index);
|
||||
}
|
||||
else {
|
||||
auto icon = QImage(filename);
|
||||
if (!icon.isNull()) {
|
||||
addCustomIcon(QImage(filename));
|
||||
} else {
|
||||
emit messageEditEntry(tr("Can't read icon"), MessageWidget::Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EditWidgetIcons::addCustomIcon(const QImage &icon)
|
||||
{
|
||||
if (m_database) {
|
||||
Uuid uuid = m_database->metadata()->findCustomIcon(icon);
|
||||
if (uuid.isNull()) {
|
||||
uuid = Uuid::random();
|
||||
// Don't add an icon larger than 128x128, but retain original size if smaller
|
||||
if (icon.width() > 128 || icon.height() > 128) {
|
||||
m_database->metadata()->addCustomIcon(uuid, icon.scaled(128, 128));
|
||||
} else {
|
||||
m_database->metadata()->addCustomIcon(uuid, icon);
|
||||
}
|
||||
|
||||
m_customIconModel->setIcons(m_database->metadata()->customIconsScaledPixmaps(),
|
||||
m_database->metadata()->customIconsOrder());
|
||||
} else {
|
||||
emit messageEditEntry(tr("Custom icon already exists"), MessageWidget::Information);
|
||||
}
|
||||
|
||||
// Select the new or existing icon
|
||||
QModelIndex index = m_customIconModel->indexFromUuid(uuid);
|
||||
m_ui->customIconsView->setCurrentIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
void EditWidgetIcons::removeCustomIcon()
|
||||
{
|
||||
if (m_database) {
|
||||
|
@ -78,7 +78,8 @@ private slots:
|
||||
void fetchFaviconFromGoogle(const QString& domain);
|
||||
void resetFaviconDownload(bool clearRedirect = true);
|
||||
#endif
|
||||
void addCustomIcon();
|
||||
void addCustomIconFromFile();
|
||||
void addCustomIcon(const QImage& icon);
|
||||
void removeCustomIcon();
|
||||
void updateWidgetsDefaultIcons(bool checked);
|
||||
void updateWidgetsCustomIcons(bool checked);
|
||||
|
@ -240,8 +240,10 @@ MainWindow::MainWindow()
|
||||
SLOT(databaseStatusChanged(DatabaseWidget*)));
|
||||
connect(m_ui->stackedWidget, SIGNAL(currentChanged(int)), SLOT(setMenuActionState()));
|
||||
connect(m_ui->stackedWidget, SIGNAL(currentChanged(int)), SLOT(updateWindowTitle()));
|
||||
connect(m_ui->settingsWidget, SIGNAL(editFinished(bool)), SLOT(switchToDatabases()));
|
||||
connect(m_ui->settingsWidget, SIGNAL(accepted()), SLOT(applySettingsChanges()));
|
||||
connect(m_ui->settingsWidget, SIGNAL(apply()), SLOT(applySettingsChanges()));
|
||||
connect(m_ui->settingsWidget, SIGNAL(accepted()), SLOT(switchToDatabases()));
|
||||
connect(m_ui->settingsWidget, SIGNAL(rejected()), SLOT(switchToDatabases()));
|
||||
|
||||
connect(m_ui->actionDatabaseNew, SIGNAL(triggered()), m_ui->tabWidget,
|
||||
SLOT(newDatabase()));
|
||||
@ -550,8 +552,14 @@ void MainWindow::updateWindowTitle()
|
||||
QString customWindowTitlePart;
|
||||
int stackedWidgetIndex = m_ui->stackedWidget->currentIndex();
|
||||
int tabWidgetIndex = m_ui->tabWidget->currentIndex();
|
||||
bool isModified = m_ui->tabWidget->isModified(tabWidgetIndex);
|
||||
|
||||
if (stackedWidgetIndex == DatabaseTabScreen && tabWidgetIndex != -1) {
|
||||
customWindowTitlePart = m_ui->tabWidget->tabText(tabWidgetIndex);
|
||||
if (isModified) {
|
||||
// remove asterisk '*' from title
|
||||
customWindowTitlePart.remove(customWindowTitlePart.size() - 1, 1);
|
||||
}
|
||||
if (m_ui->tabWidget->readOnly(tabWidgetIndex)) {
|
||||
customWindowTitlePart.append(QString(" [%1]").arg(tr("read-only")));
|
||||
}
|
||||
@ -563,7 +571,7 @@ void MainWindow::updateWindowTitle()
|
||||
if (customWindowTitlePart.isEmpty()) {
|
||||
windowTitle = BaseWindowTitle;
|
||||
} else {
|
||||
windowTitle = QString("%1 - %2").arg(customWindowTitlePart, BaseWindowTitle);
|
||||
windowTitle = QString("%1[*] - %2").arg(customWindowTitlePart, BaseWindowTitle);
|
||||
}
|
||||
|
||||
if (customWindowTitlePart.isEmpty() || stackedWidgetIndex == 1) {
|
||||
@ -572,7 +580,7 @@ void MainWindow::updateWindowTitle()
|
||||
setWindowFilePath(m_ui->tabWidget->databasePath(tabWidgetIndex));
|
||||
}
|
||||
|
||||
setWindowModified(m_ui->tabWidget->isModified(tabWidgetIndex));
|
||||
setWindowModified(isModified);
|
||||
|
||||
setWindowTitle(windowTitle);
|
||||
}
|
||||
|
@ -200,7 +200,7 @@
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuHelp">
|
||||
<property name="title">
|
||||
<string>He&lp</string>
|
||||
<string>&Help</string>
|
||||
</property>
|
||||
<addaction name="actionAbout"/>
|
||||
</widget>
|
||||
@ -309,7 +309,7 @@
|
||||
</action>
|
||||
<action name="actionDatabaseOpen">
|
||||
<property name="text">
|
||||
<string>&Open database</string>
|
||||
<string>&Open database...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionDatabaseSave">
|
||||
@ -391,7 +391,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Sa&ve database as</string>
|
||||
<string>Sa&ve database as...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionChangeMasterKey">
|
||||
@ -399,7 +399,7 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Change &master key</string>
|
||||
<string>Change &master key...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionChangeDatabaseSettings">
|
||||
@ -517,22 +517,22 @@
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Export to CSV file</string>
|
||||
<string>&Export to CSV file...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionImportKeePass1">
|
||||
<property name="text">
|
||||
<string>Import KeePass 1 database</string>
|
||||
<string>Import KeePass 1 database...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionImportCsv">
|
||||
<property name="text">
|
||||
<string>Import CSV file</string>
|
||||
<string>Import CSV file...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionRepairDatabase">
|
||||
<property name="text">
|
||||
<string>Re&pair database</string>
|
||||
<string>Re&pair database...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionEntryTotp">
|
||||
@ -542,7 +542,7 @@
|
||||
</action>
|
||||
<action name="actionEntrySetupTotp">
|
||||
<property name="text">
|
||||
<string>Setup TOTP</string>
|
||||
<string>Set up TOTP...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionEntryCopyTotp">
|
||||
|
@ -2,32 +2,12 @@
|
||||
<ui version="4.0">
|
||||
<class>PasswordGeneratorWidget</class>
|
||||
<widget class="QWidget" name="PasswordGeneratorWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>575</width>
|
||||
<height>305</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>284</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string/>
|
||||
</property>
|
||||
@ -188,17 +168,11 @@ QProgressBar::chunk {
|
||||
<item>
|
||||
<widget class="QTabWidget" name="tabWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="tabPosition">
|
||||
<enum>QTabWidget::North</enum>
|
||||
</property>
|
||||
@ -225,12 +199,6 @@ QProgressBar::chunk {
|
||||
<layout class="QHBoxLayout" name="alphabetLayout" stretch="0,0,0,0,1,0">
|
||||
<item>
|
||||
<widget class="QToolButton" name="checkBoxUpper">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
@ -256,12 +224,6 @@ QProgressBar::chunk {
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="checkBoxLower">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
@ -287,12 +249,6 @@ QProgressBar::chunk {
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="checkBoxNumbers">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
@ -318,12 +274,6 @@ QProgressBar::chunk {
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="checkBoxSpecialChars">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
@ -349,12 +299,6 @@ QProgressBar::chunk {
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="checkBoxExtASCII">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="MinimumExpanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
@ -578,7 +522,7 @@ QProgressBar::chunk {
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="editWordSeparator">
|
||||
<property name="text">
|
||||
<string> </string>
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "ui_SettingsWidgetGeneral.h"
|
||||
#include "ui_SettingsWidgetSecurity.h"
|
||||
|
||||
#include "config-keepassx.h"
|
||||
#include "autotype/AutoType.h"
|
||||
#include "core/Config.h"
|
||||
#include "core/Translator.h"
|
||||
@ -68,6 +69,7 @@ SettingsWidget::SettingsWidget(QWidget* parent)
|
||||
}
|
||||
|
||||
connect(this, SIGNAL(accepted()), SLOT(saveSettings()));
|
||||
connect(this, SIGNAL(apply()), SLOT(saveSettings()));
|
||||
connect(this, SIGNAL(rejected()), SLOT(reject()));
|
||||
|
||||
connect(m_generalUi->autoSaveAfterEveryChangeCheckBox, SIGNAL(toggled(bool)),
|
||||
@ -79,6 +81,10 @@ SettingsWidget::SettingsWidget(QWidget* parent)
|
||||
m_secUi->clearClipboardSpinBox, SLOT(setEnabled(bool)));
|
||||
connect(m_secUi->lockDatabaseIdleCheckBox, SIGNAL(toggled(bool)),
|
||||
m_secUi->lockDatabaseIdleSpinBox, SLOT(setEnabled(bool)));
|
||||
|
||||
#ifndef WITH_XC_HTTP
|
||||
m_secUi->privacy->setVisible(false);
|
||||
#endif
|
||||
}
|
||||
|
||||
SettingsWidget::~SettingsWidget()
|
||||
@ -101,6 +107,10 @@ void SettingsWidget::loadSettings()
|
||||
tr("Access error for config file %1").arg(config()->getFileName()), MessageWidget::Error);
|
||||
}
|
||||
|
||||
#ifdef QT_DEBUG
|
||||
m_generalUi->singleInstanceCheckBox->setEnabled(false);
|
||||
#endif
|
||||
m_generalUi->singleInstanceCheckBox->setChecked(config()->get("SingleInstance").toBool());
|
||||
m_generalUi->rememberLastDatabasesCheckBox->setChecked(config()->get("RememberLastDatabases").toBool());
|
||||
m_generalUi->rememberLastKeyFilesCheckBox->setChecked(config()->get("RememberLastKeyFiles").toBool());
|
||||
m_generalUi->openPreviousDatabasesOnStartupCheckBox->setChecked(
|
||||
@ -135,6 +145,7 @@ void SettingsWidget::loadSettings()
|
||||
if (m_globalAutoTypeKey > 0 && m_globalAutoTypeModifiers > 0) {
|
||||
m_generalUi->autoTypeShortcutWidget->setShortcut(m_globalAutoTypeKey, m_globalAutoTypeModifiers);
|
||||
}
|
||||
m_generalUi->autoTypeDelaySpinBox->setValue(config()->get("AutoTypeDelay").toInt());
|
||||
}
|
||||
|
||||
|
||||
@ -145,6 +156,7 @@ void SettingsWidget::loadSettings()
|
||||
m_secUi->lockDatabaseIdleSpinBox->setValue(config()->get("security/lockdatabaseidlesec").toInt());
|
||||
m_secUi->lockDatabaseMinimizeCheckBox->setChecked(config()->get("security/lockdatabaseminimize").toBool());
|
||||
m_secUi->lockDatabaseOnScreenLockCheckBox->setChecked(config()->get("security/lockdatabasescreenlock").toBool());
|
||||
m_secUi->lockDatabaseOnScreenLockCheckBox->setChecked(config()->get("security/IconDownloadFallbackToGoogle").toBool());
|
||||
|
||||
m_secUi->passwordCleartextCheckBox->setChecked(config()->get("security/passwordscleartext").toBool());
|
||||
m_secUi->passwordRepeatCheckBox->setChecked(config()->get("security/passwordsrepeat").toBool());
|
||||
@ -168,6 +180,7 @@ void SettingsWidget::saveSettings()
|
||||
return;
|
||||
}
|
||||
|
||||
config()->set("SingleInstance", m_generalUi->singleInstanceCheckBox->isChecked());
|
||||
config()->set("RememberLastDatabases", m_generalUi->rememberLastDatabasesCheckBox->isChecked());
|
||||
config()->set("RememberLastKeyFiles", m_generalUi->rememberLastKeyFilesCheckBox->isChecked());
|
||||
config()->set("OpenPreviousDatabasesOnStartup",
|
||||
@ -198,6 +211,7 @@ void SettingsWidget::saveSettings()
|
||||
config()->set("GlobalAutoTypeKey", m_generalUi->autoTypeShortcutWidget->key());
|
||||
config()->set("GlobalAutoTypeModifiers",
|
||||
static_cast<int>(m_generalUi->autoTypeShortcutWidget->modifiers()));
|
||||
config()->set("AutoTypeDelay", m_generalUi->autoTypeDelaySpinBox->value());
|
||||
}
|
||||
config()->set("security/clearclipboard", m_secUi->clearClipboardCheckBox->isChecked());
|
||||
config()->set("security/clearclipboardtimeout", m_secUi->clearClipboardSpinBox->value());
|
||||
@ -206,15 +220,23 @@ void SettingsWidget::saveSettings()
|
||||
config()->set("security/lockdatabaseidlesec", m_secUi->lockDatabaseIdleSpinBox->value());
|
||||
config()->set("security/lockdatabaseminimize", m_secUi->lockDatabaseMinimizeCheckBox->isChecked());
|
||||
config()->set("security/lockdatabasescreenlock", m_secUi->lockDatabaseOnScreenLockCheckBox->isChecked());
|
||||
config()->set("security/IconDownloadFallbackToGoogle", m_secUi->fallbackToGoogle->isChecked());
|
||||
|
||||
config()->set("security/passwordscleartext", m_secUi->passwordCleartextCheckBox->isChecked());
|
||||
config()->set("security/passwordsrepeat", m_secUi->passwordRepeatCheckBox->isChecked());
|
||||
|
||||
// Security: clear storage if related settings are disabled
|
||||
if (!config()->get("RememberLastDatabases").toBool()) {
|
||||
config()->set("LastDatabases", QVariant());
|
||||
}
|
||||
|
||||
if (!config()->get("RememberLastKeyFiles").toBool()) {
|
||||
config()->set("LastKeyFiles", QVariant());
|
||||
}
|
||||
|
||||
for (const ExtraPage& page: asConst(m_extraPages)) {
|
||||
page.saveSettings();
|
||||
}
|
||||
|
||||
emit editFinished(true);
|
||||
}
|
||||
|
||||
void SettingsWidget::reject()
|
||||
@ -224,7 +246,6 @@ void SettingsWidget::reject()
|
||||
autoType()->registerGlobalShortcut(m_globalAutoTypeKey, m_globalAutoTypeModifiers);
|
||||
}
|
||||
|
||||
emit editFinished(false);
|
||||
}
|
||||
|
||||
void SettingsWidget::enableAutoSaveOnExit(bool checked)
|
||||
|
@ -46,9 +46,6 @@ public:
|
||||
void addSettingsPage(ISettingsPage * page);
|
||||
void loadSettings();
|
||||
|
||||
signals:
|
||||
void editFinished(bool accepted);
|
||||
|
||||
private slots:
|
||||
void saveSettings();
|
||||
void reject();
|
||||
|
@ -33,6 +33,16 @@
|
||||
<string>Basic Settings</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="singleInstanceCheckBox">
|
||||
<property name="text">
|
||||
<string>Start only a single instance of KeePassXC</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="rememberLastDatabasesCheckBox">
|
||||
<property name="text">
|
||||
@ -318,27 +328,18 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>15</number>
|
||||
</property>
|
||||
<item alignment="Qt::AlignRight">
|
||||
<widget class="QLabel" name="autoTypeShortcutLabel">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<property name="topMargin">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="autoTypeShortcutLabel_2">
|
||||
<property name="text">
|
||||
<string>Global Auto-Type shortcut</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<item row="1" column="1">
|
||||
<widget class="ShortcutWidget" name="autoTypeShortcutWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
@ -348,6 +349,35 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="autoTypeDelayLabel_2">
|
||||
<property name="text">
|
||||
<string>Auto-Type delay</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QSpinBox" name="autoTypeDelaySpinBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="suffix">
|
||||
<string> ms</string>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>999</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>25</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -139,6 +139,22 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="privacy">
|
||||
<property name="title">
|
||||
<string>Privacy</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="fallbackToGoogle">
|
||||
<property name="text">
|
||||
<string>Use Google as fallback for downloading website icons</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
|
@ -26,6 +26,7 @@ UnlockDatabaseDialog::UnlockDatabaseDialog(QWidget* parent)
|
||||
: QDialog(parent)
|
||||
, m_view(new UnlockDatabaseWidget(this))
|
||||
{
|
||||
setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
|
||||
connect(m_view, SIGNAL(editFinished(bool)), this, SLOT(complete(bool)));
|
||||
}
|
||||
|
||||
|
@ -26,14 +26,3 @@ UnlockDatabaseWidget::UnlockDatabaseWidget(QWidget* parent)
|
||||
{
|
||||
m_ui->labelHeadline->setText(tr("Unlock database"));
|
||||
}
|
||||
|
||||
void UnlockDatabaseWidget::clearForms()
|
||||
{
|
||||
m_ui->editPassword->clear();
|
||||
m_ui->comboKeyFile->clear();
|
||||
m_ui->checkPassword->setChecked(false);
|
||||
m_ui->checkKeyFile->setChecked(false);
|
||||
m_ui->checkChallengeResponse->setChecked(false);
|
||||
m_ui->buttonTogglePassword->setChecked(false);
|
||||
m_db = nullptr;
|
||||
}
|
||||
|
@ -26,7 +26,6 @@ class UnlockDatabaseWidget : public DatabaseOpenWidget
|
||||
|
||||
public:
|
||||
explicit UnlockDatabaseWidget(QWidget* parent = nullptr);
|
||||
void clearForms();
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_UNLOCKDATABASEWIDGET_H
|
||||
|
@ -280,15 +280,15 @@ void EditEntryWidget::loadEntry(Entry* entry, bool create, bool history, const Q
|
||||
m_history = history;
|
||||
|
||||
if (history) {
|
||||
setHeadline(QString("%1 > %2").arg(parentName.toHtmlEscaped(), tr("Entry history")));
|
||||
setHeadline(QString("%1 > %2").arg(parentName, tr("Entry history")));
|
||||
}
|
||||
else {
|
||||
if (create) {
|
||||
setHeadline(QString("%1 > %2").arg(parentName.toHtmlEscaped(), tr("Add entry")));
|
||||
setHeadline(QString("%1 > %2").arg(parentName, tr("Add entry")));
|
||||
}
|
||||
else {
|
||||
setHeadline(QString("%1 > %2 > %3").arg(parentName.toHtmlEscaped(),
|
||||
entry->title().toHtmlEscaped(), tr("Edit entry")));
|
||||
setHeadline(QString("%1 > %2 > %3").arg(parentName,
|
||||
entry->title(), tr("Edit entry")));
|
||||
}
|
||||
}
|
||||
|
||||
@ -363,7 +363,7 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
|
||||
IconStruct iconStruct;
|
||||
iconStruct.uuid = entry->iconUuid();
|
||||
iconStruct.number = entry->iconNumber();
|
||||
m_iconsWidget->load(entry->uuid(), m_database, iconStruct, entry->url());
|
||||
m_iconsWidget->load(entry->uuid(), m_database, iconStruct, entry->webUrl());
|
||||
connect(m_mainUi->urlEdit, SIGNAL(textChanged(QString)), m_iconsWidget, SLOT(setUrl(QString)));
|
||||
|
||||
m_autoTypeUi->enableButton->setChecked(entry->autoTypeEnabled());
|
||||
@ -429,6 +429,7 @@ void EditEntryWidget::saveEntry()
|
||||
// must stand before beginUpdate()
|
||||
// we don't want to create a new history item, if only the history has changed
|
||||
m_entry->removeHistoryItems(m_historyModel->deletedEntries());
|
||||
m_historyModel->clearDeletedEntries();
|
||||
|
||||
m_autoTypeAssoc->removeEmpty();
|
||||
|
||||
@ -445,6 +446,12 @@ void EditEntryWidget::saveEntry()
|
||||
|
||||
void EditEntryWidget::acceptEntry()
|
||||
{
|
||||
// Check if passwords are mismatched first to prevent saving
|
||||
if (!passwordsEqual()) {
|
||||
showMessage(tr("Different passwords supplied."), MessageWidget::Error);
|
||||
return;
|
||||
}
|
||||
|
||||
saveEntry();
|
||||
clear();
|
||||
emit editFinished(true);
|
||||
@ -912,8 +919,7 @@ void EditEntryWidget::deleteHistoryEntry()
|
||||
m_historyModel->deleteIndex(index);
|
||||
if (m_historyModel->rowCount() > 0) {
|
||||
m_historyUi->deleteAllButton->setEnabled(true);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
m_historyUi->deleteAllButton->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
@ -2,20 +2,6 @@
|
||||
<ui version="4.0">
|
||||
<class>EditEntryWidgetMain</class>
|
||||
<widget class="QWidget" name="EditEntryWidgetMain">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>692</width>
|
||||
<height>323</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
@ -34,20 +20,7 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="PasswordGeneratorWidget" name="passwordGenerator" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="PasswordGeneratorWidget" name="passwordGenerator" native="true"/>
|
||||
</item>
|
||||
<item row="2" column="0" alignment="Qt::AlignRight">
|
||||
<widget class="QLabel" name="passwordLabel">
|
||||
|
@ -115,6 +115,11 @@ void EntryHistoryModel::clear()
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
void EntryHistoryModel::clearDeletedEntries()
|
||||
{
|
||||
m_deletedHistoryEntries.clear();
|
||||
}
|
||||
|
||||
QList<Entry*> EntryHistoryModel::deletedEntries()
|
||||
{
|
||||
return m_deletedHistoryEntries;
|
||||
|
@ -37,6 +37,7 @@ public:
|
||||
|
||||
void setEntries(const QList<Entry*>& entries);
|
||||
void clear();
|
||||
void clearDeletedEntries();
|
||||
QList<Entry*> deletedEntries();
|
||||
void deleteIndex(QModelIndex index);
|
||||
void deleteAll();
|
||||
|
@ -151,7 +151,8 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const
|
||||
}
|
||||
return result;
|
||||
case Url:
|
||||
result = entry->resolveMultiplePlaceholders(entry->url());
|
||||
result = entry->maskPasswordPlaceholders(entry->url());
|
||||
result = entry->resolveMultiplePlaceholders(result);
|
||||
if (attr->isReference(EntryAttributes::URLKey)) {
|
||||
result.prepend(tr("Ref: ","Reference abbreviation"));
|
||||
}
|
||||
|
@ -203,7 +203,7 @@ QList<Entry*> Service::searchEntries(Database* db, const QString& hostname)
|
||||
const auto results = EntrySearcher().search(hostname, rootGroup, Qt::CaseInsensitive);
|
||||
for (Entry* entry: results) {
|
||||
QString title = entry->title();
|
||||
QString url = entry->url();
|
||||
QString url = entry->webUrl();
|
||||
|
||||
//Filter to match hostname in Title and Url fields
|
||||
if ( (!title.isEmpty() && hostname.contains(title))
|
||||
|
@ -50,7 +50,7 @@ QByteArray YkChallengeResponseKey::rawKey() const
|
||||
*/
|
||||
bool YkChallengeResponseKey::challenge(const QByteArray& challenge)
|
||||
{
|
||||
return this->challenge(challenge, 1);
|
||||
return this->challenge(challenge, 2);
|
||||
}
|
||||
|
||||
bool YkChallengeResponseKey::challenge(const QByteArray& challenge, unsigned retries)
|
||||
@ -70,8 +70,8 @@ bool YkChallengeResponseKey::challenge(const QByteArray& challenge, unsigned ret
|
||||
|
||||
QEventLoop loop;
|
||||
QFutureWatcher<YubiKey::ChallengeResult> watcher;
|
||||
watcher.setFuture(future);
|
||||
connect(&watcher, SIGNAL(finished()), &loop, SLOT(quit()));
|
||||
watcher.setFuture(future);
|
||||
loop.exec();
|
||||
|
||||
if (m_blocking) {
|
||||
|
@ -154,7 +154,7 @@ YubiKey::ChallengeResult YubiKey::challenge(int slot, bool mayBlock, const QByte
|
||||
QByteArray paddedChallenge = challenge;
|
||||
|
||||
// ensure that YubiKey::init() succeeded
|
||||
if (m_yk == NULL) {
|
||||
if (!init()) {
|
||||
m_mutex.unlock();
|
||||
return ERROR;
|
||||
}
|
||||
|
@ -57,12 +57,10 @@ int main(int argc, char** argv)
|
||||
// don't set organizationName as that changes the return value of
|
||||
// QStandardPaths::writableLocation(QDesktopServices::DataLocation)
|
||||
|
||||
#ifndef QT_DEBUG
|
||||
if (app.isAlreadyRunning()) {
|
||||
qWarning() << QCoreApplication::translate("Main", "Another instance of KeePassXC is already running.").toUtf8().constData();
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
QApplication::setQuitOnLastWindowClosed(false);
|
||||
|
||||
|
@ -98,7 +98,7 @@ set(TEST_LIBRARIES
|
||||
|
||||
set(testsupport_SOURCES modeltest.cpp FailDevice.cpp)
|
||||
add_library(testsupport STATIC ${testsupport_SOURCES})
|
||||
target_link_libraries(testsupport ${MHD_LIBRARIES} Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Test)
|
||||
target_link_libraries(testsupport Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Test)
|
||||
|
||||
if(YUBIKEY_FOUND)
|
||||
set(TEST_LIBRARIES ${TEST_LIBRARIES} ${YUBIKEY_LIBRARIES})
|
||||
|
@ -268,6 +268,17 @@ void TestGui::testEditEntry()
|
||||
QCOMPARE(attrTextEdit->toPlainText(), attrText);
|
||||
editEntryWidget->setCurrentPage(0);
|
||||
|
||||
// Test mismatch passwords
|
||||
QLineEdit* passwordEdit = editEntryWidget->findChild<QLineEdit*>("passwordEdit");
|
||||
QString originalPassword = passwordEdit->text();
|
||||
passwordEdit->setText("newpass");
|
||||
QTest::mouseClick(editEntryWidgetButtonBox->button(QDialogButtonBox::Ok), Qt::LeftButton);
|
||||
MessageWidget* messageWiget = editEntryWidget->findChild<MessageWidget*>("messageWidget");
|
||||
QTRY_VERIFY(messageWiget->isVisible());
|
||||
QCOMPARE(m_dbWidget->currentMode(), DatabaseWidget::EditMode);
|
||||
QCOMPARE(passwordEdit->text(), QString("newpass"));
|
||||
passwordEdit->setText(originalPassword);
|
||||
|
||||
// Save the edit (press OK)
|
||||
QTest::mouseClick(editEntryWidgetButtonBox->button(QDialogButtonBox::Ok), Qt::LeftButton);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user