From cc44a833d5bed06aabbd303eaaee0c4b9103a1b9 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sun, 19 Feb 2017 23:42:05 +0100 Subject: [PATCH 01/13] Revert "Enable High DPI scaling", resolves #323 This reverts commit 188cac34ce6366ec37fea4c5c0a138cd6bfb1215. --- src/main.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 9f912a644..a9ab4c4aa 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include "config-keepassx.h" #include "core/Config.h" @@ -45,10 +44,7 @@ int main(int argc, char** argv) Tools::disableCoreDumps(); #endif Tools::setupSearchPaths(); - -#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) - QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); -#endif + Application app(argc, argv); Application::setApplicationName("keepassxc"); Application::setApplicationVersion(KEEPASSX_VERSION); From a56bcc890376747601ce996bcdfb89257e6af52c Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sun, 19 Feb 2017 22:23:04 +0100 Subject: [PATCH 02/13] Set windows EXE resource properties, resolves #329 --- cmake/GenerateProductVersion.cmake | 118 +++++++++++++++++++++++++++++ cmake/VersionInfo.in | 68 +++++++++++++++++ cmake/VersionResource.rc | 36 +++++++++ src/CMakeLists.txt | 19 ++++- 4 files changed, 240 insertions(+), 1 deletion(-) create mode 100644 cmake/GenerateProductVersion.cmake create mode 100644 cmake/VersionInfo.in create mode 100644 cmake/VersionResource.rc diff --git a/cmake/GenerateProductVersion.cmake b/cmake/GenerateProductVersion.cmake new file mode 100644 index 000000000..2d311efaf --- /dev/null +++ b/cmake/GenerateProductVersion.cmake @@ -0,0 +1,118 @@ +# The MIT License (MIT) +# +# Copyright (c) 2015, by [halex2005](mailto:akharlov@gmail.com) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +include (CMakeParseArguments) + +set (GenerateProductVersionCurrentDir ${CMAKE_CURRENT_LIST_DIR}) + +# generate_product_version() function +# +# This function uses VersionInfo.in template file and VersionResource.rc file +# to generate WIN32 resource with version information and general resource strings. +# +# Usage: +# generate_product_version( +# SomeOutputResourceVariable +# NAME MyGreatProject +# ICON ${PATH_TO_APP_ICON} +# VERSION_MAJOR 2 +# VERSION_MINOR 3 +# VERSION_PATH ${BUILD_COUNTER} +# VERSION_REVISION ${BUILD_REVISION} +# ) +# where BUILD_COUNTER and BUILD_REVISION could be values from your CI server. +# +# You can use generated resource for your executable targets: +# add_executable(target-name ${target-files} ${SomeOutputResourceVariable}) +# +# You can specify resource strings in arguments: +# NAME - name of executable (no defaults, ex: Microsoft Word) +# BUNDLE - bundle (${NAME} is default, ex: Microsoft Office) +# VERSION_MAJOR - 1 is default +# VERSION_MINOR - 0 is default +# VERSION_PATCH - 0 is default +# COMPANY_NAME - your company name (no defaults) +# COMPANY_COPYRIGHT - ${COMPANY_NAME} (C) Copyright ${CURRENT_YEAR} is default +# COMMENTS - ${NAME} v${VERSION_MAJOR}.${VERSION_MINOR} is default +# ORIGINAL_FILENAME - ${NAME} is default +# INTERNAL_NAME - ${NAME} is default +# FILE_DESCRIPTION - ${NAME} is default +function(generate_product_version outfiles) + set (options) + set (oneValueArgs + NAME + BUNDLE + VERSION_MAJOR + VERSION_MINOR + VERSION_PATCH + COMPANY_NAME + COMPANY_COPYRIGHT + COMMENTS + ORIGINAL_FILENAME + INTERNAL_NAME + FILE_DESCRIPTION) + set (multiValueArgs) + cmake_parse_arguments(PRODUCT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + if (NOT PRODUCT_BUNDLE OR "${PRODUCT_BUNDLE}" STREQUAL "") + set(PRODUCT_BUNDLE "${PRODUCT_NAME}") + endif() + if (NOT PRODUCT_VERSION_MAJOR OR "${PRODUCT_VERSION_MAJOR}" STREQUAL "") + set(PRODUCT_VERSION_MAJOR 1) + endif() + if (NOT PRODUCT_VERSION_MINOR OR "${PRODUCT_VERSION_MINOR}" STREQUAL "") + set(PRODUCT_VERSION_MINOR 0) + endif() + if (NOT PRODUCT_VERSION_PATCH OR "${PRODUCT_VERSION_PATCH}" STREQUAL "") + set(PRODUCT_VERSION_PATCH 0) + endif() + + if (NOT PRODUCT_COMPANY_COPYRIGHT OR "${PRODUCT_COMPANY_COPYRIGHT}" STREQUAL "") + string(TIMESTAMP PRODUCT_CURRENT_YEAR "%Y") + set(PRODUCT_COMPANY_COPYRIGHT "Copyright (C) ${PRODUCT_CURRENT_YEAR} ${PRODUCT_COMPANY_NAME}") + endif() + if (NOT PRODUCT_COMMENTS OR "${PRODUCT_COMMENTS}" STREQUAL "") + set(PRODUCT_COMMENTS "${PRODUCT_NAME} v${PRODUCT_VERSION_MAJOR}.${PRODUCT_VERSION_MINOR}") + endif() + if (NOT PRODUCT_ORIGINAL_FILENAME OR "${PRODUCT_ORIGINAL_FILENAME}" STREQUAL "") + set(PRODUCT_ORIGINAL_FILENAME "${PRODUCT_NAME}") + endif() + if (NOT PRODUCT_INTERNAL_NAME OR "${PRODUCT_INTERNAL_NAME}" STREQUAL "") + set(PRODUCT_INTERNAL_NAME "${PRODUCT_NAME}") + endif() + if (NOT PRODUCT_FILE_DESCRIPTION OR "${PRODUCT_FILE_DESCRIPTION}" STREQUAL "") + set(PRODUCT_FILE_DESCRIPTION "${PRODUCT_NAME}") + endif() + + set (_VersionInfoFile ${CMAKE_CURRENT_BINARY_DIR}/VersionInfo.h) + set (_VersionResourceFile ${CMAKE_CURRENT_BINARY_DIR}/VersionResource.rc) + configure_file( + ${GenerateProductVersionCurrentDir}/VersionInfo.in + ${_VersionInfoFile} + @ONLY) + configure_file( + ${GenerateProductVersionCurrentDir}/VersionResource.rc + ${_VersionResourceFile} + COPYONLY) + list(APPEND ${outfiles} ${_VersionInfoFile} ${_VersionResourceFile}) + set (${outfiles} ${${outfiles}} PARENT_SCOPE) +endfunction() diff --git a/cmake/VersionInfo.in b/cmake/VersionInfo.in new file mode 100644 index 000000000..2da6f20c4 --- /dev/null +++ b/cmake/VersionInfo.in @@ -0,0 +1,68 @@ +#pragma once + +#ifndef PRODUCT_VERSION_MAJOR +#define PRODUCT_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@ +#endif + +#ifndef PRODUCT_VERSION_MINOR +#define PRODUCT_VERSION_MINOR @PRODUCT_VERSION_MINOR@ +#endif + +#ifndef PRODUCT_VERSION_PATCH +#define PRODUCT_VERSION_PATCH @PRODUCT_VERSION_PATCH@ +#endif + +#ifndef FILE_VERSION_MAJOR +#define FILE_VERSION_MAJOR @PRODUCT_VERSION_MAJOR@ +#endif + +#ifndef FILE_VERSION_MINOR +#define FILE_VERSION_MINOR @PRODUCT_VERSION_MINOR@ +#endif + +#ifndef FILE_VERSION_PATCH +#define FILE_VERSION_PATCH @PRODUCT_VERSION_PATCH@ +#endif + +#ifndef __TO_STRING +#define __TO_STRING_IMPL(x) #x +#define __TO_STRING(x) __TO_STRING_IMPL(x) +#endif + +#define PRODUCT_VERSION_MAJOR_MINOR_STR __TO_STRING(PRODUCT_VERSION_MAJOR) "." __TO_STRING(PRODUCT_VERSION_MINOR) +#define PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR PRODUCT_VERSION_MAJOR_MINOR_STR "." __TO_STRING(PRODUCT_VERSION_PATCH) +#define PRODUCT_VERSION_RESOURCE PRODUCT_VERSION_MAJOR,PRODUCT_VERSION_MINOR,PRODUCT_VERSION_PATCH,0 +#define PRODUCT_VERSION_RESOURCE_STR PRODUCT_VERSION_MAJOR_MINOR_PATCH_STR "\0" + +#define FILE_VERSION_MAJOR_MINOR_STR __TO_STRING(FILE_VERSION_MAJOR) "." __TO_STRING(FILE_VERSION_MINOR) +#define FILE_VERSION_MAJOR_MINOR_PATCH_STR FILE_VERSION_MAJOR_MINOR_STR "." __TO_STRING(FILE_VERSION_PATCH) +#define FILE_VERSION_RESOURCE FILE_VERSION_MAJOR,FILE_VERSION_MINOR,FILE_VERSION_PATCH,0 +#define FILE_VERSION_RESOURCE_STR FILE_VERSION_MAJOR_MINOR_PATCH_STR "\0" + +#ifndef PRODUCT_COMMENTS +#define PRODUCT_COMMENTS "@PRODUCT_COMMENTS@\0" +#endif + +#ifndef PRODUCT_COMPANY_NAME +#define PRODUCT_COMPANY_NAME "@PRODUCT_COMPANY_NAME@\0" +#endif + +#ifndef PRODUCT_COMPANY_COPYRIGHT +#define PRODUCT_COMPANY_COPYRIGHT "@PRODUCT_COMPANY_COPYRIGHT@\0" +#endif + +#ifndef PRODUCT_FILE_DESCRIPTION +#define PRODUCT_FILE_DESCRIPTION "@PRODUCT_FILE_DESCRIPTION@\0" +#endif + +#ifndef PRODUCT_INTERNAL_NAME +#define PRODUCT_INTERNAL_NAME "@PRODUCT_NAME@\0" +#endif + +#ifndef PRODUCT_ORIGINAL_FILENAME +#define PRODUCT_ORIGINAL_FILENAME "@PRODUCT_ORIGINAL_FILENAME@\0" +#endif + +#ifndef PRODUCT_BUNDLE +#define PRODUCT_BUNDLE "@PRODUCT_BUNDLE@\0" +#endif diff --git a/cmake/VersionResource.rc b/cmake/VersionResource.rc new file mode 100644 index 000000000..3533f36cd --- /dev/null +++ b/cmake/VersionResource.rc @@ -0,0 +1,36 @@ +#include "VersionInfo.h" +#include "winresrc.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION FILE_VERSION_RESOURCE + PRODUCTVERSION PRODUCT_VERSION_RESOURCE + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", PRODUCT_COMMENTS + VALUE "CompanyName", PRODUCT_COMPANY_NAME + VALUE "FileDescription", PRODUCT_FILE_DESCRIPTION + VALUE "FileVersion", FILE_VERSION_RESOURCE_STR + VALUE "InternalName", PRODUCT_INTERNAL_NAME + VALUE "LegalCopyright", PRODUCT_COMPANY_COPYRIGHT + VALUE "OriginalFilename", PRODUCT_ORIGINAL_FILENAME + VALUE "ProductName", PRODUCT_BUNDLE + VALUE "ProductVersion", PRODUCT_VERSION_RESOURCE_STR + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e12873fa2..9935985cc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -204,7 +204,24 @@ if (UNIX AND NOT APPLE) target_link_libraries(keepassx_core Qt5::DBus) endif() -add_executable(${PROGNAME} WIN32 MACOSX_BUNDLE ${keepassx_SOURCES_MAINEXE}) +if(MINGW) + string(REPLACE "." ";" VERSION_LIST ${KEEPASSXC_VERSION}) + list(GET VERSION_LIST 0 KEEPASSXC_VERSION_MAJOR) + list(GET VERSION_LIST 1 KEEPASSXC_VERSION_MINOR) + list(GET VERSION_LIST 2 KEEPASSXC_VERSION_PATCH) + + include(GenerateProductVersion) + generate_product_version( + WIN32_ProductVersionFiles + NAME "KeePassXC" + COMPANY_NAME "KeePassXC Team" + VERSION_MAJOR ${KEEPASSXC_VERSION_MAJOR} + VERSION_MINOR ${KEEPASSXC_VERSION_MINOR} + VERSION_PATCH ${KEEPASSXC_VERSION_PATCH} + ) +endif() + +add_executable(${PROGNAME} WIN32 MACOSX_BUNDLE ${keepassx_SOURCES_MAINEXE} ${WIN32_ProductVersionFiles}) target_link_libraries(${PROGNAME} keepassx_core) set_target_properties(${PROGNAME} PROPERTIES ENABLE_EXPORTS ON) From 070ad695ececeb5e99c1cf1976e17b6e4aa852a8 Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Sun, 19 Feb 2017 22:27:05 -0500 Subject: [PATCH 03/13] Updated snapcraft build to include networking --- {setup => snap}/gui/keepassxc.desktop | 0 snapcraft.yaml | 5 +++-- 2 files changed, 3 insertions(+), 2 deletions(-) rename {setup => snap}/gui/keepassxc.desktop (100%) diff --git a/setup/gui/keepassxc.desktop b/snap/gui/keepassxc.desktop similarity index 100% rename from setup/gui/keepassxc.desktop rename to snap/gui/keepassxc.desktop diff --git a/snapcraft.yaml b/snapcraft.yaml index 5a97a38a1..c0d5919f5 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -1,5 +1,5 @@ name: keepassxc -version: 2.1.0 +version: 2.1.3 grade: stable summary: community driven port of the windows application “Keepass Password Safe” description: | @@ -11,7 +11,7 @@ confinement: strict apps: keepassxc: command: desktop-launch keepassxc - plugs: [unity7, opengl, gsettings, home] + plugs: [unity7, opengl, gsettings, home, network, network-bind] parts: keepassxc: @@ -21,6 +21,7 @@ parts: - -DCMAKE_BUILD_TYPE=Release - -DWITH_TESTS=OFF - -DWITH_XC_AUTOTYPE=ON + - -DWITH_XC_HTTP=ON build-packages: - g++ - libgcrypt20-dev From 873871a42ce93c8a998a4c41db9554819dce3ea5 Mon Sep 17 00:00:00 2001 From: Edward Jones Date: Sat, 18 Feb 2017 14:51:01 +0000 Subject: [PATCH 04/13] Update text in HTTP settings and a hard-to-translate command line hint --- share/translations/keepassx_en.ts | 50 +++++++++++++++---------------- src/http/OptionDialog.ui | 10 +++---- src/main.cpp | 2 +- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/share/translations/keepassx_en.ts b/share/translations/keepassx_en.ts index a6e09aa23..ef6766f5f 100644 --- a/share/translations/keepassx_en.ts +++ b/share/translations/keepassx_en.ts @@ -1297,11 +1297,6 @@ This is a one-way migration. You won't be able to open the imported databas Sh&ow a notification when credentials are requested - - &Return only best matching entries for an URL instead -of all entries for the whole domain - - &Match URL schemes Only entries with the same scheme (http://, https://, ftp://, ...) are returned @@ -1311,10 +1306,6 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< Sort matching entries by &username - - R&emove all shared encryption-keys from active database - - Re&move all stored permissions from entries in active database @@ -1327,10 +1318,6 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< Advanced - - Activate the following only, if you know what you are doing! - - Always allow &access to entries @@ -1347,14 +1334,6 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< Only the selected database has to be connected with a client! - - &Return also advanced string fields which start with "KPH: " - - - - Automatic creates or updates are not supported for string fields! - - HTTP Port: @@ -1389,6 +1368,27 @@ This is required for accessing your databases from ChromeIPass or PassIFox + + &Return only best matching entries for a URL instead +of all entries for the whole domain + + + + R&emove all shared encryption keys from active database + + + + The following options can be dangerous. Change them only if you know what you are doing. + + + + &Return advanced string fields which start with "KPH: " + + + + Automatically creating or updating string fields is not supported. + + PasswordGeneratorWidget @@ -1761,10 +1761,6 @@ give it a unique name to identify and accept it. key file of the database - - filename(s) of the password database(s) to open (*.kdbx) - - KeePassXC - cross-platform password manager @@ -1773,5 +1769,9 @@ give it a unique name to identify and accept it. read password of the database from stdin + + filenames of the password databases to open (*.kdbx) + + diff --git a/src/http/OptionDialog.ui b/src/http/OptionDialog.ui index ab8047db4..c9aae49ef 100644 --- a/src/http/OptionDialog.ui +++ b/src/http/OptionDialog.ui @@ -45,7 +45,7 @@ This is required for accessing your databases from ChromeIPass or PassIFox - &Return only best matching entries for an URL instead + &Return only best matching entries for a URL instead of all entries for the whole domain @@ -82,7 +82,7 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< - R&emove all shared encryption-keys from active database + R&emove all shared encryption keys from active database @@ -148,7 +148,7 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< color: rgb(255, 0, 0); - Activate the following only, if you know what you are doing! + The following options can be dangerous. Change them only if you know what you are doing. @@ -186,14 +186,14 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< - &Return also advanced string fields which start with "KPH: " + &Return advanced string fields which start with "KPH: " - Automatic creates or updates are not supported for string fields! + Automatically creating or updating string fields is not supported. 30 diff --git a/src/main.cpp b/src/main.cpp index a9ab4c4aa..0618cefae 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -64,7 +64,7 @@ int main(int argc, char** argv) QCommandLineParser parser; parser.setApplicationDescription(QCoreApplication::translate("main", "KeePassXC - cross-platform password manager")); - parser.addPositionalArgument("filename", QCoreApplication::translate("main", "filename(s) of the password database(s) to open (*.kdbx)"), "[filename(s)]"); + parser.addPositionalArgument("filename", QCoreApplication::translate("main", "filenames of the password databases to open (*.kdbx)"), "[filename(s)]"); QCommandLineOption configOption("config", QCoreApplication::translate("main", "path to a custom config file"), From 311e7802e522a2b44517758c948d80258a6006b3 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sat, 25 Feb 2017 02:34:47 +0100 Subject: [PATCH 05/13] Don't show error message when trying to reload a locked database --- src/gui/DatabaseWidget.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 1ccf35dd4..8a7b2cf3b 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -1061,8 +1061,7 @@ void DatabaseWidget::reloadDatabaseFile() // Merge the old database into the new one m_db->setEmitModified(false); db->merge(m_db); - } - else { + } else { // Since we are accepting the new file as-is, internally mark as unmodified // TODO: when saving is moved out of DatabaseTabWidget, this should be replaced m_databaseModified = false; @@ -1086,16 +1085,9 @@ void DatabaseWidget::reloadDatabaseFile() restoreGroupEntryFocus(groupBeforeReload, entryBeforeReload); } - else { - MessageBox::critical(this, tr("Autoreload Failed"), - tr("Could not parse or unlock the new database file while attempting" - " to autoreload this database.")); - } - } - else { + } else { MessageBox::critical(this, tr("Autoreload Failed"), - tr("Could not open the new database file while attempting to autoreload" - " this database.")); + tr("Could not open the new database file while attempting to autoreload this database.")); } // Rewatch the database file From 4ec2fe556aad61dc5691f760d9ff9733baaa001b Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sat, 25 Feb 2017 03:40:49 +0100 Subject: [PATCH 06/13] Fix impossible dialog by providing a proper question with approriate answers, resolves #202 --- src/gui/DatabaseTabWidget.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index c425332f7..8042c1130 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include "autotype/AutoType.h" #include "core/Config.h" @@ -157,21 +158,29 @@ void DatabaseTabWidget::openDatabase(const QString& fileName, const QString& pw, // for now silently ignore if we can't create a lock file // due to lack of permissions if (lockFile->error() != QLockFile::PermissionError) { - QMessageBox::StandardButton result = MessageBox::question(this, tr("Open database"), - tr("The database you are trying to open is locked by another instance of KeePassXC.\n" - "Do you want to open it anyway? Alternatively the database is opened read-only."), - QMessageBox::Yes | QMessageBox::No); + QMessageBox msgBox; + msgBox.setWindowTitle(tr("Database already opened")); + msgBox.setText(tr("The database you are trying to open is locked by another instance of KeePassXC.\n\n" + "Do you want to open it anyway?")); + msgBox.setIcon(QMessageBox::Question); + msgBox.addButton(QMessageBox::Yes); + msgBox.addButton(QMessageBox::No); + auto readOnlyButton = msgBox.addButton(tr("Open read-only"), QMessageBox::AcceptRole); + msgBox.setDefaultButton(readOnlyButton); + msgBox.setEscapeButton(QMessageBox::No); + auto result = msgBox.exec(); - if (result == QMessageBox::No) { + if (msgBox.clickedButton() == readOnlyButton) { dbStruct.readOnly = true; delete lockFile; lockFile = nullptr; - } - else { + } else if (result == QMessageBox::Yes) { // take over the lock file if possible if (lockFile->removeStaleLockFile()) { lockFile->tryLock(); } + } else { + return; } } } From 04b3b3dbc56aa9c34b7d25c136ce41aa203081ae Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sun, 26 Feb 2017 18:47:36 +0100 Subject: [PATCH 07/13] Assign role 'NoRole' instead of 'Accept' to not mess with button order --- src/gui/DatabaseTabWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index 8042c1130..3168fc383 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -165,7 +165,7 @@ void DatabaseTabWidget::openDatabase(const QString& fileName, const QString& pw, msgBox.setIcon(QMessageBox::Question); msgBox.addButton(QMessageBox::Yes); msgBox.addButton(QMessageBox::No); - auto readOnlyButton = msgBox.addButton(tr("Open read-only"), QMessageBox::AcceptRole); + auto readOnlyButton = msgBox.addButton(tr("Open read-only"), QMessageBox::NoRole); msgBox.setDefaultButton(readOnlyButton); msgBox.setEscapeButton(QMessageBox::No); auto result = msgBox.exec(); From a31c423d9e9e67ff56efd007f27b674884d817ac Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sun, 26 Feb 2017 21:31:53 +0100 Subject: [PATCH 08/13] Fix compiler warnings in QHttp library --- src/http/Protocol.cpp | 2 +- src/http/qhttp/http-parser/http_parser.h | 6 +++--- src/http/qhttp/private/httpreader.hxx | 2 +- src/http/qhttp/private/qhttpclient_private.hpp | 2 +- src/http/qhttp/private/qhttpserver_private.hpp | 2 +- src/http/qhttp/private/qhttpserverconnection_private.hpp | 2 +- src/http/qhttp/qhttpabstracts.cpp | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/http/Protocol.cpp b/src/http/Protocol.cpp index 40a1445c0..bcb30f0b1 100644 --- a/src/http/Protocol.cpp +++ b/src/http/Protocol.cpp @@ -110,7 +110,7 @@ static QByteArray encrypt2(const QByteArray & data, SymmetricCipherGcrypt & ciph //Encrypt QByteArray buffer = data + QByteArray(paddingSize, paddingSize); cipher.reset(); - cipher.processInPlace(buffer); + Q_UNUSED(cipher.processInPlace(buffer)); return buffer; } diff --git a/src/http/qhttp/http-parser/http_parser.h b/src/http/qhttp/http-parser/http_parser.h index 45c72a078..005db96ec 100644 --- a/src/http/qhttp/http-parser/http_parser.h +++ b/src/http/qhttp/http-parser/http_parser.h @@ -91,7 +91,7 @@ typedef int (*http_cb) (http_parser*); /* Status Codes */ -#define HTTP_STATUS_MAP(XX) \ +#define HTTPPARSER_HTTP_STATUS_MAP(XX) \ XX(100, CONTINUE, Continue) \ XX(101, SWITCHING_PROTOCOLS, Switching Protocols) \ XX(102, PROCESSING, Processing) \ @@ -150,12 +150,12 @@ typedef int (*http_cb) (http_parser*); XX(507, INSUFFICIENT_STORAGE, Insufficient Storage) \ XX(508, LOOP_DETECTED, Loop Detected) \ XX(510, NOT_EXTENDED, Not Extended) \ - XX(511, NETWORK_AUTHENTICATION_REQUIRED, Network Authentication Required) \ + XX(511, NETWORK_AUTHENTICATION_REQUIRED, Network Authentication Required) enum http_status { #define XX(num, name, string) HTTP_STATUS_##name = num, - HTTP_STATUS_MAP(XX) + HTTPPARSER_HTTP_STATUS_MAP(XX) #undef XX }; diff --git a/src/http/qhttp/private/httpreader.hxx b/src/http/qhttp/private/httpreader.hxx index 174b31a95..338ed2a2f 100644 --- a/src/http/qhttp/private/httpreader.hxx +++ b/src/http/qhttp/private/httpreader.hxx @@ -41,7 +41,7 @@ public: if ( !icollectRequired ) // not allowed to collect data return false; - int newLength = icollectedData.length() + (int) length; + int newLength = icollectedData.length() + static_cast(length); if ( icollectCapacity > 0 && newLength > icollectCapacity ) return false; // the capacity is full diff --git a/src/http/qhttp/private/qhttpclient_private.hpp b/src/http/qhttp/private/qhttpclient_private.hpp index 3206da5f3..9c6cd0989 100644 --- a/src/http/qhttp/private/qhttpclient_private.hpp +++ b/src/http/qhttp/private/qhttpclient_private.hpp @@ -112,7 +112,7 @@ protected: void onReadyRead() { while ( isocket.bytesAvailable() > 0 ) { char buffer[4097] = {0}; - size_t readLength = (size_t) isocket.readRaw(buffer, 4096); + size_t readLength = static_cast(isocket.readRaw(buffer, 4096)); parse(buffer, readLength); } diff --git a/src/http/qhttp/private/qhttpserver_private.hpp b/src/http/qhttp/private/qhttpserver_private.hpp index 93c96d2e1..e7c081af4 100644 --- a/src/http/qhttp/private/qhttpserver_private.hpp +++ b/src/http/qhttp/private/qhttpserver_private.hpp @@ -42,7 +42,7 @@ public: // if it's a QLocalServer virtual void incomingConnection(quintptr socketDescriptor) { - iserver->incomingConnection((qintptr) socketDescriptor); + iserver->incomingConnection(static_cast(socketDescriptor)); } }; diff --git a/src/http/qhttp/private/qhttpserverconnection_private.hpp b/src/http/qhttp/private/qhttpserverconnection_private.hpp index fd4475864..53b349fa9 100644 --- a/src/http/qhttp/private/qhttpserverconnection_private.hpp +++ b/src/http/qhttp/private/qhttpserverconnection_private.hpp @@ -83,7 +83,7 @@ public: void onReadyRead() { while ( isocket.bytesAvailable() > 0 ) { char buffer[4097] = {0}; - size_t readLength = (size_t) isocket.readRaw(buffer, 4096); + size_t readLength = static_cast(isocket.readRaw(buffer, 4096)); parse(buffer, readLength); } diff --git a/src/http/qhttp/qhttpabstracts.cpp b/src/http/qhttp/qhttpabstracts.cpp index 1b106e51f..a29a90b9f 100644 --- a/src/http/qhttp/qhttpabstracts.cpp +++ b/src/http/qhttp/qhttpabstracts.cpp @@ -8,7 +8,7 @@ namespace qhttp { # error "to compile QHttp classes, Qt 5.0 or later is needed." #endif -#define HTTP_STATUS_MAP(XX) \ +#define QHTTPABSTRACTS_HTTP_STATUS_MAP(XX) \ XX(100, "Continue") \ XX(101, "Switching Protocols") \ /* RFC 2518) obsoleted by RFC 4918 */ \ @@ -78,7 +78,7 @@ static struct { int code; const char* message; } g_status_codes[] { - HTTP_STATUS_MAP(PATCH_STATUS_CODES) + QHTTPABSTRACTS_HTTP_STATUS_MAP(PATCH_STATUS_CODES) }; #undef PATCH_STATUS_CODES From 52ab7b886546ead91d978564006a8dbbd9b8b205 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Wed, 1 Mar 2017 22:32:14 +0100 Subject: [PATCH 09/13] Use unified toolbar on OS X --- src/gui/MainWindow.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index a7347b35a..3298c8b6c 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -281,6 +281,10 @@ MainWindow::MainWindow() connect(m_ui->passwordGeneratorWidget, SIGNAL(dialogTerminated()), SLOT(closePasswordGen())); connect(m_ui->actionAbout, SIGNAL(triggered()), SLOT(showAboutDialog())); + +#ifdef Q_OS_MAC + setUnifiedTitleAndToolBarOnMac(true); +#endif updateTrayIcon(); } From 3e76f7af0f6d92a8ae8b077f775b97ead3aef7bf Mon Sep 17 00:00:00 2001 From: Hanno Date: Thu, 2 Mar 2017 11:58:18 +0100 Subject: [PATCH 10/13] Fix stack buffer overflow in zxcvbn. The array PossChars is filled with a 48 byte string plus a trailing zero byte. Therefore it needs to be 49 bytes long. --- src/zxcvbn/zxcvbn.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zxcvbn/zxcvbn.cpp b/src/zxcvbn/zxcvbn.cpp index 25cbe5440..c999adfae 100644 --- a/src/zxcvbn/zxcvbn.cpp +++ b/src/zxcvbn/zxcvbn.cpp @@ -496,7 +496,7 @@ typedef struct uint8_t LeetCnv[sizeof L33TCnv / LEET_NORM_MAP_SIZE + 1]; /* uint8_t LeetChr[3]; */ uint8_t First; - uint8_t PossChars[48]; + uint8_t PossChars[49]; } DictWork_t; /********************************************************************************** From d45c2cf0f253d2109d84974d4ca1d22f4a938e10 Mon Sep 17 00:00:00 2001 From: John Lindgren Date: Wed, 1 Mar 2017 21:08:10 -0500 Subject: [PATCH 11/13] closeEvent() should always hide the window, never raise it. This fixes an issue on X11 where Alt-F4 would not close the window, due to toggleWindow() believing the window is inactive and trying to raise it. Avoid the problem by closing the window unconditionally. --- src/gui/MainWindow.cpp | 23 ++++++++++++++--------- src/gui/MainWindow.h | 1 + 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 3298c8b6c..b0e1a1925 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -281,7 +281,7 @@ MainWindow::MainWindow() connect(m_ui->passwordGeneratorWidget, SIGNAL(dialogTerminated()), SLOT(closePasswordGen())); connect(m_ui->actionAbout, SIGNAL(triggered()), SLOT(showAboutDialog())); - + #ifdef Q_OS_MAC setUnifiedTitleAndToolBarOnMac(true); #endif @@ -563,7 +563,7 @@ void MainWindow::closeEvent(QCloseEvent* event) if (minimizeOnClose && !appExitCalled) { event->ignore(); - toggleWindow(); + hideWindow(); if (config()->get("security/lockdatabaseminimize").toBool()) { m_ui->tabWidget->lockDatabases(); @@ -728,22 +728,27 @@ void MainWindow::trayIconTriggered(QSystemTrayIcon::ActivationReason reason) } } +void MainWindow::hideWindow() +{ + setWindowState(windowState() | Qt::WindowMinimized); + QTimer::singleShot(0, this, SLOT(hide())); + + if (config()->get("security/lockdatabaseminimize").toBool()) { + m_ui->tabWidget->lockDatabases(); + } +} + void MainWindow::toggleWindow() { if ((QApplication::activeWindow() == this) && isVisible() && !isMinimized()) { - setWindowState(windowState() | Qt::WindowMinimized); - QTimer::singleShot(0, this, SLOT(hide())); - - if (config()->get("security/lockdatabaseminimize").toBool()) { - m_ui->tabWidget->lockDatabases(); - } + hideWindow(); } else { ensurePolished(); setWindowState(windowState() & ~Qt::WindowMinimized); show(); raise(); activateWindow(); - + #if defined(Q_OS_LINUX) && ! defined(QT_NO_DBUS) // re-register global D-Bus menu (needed on Ubuntu with Unity) // see https://github.com/keepassxreboot/keepassxc/issues/271 diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h index ab9924a75..ff92260f4 100644 --- a/src/gui/MainWindow.h +++ b/src/gui/MainWindow.h @@ -68,6 +68,7 @@ private Q_SLOTS: void rememberOpenDatabases(const QString& filePath); void applySettingsChanges(); void trayIconTriggered(QSystemTrayIcon::ActivationReason reason); + void hideWindow(); void toggleWindow(); void lockDatabasesAfterInactivity(); void repairDatabase(); From e2d098dd9b558de7b6dfb91e74107aae179f0476 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Thu, 2 Mar 2017 21:56:22 +0100 Subject: [PATCH 12/13] Bump version to 2.1.3, update CHANGELOG --- CHANGELOG | 12 ++++++++++++ CMakeLists.txt | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f8a0e33bf..8e0eaacea 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,15 @@ +2.1.3 (2017-03-03) +========================= + +- Fix possible overflow in zxcvbn library [#363] +- Revert HiDPI setting to avoid problems on laptop screens [#332] +- Set file meta properties in Windows executable [#330] +- Suppress error message when auto-reloading a locked database [#345] +- Improve usability of question dialog when database is already locked by a different instance [#346] +- Fix compiler warnings in QHttp library [#351] +- Use unified toolbar on Mac OS X [#361] +- Fix an issue on X11 where the main window would be raised instead of closed on Alt+F4 [#362] + 2.1.2 (2017-02-17) ========================= diff --git a/CMakeLists.txt b/CMakeLists.txt index 852ccae5c..347c52768 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,8 +38,8 @@ option(WITH_XC_AUTOTYPE "Include Autotype." OFF) option(WITH_XC_HTTP "Include KeePassHTTP." OFF) option(WITH_XC_YUBIKEY "Include Yubikey support." OFF) -set(KEEPASSXC_VERSION "2.1.2") -set(KEEPASSXC_VERSION_NUM "2.1.2") +set(KEEPASSXC_VERSION "2.1.3") +set(KEEPASSXC_VERSION_NUM "2.1.3") if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") set(CMAKE_COMPILER_IS_CLANG 1) From 8a69421dc90103f71d1265b413d6e1e2a7034780 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Thu, 2 Mar 2017 21:56:51 +0100 Subject: [PATCH 13/13] Update translations --- share/translations/keepassx_en.ts | 23 +- share/translations/keepassx_fr.ts | 946 +++++++++++++++++++-------- share/translations/keepassx_lt.ts | 149 +++-- share/translations/keepassx_zh_CN.ts | 930 ++++++++++++++++++-------- 4 files changed, 1429 insertions(+), 619 deletions(-) diff --git a/share/translations/keepassx_en.ts b/share/translations/keepassx_en.ts index ef6766f5f..d10bff0de 100644 --- a/share/translations/keepassx_en.ts +++ b/share/translations/keepassx_en.ts @@ -388,11 +388,6 @@ Discard changes and close anyway? Unable to open the database. - - The database you are trying to open is locked by another instance of KeePassXC. -Do you want to open it anyway? Alternatively the database is opened read-only. - - Merge database @@ -406,6 +401,20 @@ Do you want to save it anyway? Passwords + + Database already opened + + + + The database you are trying to open is locked by another instance of KeePassXC. + +Do you want to open it anyway? + + + + Open read-only + + DatabaseWidget @@ -516,10 +525,6 @@ Do you want to save it anyway? Autoreload Failed - - Could not parse or unlock the new database file while attempting to autoreload this database. - - Could not open the new database file while attempting to autoreload this database. diff --git a/share/translations/keepassx_fr.ts b/share/translations/keepassx_fr.ts index 260e2da71..e34f918e1 100644 --- a/share/translations/keepassx_fr.ts +++ b/share/translations/keepassx_fr.ts @@ -1,33 +1,64 @@ - + AboutDialog - - About KeePassX - À propos de KeePassX - - - KeePassX is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3. - KeePassX est distribué selon les conditions de la GNU General Public License (GPL) version 2 ou (à votre choix) version 3. - Revision - Version + Révision Using: Utilise : + + About KeePassXC + À propos de KeePassXC + + + Extensions: + + Extensions : + + + + KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3. + KeePassXC est distribué suivant les termes de la GNU Licence Publique Générale (GNU GPL) version 2 ou version 3 de la licence (à votre gré). + + + + AccessControlDialog + + Remember this decision + Se souvenir de ce choix + + + Allow + Autoriser + + + Deny + Refuser + + + %1 has requested access to passwords for the following item(s). +Please select whether you want to allow access. + %1 a demandé l’accès aux mots de passe pour l'élément suivant (ou les éléments suivants). +Veuillez sélectionner si vous souhaitez autoriser l’accès. + + + KeePassXC HTTP Confirm Access + Accès KeePassXC HTTP confirmé + AutoType - - Auto-Type - KeePassX - Auto-Type - KeePassX - Couldn't find an entry that matches the window title: Impossible de trouver une entrée qui corresponde au titre de la fenêtre : + + Auto-Type - KeePassXC + Remplissage automatique - KeePassXC + AutoTypeAssociationsModel @@ -46,14 +77,14 @@ AutoTypeSelectDialog - - Auto-Type - KeePassX - Auto-Type - KeePassX - Select entry to Auto-Type: Choisissez un champ pour Auto-Type : + + Auto-Type - KeePassXC + Remplissage automatique - KeePassXC + ChangeMasterKeyWidget @@ -69,10 +100,6 @@ Repeat password: Confirmez le mot de passe : - - Key file - Fichier-clé - Browse Naviguer @@ -119,7 +146,7 @@ Failed to set key file - Échec de définition du fichier-clé + Impossible de définir le fichier-clé Failed to set %1 as the Key file: @@ -127,6 +154,10 @@ Impossible de définir %1 comme fichier-clé : %2 + + &Key file + Fichier-clé + DatabaseOpenWidget @@ -226,10 +257,6 @@ Vous pouvez maintenant la sauvegarder. Default username: Nom d'utilisateur par défaut : - - Use recycle bin: - Utiliser la corbeille : - MiB MiB @@ -246,6 +273,10 @@ Vous pouvez maintenant la sauvegarder. Max. history size: Taille max. de l'historique : + + Use recycle bin + Utiliser la corbeille + DatabaseTabWidget @@ -319,12 +350,6 @@ Enregistrer les modifications ? locked verrouillée - - The database you are trying to open is locked by another instance of KeePassX. -Do you want to open it anyway? Alternatively the database is opened read-only. - La base de données que vous essayez d'ouvrir est verrouillée par une autre instance de KeePassX. -Voulez-vous quand même l'ouvrir ? Dans ce cas, elle sera ouverte en lecture seule. - Lock database Verrouiller la base de données @@ -368,14 +393,38 @@ Ignorer les changements et fermer ? Échec de l'écriture du fichier CSV. - The database you are trying to save as is locked by another instance of KeePassX. -Do you want to save it anyway? - La base de données que vous essayez de sauvegarder a été verrouillée par une autre instance de KeePassX. -Voulez-vous quand même la sauvegarder ? + Unable to open the database. + Impossible d'ouvrir la base de données. - Unable to open the database. - + Merge database + Fusionner les bases de données + + + The database you are trying to save as is locked by another instance of KeePassXC. +Do you want to save it anyway? + La base de données que vous essayez d'enregistrer est verrouillée par une autre instance de KeePassXC. +Voulez vous l'enregistrer quand même ? + + + Passwords + Mots de passe + + + Database already opened + La base de données est déjà ouverte + + + The database you are trying to open is locked by another instance of KeePassXC. + +Do you want to open it anyway? + La base de données que vous essayez d'ouvrir est verrouillée par une autre instance de KeePassXC. + +Voulez vous l'ouvrir quand même ? + + + Open read-only + Ouvrir en lecture seule @@ -416,10 +465,6 @@ Voulez-vous quand même la sauvegarder ? Do you really want to delete the group "%1" for good? Voulez-vous supprimer le groupe "%1" définitivement ? - - Current group - Groupe actif - Error Erreur @@ -430,11 +475,67 @@ Voulez-vous quand même la sauvegarder ? Move entry to recycle bin? - + Placer l'élément dans la corbeille ? Do you really want to move entry "%1" to the recycle bin? - + Êtes-vous sûr de vouloir placer l'élément "%1" dans la corbeille ? + + + Searching... + Recherche... + + + No current database. + Pas de base de données. + + + No source database, nothing to do. + Aucune base de données source, il n'y a rien à faire. + + + Search Results (%1) + Résultats de la recherche (%1) + + + No Results + Pas de résultats + + + Execute command? + Exécuter la commande ? + + + Do you really want to execute the following command?<br><br>%1<br> + Voulez-vous vraiment exécuter la commande suivante ?<br><br>%1<br> + + + Remember my choice + Se souvenir de mon choix + + + Autoreload Request + Demande de rafraîchissement automatique + + + The database file has changed. Do you want to load the changes? + Le fichier de la base de données à été modifié. Voulez-vous charger les changements ? + + + Merge Request + Demande de fusion + + + The database file has changed and you have unsaved changes.Do you want to merge your changes? + Le fichier de la base de données à changé et vous avez des modification non-enregistrés. Voulez-vous fusionner vos modifications? + + + Autoreload Failed + Échec du rafraîchissement automatique + + + Could not open the new database file while attempting to autoreload this database. + La nouvelle base de données ne peux être ouverte pendant qu'un rafraîchissement automatique de l'actuelle est en cours. @@ -559,14 +660,6 @@ Voulez-vous quand même la sauvegarder ? Enable Auto-Type for this entry Activer le remplissage automatique pour cette entrée - - Inherit default Auto-Type sequence from the group - Utiliser la séquence de remplissage automatique par défaut du groupe - - - Use custom Auto-Type sequence: - Utiliser une séquence de remplissage automatique personnalisée : - + + @@ -580,11 +673,19 @@ Voulez-vous quand même la sauvegarder ? Titre de la fenêtre : - Use default sequence + Inherit default Auto-Type sequence from the &group + Utiliser la séquence de remplissage automatique par défaut du groupe + + + &Use custom Auto-Type sequence: + Utiliser une séquence de remplissage automatique personnalisée : + + + Use default se&quence Utiliser la séquence par défaut - Set custom sequence: + Set custo&m sequence: Définir une séquence personnalisée : @@ -625,10 +726,6 @@ Voulez-vous quand même la sauvegarder ? Repeat: Confirmation : - - Gen. - Gen. - URL: URL : @@ -714,14 +811,6 @@ Voulez-vous quand même la sauvegarder ? EditWidgetIcons - - Use default icon - Utiliser l'icône par défaut - - - Use custom icon - Utiliser une icône personnalisée - Add custom icon Ajouter une icône personnalisée @@ -746,17 +835,33 @@ Voulez-vous quand même la sauvegarder ? Can't delete icon! Impossible de supprimer l'icône ! - - Can't delete icon. Still used by %n item(s). - Impossible de supprimer l'icône. Toujours utilisée par %n objet(s).Impossible de supprimer l'icône. Toujours utilisée par %n objet(s). - Error - + Erreur - Can't read icon: - + Download favicon + Télécharger la favicône + + + Unable to fetch favicon. + Impossible de récupérer la favicône + + + Can't read icon + Impossible de lire l'icône + + + Can't delete icon. Still used by %1 items. + Impossible de supprimer l'icône. Encore utilisée par 1% éléments. + + + &Use default icon + Utiliser l'icône par défaut + + + Use custo&m icon + Utiliser une icône personnalisée @@ -778,6 +883,13 @@ Voulez-vous quand même la sauvegarder ? Uuid : + + Entry + + - Clone + - Cloner + + EntryAttributesModel @@ -830,6 +942,61 @@ Voulez-vous quand même la sauvegarder ? Corbeille + + HttpPasswordGeneratorWidget + + Length: + Longueur: + + + Character Types + Types de caractères: + + + Upper Case Letters + Lettres majuscules + + + A-Z + A-Z + + + Lower Case Letters + Lettres minuscules + + + a-z + a-z + + + Numbers + Chiffres + + + 0-9 + 0-9 + + + Special Characters + Caractères spéciaux + + + /*_& ... + /*_& ... + + + Exclude look-alike characters + Exclure les caractères qui se ressemblent + + + Ensure that the password contains characters from every group + S'assurer que le mot de passe contienne des caractères de chaque groupe + + + Accept + Accepter + + KeePass1OpenWidget @@ -873,7 +1040,7 @@ Voulez-vous quand même la sauvegarder ? Wrong key or database file is corrupt. - + Clé incorrecte ou la base de données est corrompue. @@ -912,8 +1079,8 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Erreur fatale lors des tests des fonctions cryptographiques. - KeePassX - Error - KeePassX - Erreur + KeePassXC - Error + KeePassXC - Erreur @@ -922,102 +1089,14 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Database Base de données - - Recent databases - Bases de données récentes - - - Help - Aide - - - Entries - Entrées - - - Copy attribute to clipboard - Copier l'attribut dans le presse-papier - - - Groups - Groupes - - - View - Vue - - - Quit - Quitter - - - About - À propos - Open database Ouvrir une base de données - - Save database - Enregistrer la base de données - - - Close database - Fermer la base de données - - - New database - Nouvelle base de données - - - Add new entry - Ajouter une entrée - - - View/Edit entry - Voir/Modifier l'entrée - - - Delete entry - Supprimer l'entrée - - - Add new group - Ajouter un groupe - - - Edit group - Modifier le groupe - - - Delete group - Supprimer le groupe - - - Save database as - Enregistrer la base de données sous - - - Change master key - Modifier la clé maître - Database settings Paramètres de la base de données - - Import KeePass 1 database - Importer une base de données KeePass 1 - - - Clone entry - Dupliquer l'entrée - - - Find - Chercher - Copy username to clipboard Copier le nom d'utilisateur dans le presse-papier @@ -1030,30 +1109,6 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Settings Paramètres - - Perform Auto-Type - Effectuer un remplissage automatique - - - Open URL - Ouvrir l'URL - - - Lock databases - Verrouiller les bases de données - - - Title - Titre - - - URL - URL - - - Notes - Notes - Show toolbar Afficher la barre d'outils @@ -1070,22 +1125,6 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Tools Outils - - Copy username - Copier le nom d'utilisateur - - - Copy password - Copier le mot de passe - - - Export to CSV file - Exporter au format CSV - - - Repair database - Réparer la base de données - KeePass 2 Database Base de données KeePass 2 @@ -1106,6 +1145,263 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Writing the database failed. Une erreur s'est produite lors de l'écriture de la base de données. + + &Recent databases + Bases de données récentes + + + He&lp + Aide + + + E&ntries + Entrées + + + Copy att&ribute to clipboard + Copier l'attribut dans le presse-papier + + + &Groups + Groupes + + + &View + Affichage + + + &Quit + &Quitter + + + &About + &A propos + + + &Open database + &Ouvrir la base de données + + + &Save database + Enregistrer la base de données + + + &Close database + Fermer la base de données + + + &New database + &Nouvelle base de données + + + Merge from KeePassX database + Fusionner depuis la base de données KeePassX + + + &Add new entry + Ajouter une nouvelle entrée + + + &View/Edit entry + Voir/Editer l'entrée + + + &Delete entry + Supprimer l'entrée + + + &Add new group + &Ajouter un nouveau groupe + + + &Edit group + &Modifier le groupe + + + &Delete group + &Supprimer le groupe + + + Sa&ve database as + Enregistrer la base de données sous + + + Change &master key + Changer la clé &maître + + + &Database settings + Paramètre de la base de &données + + + &Import KeePass 1 database + &Importer 1 base de données KeePass + + + &Clone entry + Cloner l'entrée + + + &Find + Trouver + + + Copy &username + Copier le nom d'utilisateur + + + Cop&y password + Copier le mot de passe + + + &Settings + Paramètres + + + &Perform Auto-Type + Exécuter la saisie semi-automatique + + + &Open URL + &Ouvrir l'URL + + + &Lock databases + Verrouiller les bases de données + + + &Title + &Titre + + + &URL + &URL + + + &Notes + &Notes + + + &Export to CSV file + &Exporter vers un fichier CSV + + + Re&pair database + Ré&parer la base de données + + + Password Generator + Générateur de mot de passe + + + + OptionDialog + + Dialog + Dialogue + + + General + Général + + + Sh&ow a notification when credentials are requested + Montrer une notification quand les références sont demandées + + + &Match URL schemes +Only entries with the same scheme (http://, https://, ftp://, ...) are returned + + + + Sort matching entries by &username + Trier les entrées correspondantes par nom d'&utilisateur + + + Re&move all stored permissions from entries in active database + Supprimer toutes les permissions enregistrées des entrées de la base de données active + + + Password generator + Générateur de mots de passe + + + Advanced + Avancé + + + Always allow &access to entries + Toujours autoriser l'&accès aux entrées + + + Always allow &updating entries + Toujours autoriser la mise à jour des entrées + + + Searc&h in all opened databases for matching entries + Cherc&her dans toutes les bases de données ouvertes les entrées correspondantes + + + Only the selected database has to be connected with a client! + Seule la base de données sélectionnée doit être connectée à un client ! + + + HTTP Port: + Port HTTP: + + + Default port: 19455 + Port par défaut: 19455 + + + Re&quest to unlock the database if it is locked + Demander de déverrouiller la base de données lorsque celle-ci est verrouiller + + + Sort &matching entries by title + Trier les entrées correspondantes par titre + + + Enable KeepassXC HTTP protocol +This is required for accessing your databases from ChromeIPass or PassIFox + Activer le protocole HTTP de KeePassXC +Ce protocole est nécessaire si vous souhaitez accéder à vos bases de données avec ChromeIPas ou PassIFox + + + KeePassXC will listen to this port on 127.0.0.1 + KeepassXC va écouter ce port sur 127.0.0.1 + + + Cannot bind to privileged ports + Liaison impossible avec les ports privilégiés + + + Cannot bind to privileged ports below 1024! +Using default port 19455. + Liaison impossible avec les ports privilégiés, ceux avant 1024 ! +Restauration du port 19455 par défaut. + + + &Return only best matching entries for a URL instead +of all entries for the whole domain + + + + R&emove all shared encryption keys from active database + Supprimer toutes les clés de chiffrement partagées de la base de données active + + + The following options can be dangerous. Change them only if you know what you are doing. + La modification de ces préférences peuvent entrainer des problèmes de sécurité. Ne continuez que si vous savez ce que vous faites ! + + + &Return advanced string fields which start with "KPH: " + + + + Automatically creating or updating string fields is not supported. + La création ou la mise a jour automatique ne sont pas pris en charge pour les champs de chaines de caractères ! + PasswordGeneratorWidget @@ -1113,10 +1409,6 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Password: Mot de passe : - - Length: - Longueur : - Character Types Types de caractères @@ -1141,71 +1433,72 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Exclude look-alike characters Exclure les caractères se ressemblant - - Ensure that the password contains characters from every group - S'assurer que le mot de passe possède un caractère de chaque groupe - Accept Accepter - - - QCommandLineParser - Displays version information. - Afficher les informations de version. + %p% + %p% - Displays this help. - Afficher cette aide. + strength + force - Unknown option '%1'. - Option inconnue '%1'. + entropy + entropie - Unknown options: %1. - Options inconnues : %1. + &Length: + &Longueur: - Missing value after '%1'. - Valeur manquante après '%1'. + Pick characters from every group + Inclure des caractères de chaque groupe - Unexpected value after '%1'. - Valeur inattendue après '%1'. + Generate + Générer - [options] - [options] + Close + Fermer - Usage: %1 - Utilisation : %1 + Apply + Appliquer - Options: - Options : + Entropy: %1 bit + Entropie: %1 bit - Arguments: - Arguments : + Password Quality: %1 + Qualité du mot de passe: %1 + + + Poor + Pauvre + + + Weak + Faible + + + Good + Bon + + + Excellent + Excellent - QSaveFile + QObject - Existing file %1 is not writable - Le fichier existant %1 n'est pas accessible en écriture - - - Writing canceled by application - Écriture annulée par l'application - - - Partial write. Partition full? - Écriture partielle. Partition pleine ? + Http + Http @@ -1245,20 +1538,111 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri SearchWidget - Find: - Chercher : - - - Case sensitive + Case Sensitive Sensible à la casse - Current group - Groupe actif + Search + Chercher - Root group - Groupe racine + Find + Trouver + + + Clear + Effacer + + + + Service + + A shared encryption-key with the name "%1" already exists. +Do you want to overwrite it? + Une clé de chiffrement partagée avec le nom "%1" existe déjà. +Voulez-vous l'écraser ? + + + Do you want to update the information in %1 - %2? + Voulez-vous mettre à jour l'information dans %1 - %2 ? + + + The active database is locked! +Please unlock the selected database or choose another one which is unlocked. + La base de données actuelle est verrouillée ! +Veuillez déverrouiller la base de données sélectionnée ou en choisir une qui est déverrouillée. + + + Successfully removed %1 encryption-%2 from KeePassX/Http Settings. + %1 %2 de chiffrement ont été retirés avec succès des paramètres de KeePassX/Http. + + + No shared encryption-keys found in KeePassHttp Settings. + Aucune clé de chiffrement partagée trouvée dans les paramètres de KeePassHttp. + + + The active database does not contain an entry of KeePassHttp Settings. + La base de données actuelle ne contient aucun paramètres de KeePassHttp. + + + Removing stored permissions... + Effacement des permissions enregistrées... + + + Abort + Annuler + + + Successfully removed permissions from %1 %2. + Les permissions de %1 %2 ont été retirées avec succès. + + + The active database does not contain an entry with permissions. + La base de données actuelle ne contient aucun élément avec des permissions. + + + KeePassXC: New key association request + KeePassXC: nouvelle demande d'association + + + You have received an association request for the above key. +If you would like to allow it access to your KeePassXC database +give it a unique name to identify and accept it. + Vous avez reçu une demande d'association pour la clé ci-dessus. +Si vous voulez autoriser cette clé à accéder à votre base de données KeePassXC, +attribuez lui un nom unique pour l'identifier et acceptez la. + + + KeePassXC: Overwrite existing key? + KeePassXC: Écraser la clé existante ? + + + KeePassXC: Update Entry + KeePassXC: Mettre à jour l'élément + + + KeePassXC: Database locked! + KeePassXC: Base de données verrouillée ! + + + KeePassXC: Removed keys from database + KeePassXC: Les clés ont été effacées de la base de donnée + + + KeePassXC: No keys found + KeePassXC: Aucune clé trouvée + + + KeePassXC: Settings not available! + KeePassXC: Paramètre indisponible ! + + + KeePassXC: Removed permissions + KeePassXC: Permissions retirées + + + KeePassXC: No entry with permissions found! + KeePassXC: Aucune entrée avec permissions trouvée ! @@ -1282,10 +1666,6 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Remember last databases Se souvenir des dernières bases de données - - Open previous databases on startup - Ouvrir les bases de données précédentes au démarrage - Automatically save on exit Sauvegarder automatiquement à la sortie @@ -1308,7 +1688,7 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Use entry title to match windows for global auto-type - Utiliser la correspondance entre le titre de l'entrée et de la fenêtre pour le remplissage automatique global + Language @@ -1327,12 +1707,20 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Se rappeler les derniers fichiers-clés ouverts - Hide window to system tray instead of App Exit - + Load previous databases on startup + Charger les bases de données précédentes au démarrage - Hide window to system tray on App start - + Automatically reload the database when modified externally + Recharger automatiquement la base de données quand celle-ci est modifier depuis l'extérieur + + + Hide window to system tray instead of app exit + Envoyer la fenêtre dans la zone de notification au lieu de quitter l'application + + + Minimize window at application startup + Minimiser la fenêtre lors du démarrage de l'application @@ -1357,6 +1745,14 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri Always ask before performing auto-type Toujours demander avant d'effectuer un remplissage automatique + + Lock databases after minimizing the window + Verrouiller la base de données lorsque la fenêtre est minimisée + + + Don't require password repeat when it is visible + Ne pas demander de répéter le mot de passe lorsque celui-ci est visible + UnlockDatabaseWidget @@ -1374,14 +1770,6 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri main - - KeePassX - cross-platform password manager - KeePassX - Gestionnaire de mot de passe multi-plateforme - - - filename of the password database to open (*.kdbx) - Nom de fichier de la base de données de mot de passe à ouvrir (*.kdbx) - path to a custom config file Chemin vers un fichier de configuration personnalisé @@ -1390,5 +1778,17 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri key file of the database Fichier-clé de la base de données + + KeePassXC - cross-platform password manager + KeePassXC - Gestionnaire de mots de passe multiplateforme + + + read password of the database from stdin + Lire le mot de passe de la base de données sur l'entrée standard + + + filenames of the password databases to open (*.kdbx) + + \ No newline at end of file diff --git a/share/translations/keepassx_lt.ts b/share/translations/keepassx_lt.ts index 824101c51..152dad900 100644 --- a/share/translations/keepassx_lt.ts +++ b/share/translations/keepassx_lt.ts @@ -13,16 +13,16 @@ About KeePassXC Apie KeePassXC - - KeePassXC is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3. - KeePassXC yra platinama GNU Bendrosios Viešosios Licencijos (GPL) versijos 2 arba (jūsų pasirinkimu) versijos 3 sąlygomis. - Extensions: Plėtiniai: + + KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3. + KeePassXC yra platinama GNU Bendrosios Viešosios Licencijos (GPL) versijos 2 arba (jūsų pasirinkimu) versijos 3 sąlygomis. + AccessControlDialog @@ -100,10 +100,6 @@ Pasirinkite, ar norite leisti prieigą. Repeat password: Pakartokite slaptažodį: - - Key file - Rakto failas - Browse Naršyti @@ -158,6 +154,10 @@ Pasirinkite, ar norite leisti prieigą. Nepavyko nustatyti %1 kaip rakto failą: %2 + + &Key file + &Rakto failas + DatabaseOpenWidget @@ -257,10 +257,6 @@ Dabar galite ją įrašyti. Default username: Numatytasis naudotojo vardas: - - Use recycle bin: - Naudoti šiukšlinę: - MiB MiB @@ -277,6 +273,10 @@ Dabar galite ją įrašyti. Max. history size: Didžiausias istorijos dydis: + + Use recycle bin + Naudoti šiukšlinę + DatabaseTabWidget @@ -396,12 +396,6 @@ Vis tiek atmesti pakeitimus ir užverti? Unable to open the database. Nepavyko atverti duomenų bazės. - - The database you are trying to open is locked by another instance of KeePassXC. -Do you want to open it anyway? Alternatively the database is opened read-only. - Duomenų bazė, kurią bandote atverti, yra užrakinta kito KeePassXC egzemplioriaus. -Ar vis tiek norite ją atverti? Tokiu atveju duomenų bazė bus atverta tik skaitymui. - Merge database Sulieti duomenų bazę @@ -412,6 +406,25 @@ Do you want to save it anyway? Duomenų bazė, kurią bandote įrašyti yra užrakinta kito KeePassXC programos egzemplioriaus. Ar vis tiek norite ją įrašyti? + + Passwords + Slaptažodžiai + + + Database already opened + Duomenų bazė jau atverta + + + The database you are trying to open is locked by another instance of KeePassXC. + +Do you want to open it anyway? + Duomenų bazė, kurią bandote atverti yra užrakinta kito KeePassXC programos egzemplioriaus. +Ar vis tiek norite ją atverti? + + + Open read-only + Atverti tik skaitymui + DatabaseWidget @@ -519,10 +532,6 @@ Ar vis tiek norite ją įrašyti? Autoreload Failed Automatinis įkėlimas iš naujo nepavyko - - Could not parse or unlock the new database file while attempting to autoreload this database. - Nepavyko išanalizuoti ar atrakinti naujos duomenų bazės failo, bandant automatiškai iš naujo įkelti šią duomenų bazę. - Could not open the new database file while attempting to autoreload this database. Nepavyko atverti naujos duomenų bazės failo, bandant automatiškai iš naujo įkelti šią duomenų bazę. @@ -650,14 +659,6 @@ Ar vis tiek norite ją įrašyti? Enable Auto-Type for this entry Įjungti šiam įrašui automatinį rinkimą - - Inherit default Auto-Type sequence from the group - Paveldėti numatytąją automatinio rinkimo seką iš grupės - - - Use custom Auto-Type sequence: - Naudoti tinkintą automatinio rinkimo seka: - + + @@ -671,12 +672,20 @@ Ar vis tiek norite ją įrašyti? Lango antraštė: - Use default sequence - Naudoti numatytąją seką + Inherit default Auto-Type sequence from the &group + Paveldėti numatytąją automatinio rinkimo seką iš &grupės - Set custom sequence: - Nustatyti tinkintą seką: + &Use custom Auto-Type sequence: + Na&udoti tinkintą automatinio rinkimo seka: + + + Use default se&quence + Naudoti numatytąją se&ką + + + Set custo&m sequence: + Nustatyti tinkintą s&eką: @@ -801,14 +810,6 @@ Ar vis tiek norite ją įrašyti? EditWidgetIcons - - Use default icon - Naudoti numatytąją piktogramą - - - Use custom icon - Naudoti tinkintą piktogramą - Add custom icon Pridėti tinkintą piktogramą @@ -853,6 +854,14 @@ Ar vis tiek norite ją įrašyti? Can't delete icon. Still used by %1 items. Nepavyksta ištrinti piktogramos. Vis dar naudojama %1 elementų. + + &Use default icon + Na&udoti numatytąją piktogramą + + + Use custo&m icon + Naudoti tinkintą piktogra&mą + EditWidgetProperties @@ -1298,12 +1307,6 @@ Tai yra vienakryptis perkėlimas. Jūs negalėsite atverti importuotos duomenų Sh&ow a notification when credentials are requested R&odyti pranešimą, kai reikalaujama prisijungimo duomenų - - &Return only best matching entries for an URL instead -of all entries for the whole domain - &Vietoj visų įrašų, skirtų visai sričiai, -grąžinti tik geriausiai atitinkančius įrašus, skirtus URL - &Match URL schemes Only entries with the same scheme (http://, https://, ftp://, ...) are returned @@ -1314,10 +1317,6 @@ Bus grąžinami įrašai tik su ta pačia schema (http://, https://, ftp://, ... Sort matching entries by &username Rikiuoti atitinkančius įrašus pagal na&udotojo vardą - - R&emove all shared encryption-keys from active database - Ša&linti iš aktyvios duomenų bazės visus bendrinamus šifravimo raktus - Re&move all stored permissions from entries in active database Šal&inti iš įrašų aktyvioje duomenų bazėje visus saugomus leidimus @@ -1330,10 +1329,6 @@ Bus grąžinami įrašai tik su ta pačia schema (http://, https://, ftp://, ... Advanced Išplėstiniai - - Activate the following only, if you know what you are doing! - Aktyvuokite tai tik tuo atveju, jeigu žinote ką darote! - Always allow &access to entries Visada leisti &prieigą prie įrašų @@ -1350,14 +1345,6 @@ Bus grąžinami įrašai tik su ta pačia schema (http://, https://, ftp://, ... Only the selected database has to be connected with a client! Su klientu turi būti sujungta tik pasirinkta duomenų bazė! - - &Return also advanced string fields which start with "KPH: " - &Taip pat grąžinti ir išplėstines eilutes, kurios prasideda "KPH: " - - - Automatic creates or updates are not supported for string fields! - Šiems eilutės laukams automatiniai kūrimai ir atnaujinimai neprieinami! - HTTP Port: HTTP prievadas: @@ -1394,6 +1381,28 @@ Using default port 19455. Nepavyksta susieti su privilegijuotais prievadais žemiau 1024! Naudojamas numatytasis prievadas 19455. + + &Return only best matching entries for a URL instead +of all entries for the whole domain + &Vietoj visų įrašų, skirtų visai sričiai, +grąžinti tik geriausiai atitinkančius įrašus, skirtus URL + + + R&emove all shared encryption keys from active database + Ša&linti iš aktyvios duomenų bazės visus bendrinamus šifravimo raktus + + + The following options can be dangerous. Change them only if you know what you are doing. + Šios parinktys gali būti pavojingos. Keiskite jas tik tuo atveju, jeigu žinote ką darote! + + + &Return advanced string fields which start with "KPH: " + &Grąžinti išplėstines eilutes, kurios prasideda "KPH: " + + + Automatically creating or updating string fields is not supported. + Automatinis eilutės laukų kūrimas ar atnaujinimas nėra palaikomas. + PasswordGeneratorWidget @@ -1463,7 +1472,7 @@ Naudojamas numatytasis prievadas 19455. Entropy: %1 bit - Entropija: %1 bit + Entropija: %1 bitų Password Quality: %1 @@ -1535,7 +1544,7 @@ Naudojamas numatytasis prievadas 19455. Search - Ieškoti + Paieška Find @@ -1771,10 +1780,6 @@ ir priimtumėte jį. key file of the database duomenų bazės rakto failas - - filename(s) of the password database(s) to open (*.kdbx) - norimos atverti slaptažodžių duomenų bazės(-ių) failo pavadinimas(-ai) (*.kdbx) - KeePassXC - cross-platform password manager KeePassXC - daugiaplatformė slaptažodžių tvarkytuvė @@ -1783,5 +1788,9 @@ ir priimtumėte jį. read password of the database from stdin nuskaityti duomenų bazės slaptažodį iš stdin + + filenames of the password databases to open (*.kdbx) + norimų atverti slaptažodžių duomenų bazių failų pavadinimai (*.kdbx) + \ No newline at end of file diff --git a/share/translations/keepassx_zh_CN.ts b/share/translations/keepassx_zh_CN.ts index b2b3adf1a..5f4f59f60 100644 --- a/share/translations/keepassx_zh_CN.ts +++ b/share/translations/keepassx_zh_CN.ts @@ -1,14 +1,6 @@ - + AboutDialog - - About KeePassX - 关于 KeePassX - - - KeePassX is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3. - KeePassX 使用的是第 2 版 GNU 通用公共授权协议(GPL)(你可以根据需要选用第 3 版). - Revision 修改 @@ -17,17 +9,55 @@ Using: 使用: + + About KeePassXC + 关于 KeePassXC + + + Extensions: + + 扩展: + + + + KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3. + KeePassXC 使用的是第 2 版 GNU 通用公共授权协议(GPL)(你可以根据需要选用第 3 版). + + + + AccessControlDialog + + Remember this decision + + + + Allow + 允许 + + + Deny + 拒绝 + + + %1 has requested access to passwords for the following item(s). +Please select whether you want to allow access. + + + + KeePassXC HTTP Confirm Access + + AutoType - - Auto-Type - KeePassX - KeePassX - 自动输入 - Couldn't find an entry that matches the window title: 无法找到符合窗口标题的项目 + + Auto-Type - KeePassXC + KeePassXC - 自动输入 + AutoTypeAssociationsModel @@ -46,14 +76,14 @@ AutoTypeSelectDialog - - Auto-Type - KeePassX - KeePassX - 自动输入 - Select entry to Auto-Type: 选择自动输入的项目 + + Auto-Type - KeePassXC + KeePassXC - 自动输入 + ChangeMasterKeyWidget @@ -69,10 +99,6 @@ Repeat password: 重复密码: - - Key file - 秘钥文件 - Browse 浏览 @@ -127,6 +153,10 @@ 无法设置 %1 为秘钥文件: %2 + + &Key file + 秘钥文件 + DatabaseOpenWidget @@ -226,10 +256,6 @@ You can now save it. Default username: 默认用户名: - - Use recycle bin: - 使用垃圾桶: - MiB MiB @@ -246,6 +272,10 @@ You can now save it. Max. history size: 最大历史记录大小: + + Use recycle bin + 使用回收站 + DatabaseTabWidget @@ -319,12 +349,6 @@ Save changes? locked 已锁 - - The database you are trying to open is locked by another instance of KeePassX. -Do you want to open it anyway? Alternatively the database is opened read-only. - 你要打开的数据库已被另一个KeePassX锁住。 -你确定要以只读方式的打开吗? - Lock database 锁住数据库 @@ -368,15 +392,38 @@ Discard changes and close anyway? 写入CSV格式文件失败 - The database you are trying to save as is locked by another instance of KeePassX. + Unable to open the database. + 无法打开数据库。 + + + Merge database + 合并数据库 + + + The database you are trying to save as is locked by another instance of KeePassXC. Do you want to save it anyway? - 你要保存的数据库已被另一个KeePassX锁住。 + 你要保存的数据库已被另一个KeePassXC锁住。 你仍然要保存吗? - Unable to open the database. + Passwords + + Database already opened + 数据库已经打开 + + + The database you are trying to open is locked by another instance of KeePassXC. + +Do you want to open it anyway? + 你要打开的数据库已被另一个KeePassXC锁住。 +你仍然要打开吗? + + + Open read-only + 已只读方式打开 + DatabaseWidget @@ -416,10 +463,6 @@ Do you want to save it anyway? Do you really want to delete the group "%1" for good? 你确定永远删除 "%1" 群组吗? - - Current group - 当前群组 - Error 错误 @@ -430,11 +473,67 @@ Do you want to save it anyway? Move entry to recycle bin? - + 移动项目到回收站? Do you really want to move entry "%1" to the recycle bin? - + 是否删除 "%1" 项目到回收站? + + + Searching... + 搜索中... + + + No current database. + 没有当前的数据库。 + + + No source database, nothing to do. + 没有当前的数据库。没什么可做的。 + + + Search Results (%1) + 搜索结果 (%1) + + + No Results + 无结果 + + + Execute command? + 执行命令? + + + Do you really want to execute the following command?<br><br>%1<br> + 你确定要执行以下命令?<br><br>%1<br> + + + Remember my choice + 记住这次更改 + + + Autoreload Request + 自动加载请求 + + + The database file has changed. Do you want to load the changes? + 数据库文件已更改。是否重新载入? + + + Merge Request + 合并请求 + + + The database file has changed and you have unsaved changes.Do you want to merge your changes? + 数据库文件已更改,您有未保存的更改。是否合并您的更改? + + + Autoreload Failed + 自动加载失败 + + + Could not open the new database file while attempting to autoreload this database. + 在尝试 autoreload 此数据库不打开新的数据库文件。 @@ -559,14 +658,6 @@ Do you want to save it anyway? Enable Auto-Type for this entry 打开此项目的自动输入 - - Inherit default Auto-Type sequence from the group - 从父群组继承默认的自动输入顺序 - - - Use custom Auto-Type sequence: - 使用自定义自动输入顺序 - + + @@ -580,11 +671,19 @@ Do you want to save it anyway? 窗口标题: - Use default sequence + Inherit default Auto-Type sequence from the &group + 从父群组继承默认的自动输入顺序 + + + &Use custom Auto-Type sequence: + 使用自定义自动输入顺序 + + + Use default se&quence 使用默认顺序 - Set custom sequence: + Set custo&m sequence: 设置自定义顺序 @@ -625,10 +724,6 @@ Do you want to save it anyway? Repeat: 重复: - - Gen. - 生成. - URL: 网址: @@ -714,14 +809,6 @@ Do you want to save it anyway? EditWidgetIcons - - Use default icon - 使用默认图标 - - - Use custom icon - 使用自定义图标 - Add custom icon 添加自定义图标 @@ -746,17 +833,33 @@ Do you want to save it anyway? Can't delete icon! 不能删除图标! - - Can't delete icon. Still used by %n item(s). - 不能删除图标。仍在被 %n 个项目使用 - Error - + 错误 - Can't read icon: - + Download favicon + 下载网站头像 + + + Unable to fetch favicon. + 无法获取网站头像 + + + Can't read icon + 无法读取图标 + + + Can't delete icon. Still used by %1 items. + %1 项目正在使用,无法删除图标。 + + + &Use default icon + 使用默认图标 + + + Use custo&m icon + 使用自定义图标 @@ -778,6 +881,13 @@ Do you want to save it anyway? Uuid(通用唯一识别码): + + Entry + + - Clone + - 复制 + + EntryAttributesModel @@ -830,6 +940,61 @@ Do you want to save it anyway? 垃圾桶 + + HttpPasswordGeneratorWidget + + Length: + 长度: + + + Character Types + 字符类型 + + + Upper Case Letters + 大写英文字母 + + + A-Z + A-Z + + + Lower Case Letters + 小写英文字母 + + + a-z + a-z + + + Numbers + 数字 + + + 0-9 + 0-9 + + + Special Characters + 特殊字符 + + + /*_& ... + /*_& ... + + + Exclude look-alike characters + 去除相似的字符 + + + Ensure that the password contains characters from every group + 确保密码包含每种的字符 + + + Accept + 接受 + + KeePass1OpenWidget @@ -873,7 +1038,7 @@ Do you want to save it anyway? Wrong key or database file is corrupt. - + 秘钥错误或数据库损坏。 @@ -911,8 +1076,8 @@ This is a one-way migration. You won't be able to open the imported databas 在测试加密函数时发生重大错误。 - KeePassX - Error - KeePassX - 错误 + KeePassXC - Error + KeePassXC - 错误 @@ -921,102 +1086,14 @@ This is a one-way migration. You won't be able to open the imported databas Database 数据库 - - Recent databases - 最近的数据库 - - - Help - 帮助 - - - Entries - 项目 - - - Copy attribute to clipboard - 将属性复制到剪贴板 - - - Groups - 群组 - - - View - 显示 - - - Quit - 退出 - - - About - 关于 - Open database 打开数据库 - - Save database - 保存数据库 - - - Close database - 关闭数据库 - - - New database - 新建数据库 - - - Add new entry - 新增项目 - - - View/Edit entry - 浏览/编辑项目 - - - Delete entry - 删除项目 - - - Add new group - 新增群组 - - - Edit group - 编辑群组 - - - Delete group - 删除群组 - - - Save database as - 另存数据库为 - - - Change master key - 更改主密码 - Database settings 数据库设置 - - Import KeePass 1 database - 导入KeePass 1 数据库 - - - Clone entry - 复制项目 - - - Find - 查找 - Copy username to clipboard 将用户名复制到剪贴板 @@ -1029,30 +1106,6 @@ This is a one-way migration. You won't be able to open the imported databas Settings 设置 - - Perform Auto-Type - 执行自动输入 - - - Open URL - 打开网址 - - - Lock databases - 锁住数据库 - - - Title - 标题 - - - URL - 网址 - - - Notes - 备注 - Show toolbar 显示工具栏 @@ -1069,22 +1122,6 @@ This is a one-way migration. You won't be able to open the imported databas Tools 工具 - - Copy username - 复制用户名 - - - Copy password - 复制密码 - - - Export to CSV file - 导出为CSV格式文件 - - - Repair database - 修复数据库 - KeePass 2 Database KeePass 2 数据库 @@ -1105,6 +1142,263 @@ This is a one-way migration. You won't be able to open the imported databas Writing the database failed. 数据库写入失败 + + &Recent databases + 最近的数据库 + + + He&lp + 帮助 + + + E&ntries + + + + Copy att&ribute to clipboard + 将属性复制到剪贴板 + + + &Groups + 群组 + + + &View + 显示 + + + &Quit + 退出 + + + &About + 关于 + + + &Open database + 打开数据库 + + + &Save database + 保存数据库 + + + &Close database + 关闭数据库 + + + &New database + 新建数据库 + + + Merge from KeePassX database + 从KeePassX数据库合并 + + + &Add new entry + 新增项目 + + + &View/Edit entry + 浏览/编辑项目 + + + &Delete entry + 删除项目 + + + &Add new group + 新增群组 + + + &Edit group + 编辑群组 + + + &Delete group + 删除群组 + + + Sa&ve database as + 另存数据库为 + + + Change &master key + 更改主密码 + + + &Database settings + 数据库设置 + + + &Import KeePass 1 database + 导入KeePass 1 数据库 + + + &Clone entry + 复制项目 + + + &Find + 查找 + + + Copy &username + 复制用户名 + + + Cop&y password + 复制密码 + + + &Settings + 设置 + + + &Perform Auto-Type + 执行自动输入 + + + &Open URL + 打开网址 + + + &Lock databases + 锁住数据库 + + + &Title + 标题 + + + &URL + 网址 + + + &Notes + 备注 + + + &Export to CSV file + 导出为CSV格式文件 + + + Re&pair database + 修复数据库 + + + Password Generator + 密码生成器 + + + + OptionDialog + + Dialog + 对话框 + + + General + 常规 + + + Sh&ow a notification when credentials are requested + + + + &Match URL schemes +Only entries with the same scheme (http://, https://, ftp://, ...) are returned + + + + Sort matching entries by &username + 按匹配用户名排序 + + + Re&move all stored permissions from entries in active database + + + + Password generator + 密码生成器 + + + Advanced + 高级 + + + Always allow &access to entries + 永远允许访问项目 + + + Always allow &updating entries + 永远允许更新项目 + + + Searc&h in all opened databases for matching entries + 在所有打开的数据库中查找匹配项目 + + + Only the selected database has to be connected with a client! + 客户端只能连接选中的数据库! + + + HTTP Port: + HTTP端口: + + + Default port: 19455 + 默认端口:19455 + + + Re&quest to unlock the database if it is locked + + + + Sort &matching entries by title + 用标题排序匹配的项目 + + + Enable KeepassXC HTTP protocol +This is required for accessing your databases from ChromeIPass or PassIFox + 启用KeepassXC HTTP协议 +这需要ChromeIPass或PassIFox访问你的数据库 + + + KeePassXC will listen to this port on 127.0.0.1 + KeePassXC 将监听 127.0.0.1上的此端口 + + + Cannot bind to privileged ports + 无法绑定到特殊端口 + + + Cannot bind to privileged ports below 1024! +Using default port 19455. + 无法绑定低于 1024的特殊端口 ! +使用默认端口 19455。 + + + &Return only best matching entries for a URL instead +of all entries for the whole domain + 只返回最佳匹配条目的 URL 而不是整个域的所有条目 + + + R&emove all shared encryption keys from active database + 移除所有激活数据库共享的加密密钥 + + + The following options can be dangerous. Change them only if you know what you are doing. + 以下选项不要修改。除非你知道自己在做什么。 + + + &Return advanced string fields which start with "KPH: " + + + + Automatically creating or updating string fields is not supported. + 不支持自动创建或更新字符串字段。 + PasswordGeneratorWidget @@ -1112,10 +1406,6 @@ This is a one-way migration. You won't be able to open the imported databas Password: 密码: - - Length: - 长度: - Character Types 字符类型 @@ -1140,71 +1430,72 @@ This is a one-way migration. You won't be able to open the imported databas Exclude look-alike characters 去除相似的字符 - - Ensure that the password contains characters from every group - 确保密码包含每种的字符 - Accept 接受 - - - QCommandLineParser - Displays version information. - 显示版本信息 + %p% + %p% - Displays this help. - 显示帮助信息 + strength + 强度 - Unknown option '%1'. - 未知选项 '%1'。 + entropy + - Unknown options: %1. - 未知选项: %1。 + &Length: + 长度︰ - Missing value after '%1'. - 在 '%1' 后缺少值。 + Pick characters from every group + 从每个组选择字符 - Unexpected value after '%1'. - '%1' 后有无法识别的值。 + Generate + 生成 - [options] - [选项] + Close + 关闭 - Usage: %1 - 已用:%1 + Apply + 应用 - Options: - 选项: + Entropy: %1 bit + - Arguments: - 参数: + Password Quality: %1 + 密码强度:%1 + + + Poor + + + + Weak + + + + Good + + + + Excellent + 优秀 - QSaveFile + QObject - Existing file %1 is not writable - 当前文件%1 不可写 - - - Writing canceled by application - 应用程序取消写入 - - - Partial write. Partition full? - 写入不完整。磁盘满了吗? + Http + Http @@ -1244,20 +1535,109 @@ This is a one-way migration. You won't be able to open the imported databas SearchWidget - Find: - 查找: - - - Case sensitive + Case Sensitive 区分大小写 - Current group - 当前群组 + Search + 搜索 - Root group - 根群组 + Find + 查找 + + + Clear + 清除 + + + + Service + + A shared encryption-key with the name "%1" already exists. +Do you want to overwrite it? + 一个共享的加密密钥,名为"%1"已存在。 +你想要覆盖它吗? + + + Do you want to update the information in %1 - %2? + 你想更新 %1-%2 中的信息吗? + + + The active database is locked! +Please unlock the selected database or choose another one which is unlocked. + 激活的数据库被锁定 ! +请解锁选定的数据库或选择另一已解锁的数据库。 + + + Successfully removed %1 encryption-%2 from KeePassX/Http Settings. + + + + No shared encryption-keys found in KeePassHttp Settings. + + + + The active database does not contain an entry of KeePassHttp Settings. + + + + Removing stored permissions... + 正在删除存储的权限... + + + Abort + 中断 + + + Successfully removed permissions from %1 %2. + + + + The active database does not contain an entry with permissions. + + + + KeePassXC: New key association request + + + + You have received an association request for the above key. +If you would like to allow it access to your KeePassXC database +give it a unique name to identify and accept it. + + + + KeePassXC: Overwrite existing key? + KeePassXC︰ 覆盖现有的密钥吗? + + + KeePassXC: Update Entry + KeePassXC︰ 更新条目 + + + KeePassXC: Database locked! + KeePassXC︰ 数据库被锁定 ! + + + KeePassXC: Removed keys from database + KeePassXC︰ 从数据库中删除键 + + + KeePassXC: No keys found + KeePassXC︰ 未找到键 + + + KeePassXC: Settings not available! + KeePassXC︰ 设置不可用 ! + + + KeePassXC: Removed permissions + KeePassXC︰ 已删除的权限 + + + KeePassXC: No entry with permissions found! + @@ -1281,10 +1661,6 @@ This is a one-way migration. You won't be able to open the imported databas Remember last databases 记住最近的数据库 - - Open previous databases on startup - 在启动时打开最近的数据库 - Automatically save on exit 离开后自动保存 @@ -1326,12 +1702,20 @@ This is a one-way migration. You won't be able to open the imported databas 记住最近的秘钥文件 - Hide window to system tray instead of App Exit - + Load previous databases on startup + 在启动时加载最近的数据库 - Hide window to system tray on App start - + Automatically reload the database when modified externally + 当外部修改时自动重新加载数据库 + + + Hide window to system tray instead of app exit + 退出时将窗口最小化至任务栏 + + + Minimize window at application startup + 在应用程序启动时窗口最小化 @@ -1356,6 +1740,14 @@ This is a one-way migration. You won't be able to open the imported databas Always ask before performing auto-type 在执行自动输入前询问 + + Lock databases after minimizing the window + 在最小化窗口后锁定数据库 + + + Don't require password repeat when it is visible + 可见时不需要重复输入密码 + UnlockDatabaseWidget @@ -1373,14 +1765,6 @@ This is a one-way migration. You won't be able to open the imported databas main - - KeePassX - cross-platform password manager - KeePassX - 跨平台密码管理软件 - - - filename of the password database to open (*.kdbx) - 打开密码数据库文件名(*.kdbx) - path to a custom config file 自定义配置文件路径 @@ -1389,5 +1773,17 @@ This is a one-way migration. You won't be able to open the imported databas key file of the database 数据库秘钥文件 + + KeePassXC - cross-platform password manager + KeePassXC - 跨平台密码管理软件 + + + read password of the database from stdin + 从标准输入读取数据库的密码 + + + filenames of the password databases to open (*.kdbx) + 打开密码数据库文件名(*.kdbx) + \ No newline at end of file