diff options
author | Janek Bevendorff <janek@jbev.net> | 2017-03-02 23:56:54 +0300 |
---|---|---|
committer | Janek Bevendorff <janek@jbev.net> | 2017-03-02 23:56:54 +0300 |
commit | 76dcfb5ed0c874f6a835ef0347ddf6098b149e9b (patch) | |
tree | 2351c33d54c41f0f4a4637fcc3419573ce76cb8c | |
parent | b9279f73fa58d75e1ec88f734f3c77c0f015a348 (diff) | |
parent | 8a69421dc90103f71d1265b413d6e1e2a7034780 (diff) |
Release 2.1.32.1.3
- 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]
26 files changed, 1643 insertions, 574 deletions
@@ -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) 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/share/translations/keepassx_en.ts b/share/translations/keepassx_en.ts index a6e09aa23..d10bff0de 100644 --- a/share/translations/keepassx_en.ts +++ b/share/translations/keepassx_en.ts @@ -389,11 +389,6 @@ Discard changes and close anyway?</source> <translation type="unfinished"></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? Alternatively the database is opened read-only.</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Merge database</source> <translation type="unfinished"></translation> </message> @@ -406,6 +401,20 @@ Do you want to save it anyway?</source> <source>Passwords</source> <translation type="unfinished"></translation> </message> + <message> + <source>Database already opened</source> + <translation type="unfinished"></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> + </message> + <message> + <source>Open read-only</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>DatabaseWidget</name> @@ -517,10 +526,6 @@ Do you want to save it anyway?</source> <translation type="unfinished"></translation> </message> <message> - <source>Could not parse or unlock the new database file while attempting to autoreload this database.</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Could not open the new database file while attempting to autoreload this database.</source> <translation type="unfinished"></translation> </message> @@ -1298,11 +1303,6 @@ This is a one-way migration. You won't be able to open the imported databas <translation type="unfinished"></translation> </message> <message> - <source>&Return only best matching entries for an URL instead -of all entries for the whole domain</source> - <translation type="unfinished"></translation> - </message> - <message> <source>&Match URL schemes Only entries with the same scheme (http://, https://, ftp://, ...) are returned</source> <translation type="unfinished"></translation> @@ -1312,10 +1312,6 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< <translation type="unfinished"></translation> </message> <message> - <source>R&emove all shared encryption-keys from active database</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Re&move all stored permissions from entries in active database</source> <translation type="unfinished"></translation> </message> @@ -1328,10 +1324,6 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< <translation type="unfinished"></translation> </message> <message> - <source>Activate the following only, if you know what you are doing!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>Always allow &access to entries</source> <translation type="unfinished"></translation> </message> @@ -1348,14 +1340,6 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< <translation type="unfinished"></translation> </message> <message> - <source>&Return also advanced string fields which start with "KPH: "</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>Automatic creates or updates are not supported for string fields!</source> - <translation type="unfinished"></translation> - </message> - <message> <source>HTTP Port:</source> <translation type="unfinished"></translation> </message> @@ -1389,6 +1373,27 @@ This is required for accessing your databases from ChromeIPass or PassIFox</sour Using default port 19455.</source> <translation type="unfinished"></translation> </message> + <message> + <source>&Return only best matching entries for a URL instead +of all entries for the whole domain</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>R&emove all shared encryption keys from active database</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The following options can be dangerous. Change them only if you know what you are doing.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>&Return advanced string fields which start with "KPH: "</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Automatically creating or updating string fields is not supported.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PasswordGeneratorWidget</name> @@ -1762,15 +1767,15 @@ give it a unique name to identify and accept it.</source> <translation type="unfinished"></translation> </message> <message> - <source>filename(s) of the password database(s) to open (*.kdbx)</source> + <source>KeePassXC - cross-platform password manager</source> <translation type="unfinished"></translation> </message> <message> - <source>KeePassXC - cross-platform password manager</source> + <source>read password of the database from stdin</source> <translation type="unfinished"></translation> </message> <message> - <source>read password of the database from stdin</source> + <source>filenames of the password databases to open (*.kdbx)</source> <translation type="unfinished"></translation> </message> </context> 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 @@ -<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr" version="2.0"> +<?xml version="1.0" ?><!DOCTYPE TS><TS language="fr" version="2.1"> <context> <name>AboutDialog</name> <message> - <source>About KeePassX</source> - <translation>À propos de KeePassX</translation> + <source>Revision</source> + <translation>Révision</translation> </message> <message> - <source>KeePassX is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source> - <translation>KeePassX est distribué selon les conditions de la GNU General Public License (GPL) version 2 ou (à votre choix) version 3.</translation> + <source>Using:</source> + <translation>Utilise :</translation> </message> <message> - <source>Revision</source> - <translation>Version</translation> + <source>About KeePassXC</source> + <translation>À propos de KeePassXC</translation> </message> <message> - <source>Using:</source> - <translation>Utilise :</translation> + <source>Extensions: +</source> + <translation>Extensions : +</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 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é).</translation> </message> </context> <context> - <name>AutoType</name> + <name>AccessControlDialog</name> + <message> + <source>Remember this decision</source> + <translation>Se souvenir de ce choix</translation> + </message> <message> - <source>Auto-Type - KeePassX</source> - <translation>Auto-Type - KeePassX</translation> + <source>Allow</source> + <translation>Autoriser</translation> </message> <message> + <source>Deny</source> + <translation>Refuser</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>%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.</translation> + </message> + <message> + <source>KeePassXC HTTP Confirm Access</source> + <translation>Accès KeePassXC HTTP confirmé</translation> + </message> +</context> +<context> + <name>AutoType</name> + <message> <source>Couldn't find an entry that matches the window title:</source> <translation>Impossible de trouver une entrée qui corresponde au titre de la fenêtre :</translation> </message> + <message> + <source>Auto-Type - KeePassXC</source> + <translation>Remplissage automatique - KeePassXC</translation> + </message> </context> <context> <name>AutoTypeAssociationsModel</name> @@ -47,13 +78,13 @@ <context> <name>AutoTypeSelectDialog</name> <message> - <source>Auto-Type - KeePassX</source> - <translation>Auto-Type - KeePassX</translation> - </message> - <message> <source>Select entry to Auto-Type:</source> <translation>Choisissez un champ pour Auto-Type :</translation> </message> + <message> + <source>Auto-Type - KeePassXC</source> + <translation> Remplissage automatique - KeePassXC</translation> + </message> </context> <context> <name>ChangeMasterKeyWidget</name> @@ -70,10 +101,6 @@ <translation>Confirmez le mot de passe :</translation> </message> <message> - <source>Key file</source> - <translation>Fichier-clé</translation> - </message> - <message> <source>Browse</source> <translation>Naviguer</translation> </message> @@ -119,7 +146,7 @@ </message> <message> <source>Failed to set key file</source> - <translation>Échec de définition du fichier-clé</translation> + <translation>Impossible de définir le fichier-clé</translation> </message> <message> <source>Failed to set %1 as the Key file: @@ -127,6 +154,10 @@ <translation>Impossible de définir %1 comme fichier-clé : %2</translation> </message> + <message> + <source>&Key file</source> + <translation>Fichier-clé</translation> + </message> </context> <context> <name>DatabaseOpenWidget</name> @@ -227,10 +258,6 @@ Vous pouvez maintenant la sauvegarder.</translation> <translation>Nom d'utilisateur par défaut :</translation> </message> <message> - <source>Use recycle bin:</source> - <translation>Utiliser la corbeille :</translation> - </message> - <message> <source> MiB</source> <translation> MiB</translation> </message> @@ -246,6 +273,10 @@ Vous pouvez maintenant la sauvegarder.</translation> <source>Max. history size:</source> <translation>Taille max. de l'historique :</translation> </message> + <message> + <source>Use recycle bin</source> + <translation>Utiliser la corbeille</translation> + </message> </context> <context> <name>DatabaseTabWidget</name> @@ -320,12 +351,6 @@ Enregistrer les modifications ?</translation> <translation>verrouillée</translation> </message> <message> - <source>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.</source> - <translation>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.</translation> - </message> - <message> <source>Lock database</source> <translation>Verrouiller la base de données</translation> </message> @@ -368,14 +393,38 @@ Ignorer les changements et fermer ?</translation> <translation>Échec de l'écriture du fichier CSV.</translation> </message> <message> - <source>The database you are trying to save as is locked by another instance of KeePassX. + <source>Unable to open the database.</source> + <translation>Impossible d'ouvrir la base de données.</translation> + </message> + <message> + <source>Merge database</source> + <translation>Fusionner les bases de données</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>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 ?</translation> + <translation>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 ?</translation> </message> <message> - <source>Unable to open the database.</source> - <translation type="unfinished"/> + <source>Passwords</source> + <translation>Mots de passe</translation> + </message> + <message> + <source>Database already opened</source> + <translation>La base de données est déjà ouverte</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>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 ?</translation> + </message> + <message> + <source>Open read-only</source> + <translation>Ouvrir en lecture seule</translation> </message> </context> <context> @@ -417,10 +466,6 @@ Voulez-vous quand même la sauvegarder ?</translation> <translation>Voulez-vous supprimer le groupe "%1" définitivement ?</translation> </message> <message> - <source>Current group</source> - <translation>Groupe actif</translation> - </message> - <message> <source>Error</source> <translation>Erreur</translation> </message> @@ -430,11 +475,67 @@ Voulez-vous quand même la sauvegarder ?</translation> </message> <message> <source>Move entry to recycle bin?</source> - <translation type="unfinished"/> + <translation>Placer l'élément dans la corbeille ?</translation> </message> <message> <source>Do you really want to move entry "%1" to the recycle bin?</source> - <translation type="unfinished"/> + <translation>Êtes-vous sûr de vouloir placer l'élément "%1" dans la corbeille ?</translation> + </message> + <message> + <source>Searching...</source> + <translation>Recherche...</translation> + </message> + <message> + <source>No current database.</source> + <translation>Pas de base de données.</translation> + </message> + <message> + <source>No source database, nothing to do.</source> + <translation>Aucune base de données source, il n'y a rien à faire.</translation> + </message> + <message> + <source>Search Results (%1)</source> + <translation>Résultats de la recherche (%1)</translation> + </message> + <message> + <source>No Results</source> + <translation>Pas de résultats</translation> + </message> + <message> + <source>Execute command?</source> + <translation>Exécuter la commande ?</translation> + </message> + <message> + <source>Do you really want to execute the following command?<br><br>%1<br></source> + <translation>Voulez-vous vraiment exécuter la commande suivante ?<br><br>%1<br></translation> + </message> + <message> + <source>Remember my choice</source> + <translation>Se souvenir de mon choix</translation> + </message> + <message> + <source>Autoreload Request</source> + <translation>Demande de rafraîchissement automatique</translation> + </message> + <message> + <source>The database file has changed. Do you want to load the changes?</source> + <translation>Le fichier de la base de données à été modifié. Voulez-vous charger les changements ?</translation> + </message> + <message> + <source>Merge Request</source> + <translation>Demande de fusion</translation> + </message> + <message> + <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source> + <translation>Le fichier de la base de données à changé et vous avez des modification non-enregistrés. Voulez-vous fusionner vos modifications?</translation> + </message> + <message> + <source>Autoreload Failed</source> + <translation>Échec du rafraîchissement automatique </translation> + </message> + <message> + <source>Could not open the new database file while attempting to autoreload this database.</source> + <translation>La nouvelle base de données ne peux être ouverte pendant qu'un rafraîchissement automatique de l'actuelle est en cours.</translation> </message> </context> <context> @@ -560,14 +661,6 @@ Voulez-vous quand même la sauvegarder ?</translation> <translation>Activer le remplissage automatique pour cette entrée</translation> </message> <message> - <source>Inherit default Auto-Type sequence from the group</source> - <translation>Utiliser la séquence de remplissage automatique par défaut du groupe</translation> - </message> - <message> - <source>Use custom Auto-Type sequence:</source> - <translation>Utiliser une séquence de remplissage automatique personnalisée :</translation> - </message> - <message> <source>+</source> <translation>+</translation> </message> @@ -580,11 +673,19 @@ Voulez-vous quand même la sauvegarder ?</translation> <translation>Titre de la fenêtre :</translation> </message> <message> - <source>Use default sequence</source> + <source>Inherit default Auto-Type sequence from the &group</source> + <translation>Utiliser la séquence de remplissage automatique par défaut du groupe</translation> + </message> + <message> + <source>&Use custom Auto-Type sequence:</source> + <translation>Utiliser une séquence de remplissage automatique personnalisée :</translation> + </message> + <message> + <source>Use default se&quence</source> <translation>Utiliser la séquence par défaut</translation> </message> <message> - <source>Set custom sequence:</source> + <source>Set custo&m sequence:</source> <translation>Définir une séquence personnalisée :</translation> </message> </context> @@ -626,10 +727,6 @@ Voulez-vous quand même la sauvegarder ?</translation> <translation>Confirmation :</translation> </message> <message> - <source>Gen.</source> - <translation>Gen.</translation> - </message> - <message> <source>URL:</source> <translation>URL :</translation> </message> @@ -715,14 +812,6 @@ Voulez-vous quand même la sauvegarder ?</translation> <context> <name>EditWidgetIcons</name> <message> - <source>Use default icon</source> - <translation>Utiliser l'icône par défaut</translation> - </message> - <message> - <source>Use custom icon</source> - <translation>Utiliser une icône personnalisée</translation> - </message> - <message> <source>Add custom icon</source> <translation>Ajouter une icône personnalisée</translation> </message> @@ -746,17 +835,33 @@ Voulez-vous quand même la sauvegarder ?</translation> <source>Can't delete icon!</source> <translation>Impossible de supprimer l'icône !</translation> </message> - <message numerus="yes"> - <source>Can't delete icon. Still used by %n item(s).</source> - <translation><numerusform>Impossible de supprimer l'icône. Toujours utilisée par %n objet(s).</numerusform><numerusform>Impossible de supprimer l'icône. Toujours utilisée par %n objet(s).</numerusform></translation> - </message> <message> <source>Error</source> - <translation type="unfinished"/> + <translation>Erreur</translation> </message> <message> - <source>Can't read icon:</source> - <translation type="unfinished"/> + <source>Download favicon</source> + <translation>Télécharger la favicône</translation> + </message> + <message> + <source>Unable to fetch favicon.</source> + <translation>Impossible de récupérer la favicône</translation> + </message> + <message> + <source>Can't read icon</source> + <translation>Impossible de lire l'icône</translation> + </message> + <message> + <source>Can't delete icon. Still used by %1 items.</source> + <translation>Impossible de supprimer l'icône. Encore utilisée par 1% éléments.</translation> + </message> + <message> + <source>&Use default icon</source> + <translation>Utiliser l'icône par défaut</translation> + </message> + <message> + <source>Use custo&m icon</source> + <translation>Utiliser une icône personnalisée</translation> </message> </context> <context> @@ -779,6 +884,13 @@ Voulez-vous quand même la sauvegarder ?</translation> </message> </context> <context> + <name>Entry</name> + <message> + <source> - Clone</source> + <translation> - Cloner</translation> + </message> +</context> +<context> <name>EntryAttributesModel</name> <message> <source>Name</source> @@ -831,6 +943,61 @@ Voulez-vous quand même la sauvegarder ?</translation> </message> </context> <context> + <name>HttpPasswordGeneratorWidget</name> + <message> + <source>Length:</source> + <translation>Longueur:</translation> + </message> + <message> + <source>Character Types</source> + <translation>Types de caractères:</translation> + </message> + <message> + <source>Upper Case Letters</source> + <translation>Lettres majuscules</translation> + </message> + <message> + <source>A-Z</source> + <translation>A-Z</translation> + </message> + <message> + <source>Lower Case Letters</source> + <translation>Lettres minuscules</translation> + </message> + <message> + <source>a-z</source> + <translation>a-z</translation> + </message> + <message> + <source>Numbers</source> + <translation>Chiffres</translation> + </message> + <message> + <source>0-9</source> + <translation>0-9</translation> + </message> + <message> + <source>Special Characters</source> + <translation>Caractères spéciaux</translation> + </message> + <message> + <source>/*_& ...</source> + <translation>/*_& ...</translation> + </message> + <message> + <source>Exclude look-alike characters</source> + <translation>Exclure les caractères qui se ressemblent</translation> + </message> + <message> + <source>Ensure that the password contains characters from every group</source> + <translation>S'assurer que le mot de passe contienne des caractères de chaque groupe</translation> + </message> + <message> + <source>Accept</source> + <translation>Accepter</translation> + </message> +</context> +<context> <name>KeePass1OpenWidget</name> <message> <source>Import KeePass1 database</source> @@ -873,7 +1040,7 @@ Voulez-vous quand même la sauvegarder ?</translation> </message> <message> <source>Wrong key or database file is corrupt.</source> - <translation type="unfinished"/> + <translation>Clé incorrecte ou la base de données est corrompue.</translation> </message> </context> <context> @@ -912,8 +1079,8 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri <translation>Erreur fatale lors des tests des fonctions cryptographiques.</translation> </message> <message> - <source>KeePassX - Error</source> - <translation>KeePassX - Erreur</translation> + <source>KeePassXC - Error</source> + <translation>KeePassXC - Erreur</translation> </message> </context> <context> @@ -923,188 +1090,317 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri <translation>Base de données</translation> </message> <message> - <source>Recent databases</source> + <source>Open database</source> + <translation>Ouvrir une base de données</translation> + </message> + <message> + <source>Database settings</source> + <translation>Paramètres de la base de données</translation> + </message> + <message> + <source>Copy username to clipboard</source> + <translation>Copier le nom d'utilisateur dans le presse-papier</translation> + </message> + <message> + <source>Copy password to clipboard</source> + <translation>Copier le mot de passe dans le presse-papier</translation> + </message> + <message> + <source>Settings</source> + <translation>Paramètres</translation> + </message> + <message> + <source>Show toolbar</source> + <translation>Afficher la barre d'outils</translation> + </message> + <message> + <source>read-only</source> + <translation>Lecture seulement</translation> + </message> + <message> + <source>Toggle window</source> + <translation>Basculer de fenêtre</translation> + </message> + <message> + <source>Tools</source> + <translation>Outils</translation> + </message> + <message> + <source>KeePass 2 Database</source> + <translation>Base de données KeePass 2</translation> + </message> + <message> + <source>All files</source> + <translation>Tous les fichiers</translation> + </message> + <message> + <source>Save repaired database</source> + <translation>Sauvegarder la base de données réparée</translation> + </message> + <message> + <source>Error</source> + <translation>Erreur</translation> + </message> + <message> + <source>Writing the database failed.</source> + <translation>Une erreur s'est produite lors de l'écriture de la base de données.</translation> + </message> + <message> + <source>&Recent databases</source> <translation>Bases de données récentes</translation> </message> <message> - <source>Help</source> + <source>He&lp</source> <translation>Aide</translation> </message> <message> - <source>Entries</source> + <source>E&ntries</source> <translation>Entrées</translation> </message> <message> - <source>Copy attribute to clipboard</source> + <source>Copy att&ribute to clipboard</source> <translation>Copier l'attribut dans le presse-papier</translation> </message> <message> - <source>Groups</source> + <source>&Groups</source> <translation>Groupes</translation> </message> <message> - <source>View</source> - <translation>Vue</translation> + <source>&View</source> + <translation>Affichage</translation> </message> <message> - <source>Quit</source> - <translation>Quitter</translation> + <source>&Quit</source> + <translation>&Quitter</translation> </message> <message> - <source>About</source> - <translation>À propos</translation> + <source>&About</source> + <translation>&A propos</translation> </message> <message> - <source>Open database</source> - <translation>Ouvrir une base de données</translation> + <source>&Open database</source> + <translation>&Ouvrir la base de données</translation> </message> <message> - <source>Save database</source> + <source>&Save database</source> <translation>Enregistrer la base de données</translation> </message> <message> - <source>Close database</source> + <source>&Close database</source> <translation>Fermer la base de données</translation> </message> <message> - <source>New database</source> - <translation>Nouvelle base de données</translation> + <source>&New database</source> + <translation>&Nouvelle base de données</translation> </message> <message> - <source>Add new entry</source> - <translation>Ajouter une entrée</translation> + <source>Merge from KeePassX database</source> + <translation>Fusionner depuis la base de données KeePassX</translation> </message> <message> - <source>View/Edit entry</source> - <translation>Voir/Modifier l'entrée</translation> + <source>&Add new entry</source> + <translation>Ajouter une nouvelle entrée</translation> </message> <message> - <source>Delete entry</source> + <source>&View/Edit entry</source> + <translation>Voir/Editer l'entrée</translation> + </message> + <message> + <source>&Delete entry</source> <translation>Supprimer l'entrée</translation> </message> <message> - <source>Add new group</source> - <translation>Ajouter un groupe</translation> + <source>&Add new group</source> + <translation>&Ajouter un nouveau groupe</translation> </message> <message> - <source>Edit group</source> - <translation>Modifier le groupe</translation> + <source>&Edit group</source> + <translation>&Modifier le groupe</translation> </message> <message> - <source>Delete group</source> - <translation>Supprimer le groupe</translation> + <source>&Delete group</source> + <translation>&Supprimer le groupe</translation> </message> <message> - <source>Save database as</source> + <source>Sa&ve database as</source> <translation>Enregistrer la base de données sous</translation> </message> <message> - <source>Change master key</source> - <translation>Modifier la clé maître</translation> + <source>Change &master key</source> + <translation>Changer la clé &maître</translation> </message> <message> - <source>Database settings</source> - <translation>Paramètres de la base de données</translation> + <source>&Database settings</source> + <translation>Paramètre de la base de &données</translation> </message> <message> - <source>Import KeePass 1 database</source> - <translation>Importer une base de données KeePass 1</translation> + <source>&Import KeePass 1 database</source> + <translation>&Importer 1 base de données KeePass</translation> </message> <message> - <source>Clone entry</source> - <translation>Dupliquer l'entrée</translation> + <source>&Clone entry</source> + <translation>Cloner l'entrée</translation> </message> <message> - <source>Find</source> - <translation>Chercher</translation> + <source>&Find</source> + <translation>Trouver</translation> </message> <message> - <source>Copy username to clipboard</source> - <translation>Copier le nom d'utilisateur dans le presse-papier</translation> + <source>Copy &username</source> + <translation>Copier le nom d'utilisateur</translation> </message> <message> - <source>Copy password to clipboard</source> - <translation>Copier le mot de passe dans le presse-papier</translation> + <source>Cop&y password</source> + <translation>Copier le mot de passe</translation> </message> <message> - <source>Settings</source> + <source>&Settings</source> <translation>Paramètres</translation> </message> <message> - <source>Perform Auto-Type</source> - <translation>Effectuer un remplissage automatique</translation> + <source>&Perform Auto-Type</source> + <translation>Exécuter la saisie semi-automatique</translation> </message> <message> - <source>Open URL</source> - <translation>Ouvrir l'URL</translation> + <source>&Open URL</source> + <translation>&Ouvrir l'URL</translation> </message> <message> - <source>Lock databases</source> + <source>&Lock databases</source> <translation>Verrouiller les bases de données</translation> </message> <message> - <source>Title</source> - <translation>Titre</translation> + <source>&Title</source> + <translation>&Titre</translation> </message> <message> - <source>URL</source> - <translation>URL</translation> + <source>&URL</source> + <translation>&URL</translation> </message> <message> - <source>Notes</source> - <translation>Notes</translation> + <source>&Notes</source> + <translation>&Notes</translation> </message> <message> - <source>Show toolbar</source> - <translation>Afficher la barre d'outils</translation> + <source>&Export to CSV file</source> + <translation>&Exporter vers un fichier CSV</translation> </message> <message> - <source>read-only</source> - <translation>Lecture seulement</translation> + <source>Re&pair database</source> + <translation>Ré&parer la base de données</translation> </message> <message> - <source>Toggle window</source> - <translation>Basculer de fenêtre</translation> + <source>Password Generator</source> + <translation>Générateur de mot de passe</translation> </message> +</context> +<context> + <name>OptionDialog</name> <message> - <source>Tools</source> - <translation>Outils</translation> + <source>Dialog</source> + <translation>Dialogue</translation> </message> <message> - <source>Copy username</source> - <translation>Copier le nom d'utilisateur</translation> + <source>General</source> + <translation>Général</translation> </message> <message> - <source>Copy password</source> - <translation>Copier le mot de passe</translation> + <source>Sh&ow a notification when credentials are requested</source> + <translation>Montrer une notification quand les références sont demandées</translation> </message> <message> - <source>Export to CSV file</source> - <translation>Exporter au format CSV</translation> + <source>&Match URL schemes +Only entries with the same scheme (http://, https://, ftp://, ...) are returned</source> + <translation type="unfinished"/> </message> <message> - <source>Repair database</source> - <translation>Réparer la base de données</translation> + <source>Sort matching entries by &username</source> + <translation>Trier les entrées correspondantes par nom d'&utilisateur</translation> </message> <message> - <source>KeePass 2 Database</source> - <translation>Base de données KeePass 2</translation> + <source>Re&move all stored permissions from entries in active database</source> + <translation>Supprimer toutes les permissions enregistrées des entrées de la base de données active</translation> </message> <message> - <source>All files</source> - <translation>Tous les fichiers</translation> + <source>Password generator</source> + <translation>Générateur de mots de passe</translation> </message> <message> - <source>Save repaired database</source> - <translation>Sauvegarder la base de données réparée</translation> + <source>Advanced</source> + <translation>Avancé</translation> </message> <message> - <source>Error</source> - <translation>Erreur</translation> + <source>Always allow &access to entries</source> + <translation>Toujours autoriser l'&accès aux entrées</translation> </message> <message> - <source>Writing the database failed.</source> - <translation>Une erreur s'est produite lors de l'écriture de la base de données.</translation> + <source>Always allow &updating entries</source> + <translation>Toujours autoriser la mise à jour des entrées</translation> + </message> + <message> + <source>Searc&h in all opened databases for matching entries</source> + <translation>Cherc&her dans toutes les bases de données ouvertes les entrées correspondantes</translation> + </message> + <message> + <source>Only the selected database has to be connected with a client!</source> + <translation>Seule la base de données sélectionnée doit être connectée à un client !</translation> + </message> + <message> + <source>HTTP Port:</source> + <translation>Port HTTP:</translation> + </message> + <message> + <source>Default port: 19455</source> + <translation>Port par défaut: 19455</translation> + </message> + <message> + <source>Re&quest to unlock the database if it is locked</source> + <translation>Demander de déverrouiller la base de données lorsque celle-ci est verrouiller </translation> + </message> + <message> + <source>Sort &matching entries by title</source> + <translation>Trier les entrées correspondantes par titre</translation> + </message> + <message> + <source>Enable KeepassXC HTTP protocol +This is required for accessing your databases from ChromeIPass or PassIFox</source> + <translation>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</translation> + </message> + <message> + <source>KeePassXC will listen to this port on 127.0.0.1</source> + <translation>KeepassXC va écouter ce port sur 127.0.0.1</translation> + </message> + <message> + <source>Cannot bind to privileged ports</source> + <translation>Liaison impossible avec les ports privilégiés</translation> + </message> + <message> + <source>Cannot bind to privileged ports below 1024! +Using default port 19455.</source> + <translation>Liaison impossible avec les ports privilégiés, ceux avant 1024 ! +Restauration du port 19455 par défaut.</translation> + </message> + <message> + <source>&Return only best matching entries for a URL instead +of all entries for the whole domain</source> + <translation type="unfinished"/> + </message> + <message> + <source>R&emove all shared encryption keys from active database</source> + <translation>Supprimer toutes les clés de chiffrement partagées de la base de données active</translation> + </message> + <message> + <source>The following options can be dangerous. Change them only if you know what you are doing.</source> + <translation>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 !</translation> + </message> + <message> + <source>&Return advanced string fields which start with "KPH: "</source> + <translation type="unfinished"/> + </message> + <message> + <source>Automatically creating or updating string fields is not supported.</source> + <translation>La création ou la mise a jour automatique ne sont pas pris en charge pour les champs de chaines de caractères !</translation> </message> </context> <context> @@ -1114,10 +1410,6 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri <translation>Mot de passe :</translation> </message> <message> - <source>Length:</source> - <translation>Longueur :</translation> - </message> - <message> <source>Character Types</source> <translation>Types de caractères</translation> </message> @@ -1142,70 +1434,71 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri <translation>Exclure les caractères se ressemblant</translation> </message> <message> - <source>Ensure that the password contains characters from every group</source> - <translation>S'assurer que le mot de passe possède un caractère de chaque groupe</translation> - </message> - <message> <source>Accept</source> <translation>Accepter</translation> </message> -</context> -<context> - <name>QCommandLineParser</name> <message> - <source>Displays version information.</source> - <translation>Afficher les informations de version.</translation> + <source>%p%</source> + <translation>%p%</translation> </message> <message> - <source>Displays this help.</source> - <translation>Afficher cette aide.</translation> + <source>strength</source> + <translation>force</translation> </message> <message> - <source>Unknown option '%1'.</source> - <translation>Option inconnue '%1'.</translation> + <source>entropy</source> + <translation>entropie</translation> </message> <message> - <source>Unknown options: %1.</source> - <translation>Options inconnues : %1.</translation> + <source>&Length:</source> + <translation>&Longueur:</translation> </message> <message> - <source>Missing value after '%1'.</source> - <translation>Valeur manquante après '%1'.</translation> + <source>Pick characters from every group</source> + <translation>Inclure des caractères de chaque groupe</translation> </message> <message> - <source>Unexpected value after '%1'.</source> - <translation>Valeur inattendue après '%1'.</translation> + <source>Generate</source> + <translation>Générer</translation> </message> <message> - <source>[options]</source> - <translation>[options]</translation> + <source>Close</source> + <translation>Fermer</translation> </message> <message> - <source>Usage: %1</source> - <translation>Utilisation : %1</translation> + <source>Apply</source> + <translation>Appliquer</translation> </message> <message> - <source>Options:</source> - <translation>Options :</translation> + <source>Entropy: %1 bit</source> + <translation>Entropie: %1 bit</translation> </message> <message> - <source>Arguments:</source> - <translation>Arguments :</translation> + <source>Password Quality: %1</source> + <translation>Qualité du mot de passe: %1</translation> + </message> + <message> + <source>Poor</source> + <translation>Pauvre</translation> </message> -</context> -<context> - <name>QSaveFile</name> <message> - <source>Existing file %1 is not writable</source> - <translation>Le fichier existant %1 n'est pas accessible en écriture</translation> + <source>Weak</source> + <translation>Faible</translation> </message> <message> - <source>Writing canceled by application</source> - <translation>Écriture annulée par l'application</translation> + <source>Good</source> + <translation>Bon</translation> </message> <message> - <source>Partial write. Partition full?</source> - <translation>Écriture partielle. Partition pleine ?</translation> + <source>Excellent</source> + <translation>Excellent</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <source>Http</source> + <translation>Http</translation> </message> </context> <context> @@ -1245,20 +1538,111 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri <context> <name>SearchWidget</name> <message> - <source>Find:</source> - <translation>Chercher :</translation> + <source>Case Sensitive</source> + <translation>Sensible à la casse</translation> </message> <message> - <source>Case sensitive</source> - <translation>Sensible à la casse</translation> + <source>Search</source> + <translation>Chercher</translation> </message> <message> - <source>Current group</source> - <translation>Groupe actif</translation> + <source>Find</source> + <translation>Trouver</translation> </message> <message> - <source>Root group</source> - <translation>Groupe racine</translation> + <source>Clear</source> + <translation>Effacer</translation> + </message> +</context> +<context> + <name>Service</name> + <message> + <source>A shared encryption-key with the name "%1" already exists. +Do you want to overwrite it?</source> + <translation>Une clé de chiffrement partagée avec le nom "%1" existe déjà. +Voulez-vous l'écraser ?</translation> + </message> + <message> + <source>Do you want to update the information in %1 - %2?</source> + <translation>Voulez-vous mettre à jour l'information dans %1 - %2 ?</translation> + </message> + <message> + <source>The active database is locked! +Please unlock the selected database or choose another one which is unlocked.</source> + <translation>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. </translation> + </message> + <message> + <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source> + <translation>%1 %2 de chiffrement ont été retirés avec succès des paramètres de KeePassX/Http.</translation> + </message> + <message> + <source>No shared encryption-keys found in KeePassHttp Settings.</source> + <translation>Aucune clé de chiffrement partagée trouvée dans les paramètres de KeePassHttp.</translation> + </message> + <message> + <source>The active database does not contain an entry of KeePassHttp Settings.</source> + <translation>La base de données actuelle ne contient aucun paramètres de KeePassHttp.</translation> + </message> + <message> + <source>Removing stored permissions...</source> + <translation>Effacement des permissions enregistrées...</translation> + </message> + <message> + <source>Abort</source> + <translation>Annuler</translation> + </message> + <message> + <source>Successfully removed permissions from %1 %2.</source> + <translation>Les permissions de %1 %2 ont été retirées avec succès.</translation> + </message> + <message> + <source>The active database does not contain an entry with permissions.</source> + <translation>La base de données actuelle ne contient aucun élément avec des permissions.</translation> + </message> + <message> + <source>KeePassXC: New key association request</source> + <translation>KeePassXC: nouvelle demande d'association</translation> + </message> + <message> + <source>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.</source> + <translation>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.</translation> + </message> + <message> + <source>KeePassXC: Overwrite existing key?</source> + <translation>KeePassXC: Écraser la clé existante ?</translation> + </message> + <message> + <source>KeePassXC: Update Entry</source> + <translation>KeePassXC: Mettre à jour l'élément</translation> + </message> + <message> + <source>KeePassXC: Database locked!</source> + <translation>KeePassXC: Base de données verrouillée !</translation> + </message> + <message> + <source>KeePassXC: Removed keys from database</source> + <translation>KeePassXC: Les clés ont été effacées de la base de donnée</translation> + </message> + <message> + <source>KeePassXC: No keys found</source> + <translation>KeePassXC: Aucune clé trouvée</translation> + </message> + <message> + <source>KeePassXC: Settings not available!</source> + <translation>KeePassXC: Paramètre indisponible !</translation> + </message> + <message> + <source>KeePassXC: Removed permissions</source> + <translation>KeePassXC: Permissions retirées</translation> + </message> + <message> + <source>KeePassXC: No entry with permissions found!</source> + <translation>KeePassXC: Aucune entrée avec permissions trouvée !</translation> </message> </context> <context> @@ -1283,10 +1667,6 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri <translation>Se souvenir des dernières bases de données</translation> </message> <message> - <source>Open previous databases on startup</source> - <translation>Ouvrir les bases de données précédentes au démarrage</translation> - </message> - <message> <source>Automatically save on exit</source> <translation>Sauvegarder automatiquement à la sortie</translation> </message> @@ -1308,7 +1688,7 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri </message> <message> <source>Use entry title to match windows for global auto-type</source> - <translation>Utiliser la correspondance entre le titre de l'entrée et de la fenêtre pour le remplissage automatique global</translation> + <translation type="unfinished"/> </message> <message> <source>Language</source> @@ -1327,12 +1707,20 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri <translation>Se rappeler les derniers fichiers-clés ouverts</translation> </message> <message> - <source>Hide window to system tray instead of App Exit</source> - <translation type="unfinished"/> + <source>Load previous databases on startup</source> + <translation>Charger les bases de données précédentes au démarrage</translation> </message> <message> - <source>Hide window to system tray on App start</source> - <translation type="unfinished"/> + <source>Automatically reload the database when modified externally</source> + <translation>Recharger automatiquement la base de données quand celle-ci est modifier depuis l'extérieur</translation> + </message> + <message> + <source>Hide window to system tray instead of app exit</source> + <translation>Envoyer la fenêtre dans la zone de notification au lieu de quitter l'application</translation> + </message> + <message> + <source>Minimize window at application startup</source> + <translation>Minimiser la fenêtre lors du démarrage de l'application</translation> </message> </context> <context> @@ -1357,6 +1745,14 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri <source>Always ask before performing auto-type</source> <translation>Toujours demander avant d'effectuer un remplissage automatique</translation> </message> + <message> + <source>Lock databases after minimizing the window</source> + <translation>Verrouiller la base de données lorsque la fenêtre est minimisée</translation> + </message> + <message> + <source>Don't require password repeat when it is visible</source> + <translation>Ne pas demander de répéter le mot de passe lorsque celui-ci est visible</translation> + </message> </context> <context> <name>UnlockDatabaseWidget</name> @@ -1375,14 +1771,6 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri <context> <name>main</name> <message> - <source>KeePassX - cross-platform password manager</source> - <translation>KeePassX - Gestionnaire de mot de passe multi-plateforme</translation> - </message> - <message> - <source>filename of the password database to open (*.kdbx)</source> - <translation>Nom de fichier de la base de données de mot de passe à ouvrir (*.kdbx)</translation> - </message> - <message> <source>path to a custom config file</source> <translation>Chemin vers un fichier de configuration personnalisé</translation> </message> @@ -1390,5 +1778,17 @@ Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvri <source>key file of the database</source> <translation>Fichier-clé de la base de données</translation> </message> + <message> + <source>KeePassXC - cross-platform password manager</source> + <translation>KeePassXC - Gestionnaire de mots de passe multiplateforme</translation> + </message> + <message> + <source>read password of the database from stdin</source> + <translation>Lire le mot de passe de la base de données sur l'entrée standard</translation> + </message> + <message> + <source>filenames of the password databases to open (*.kdbx)</source> + <translation type="unfinished"/> + </message> </context> </TS>
\ 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 @@ -14,15 +14,15 @@ <translation>Apie KeePassXC</translation> </message> <message> - <source>KeePassXC is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source> - <translation>KeePassXC yra platinama GNU Bendrosios Viešosios Licencijos (GPL) versijos 2 arba (jūsų pasirinkimu) versijos 3 sąlygomis.</translation> - </message> - <message> <source>Extensions: </source> <translation>Plėtiniai: </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 yra platinama GNU Bendrosios Viešosios Licencijos (GPL) versijos 2 arba (jūsų pasirinkimu) versijos 3 sąlygomis.</translation> + </message> </context> <context> <name>AccessControlDialog</name> @@ -101,10 +101,6 @@ Pasirinkite, ar norite leisti prieigą.</translation> <translation>Pakartokite slaptažodį:</translation> </message> <message> - <source>Key file</source> - <translation>Rakto failas</translation> - </message> - <message> <source>Browse</source> <translation>Naršyti</translation> </message> @@ -158,6 +154,10 @@ Pasirinkite, ar norite leisti prieigą.</translation> <translation>Nepavyko nustatyti %1 kaip rakto failą: %2</translation> </message> + <message> + <source>&Key file</source> + <translation>&Rakto failas</translation> + </message> </context> <context> <name>DatabaseOpenWidget</name> @@ -258,10 +258,6 @@ Dabar galite ją įrašyti.</translation> <translation>Numatytasis naudotojo vardas:</translation> </message> <message> - <source>Use recycle bin:</source> - <translation>Naudoti šiukšlinę:</translation> - </message> - <message> <source> MiB</source> <translation> MiB</translation> </message> @@ -277,6 +273,10 @@ Dabar galite ją įrašyti.</translation> <source>Max. history size:</source> <translation>Didžiausias istorijos dydis:</translation> </message> + <message> + <source>Use recycle bin</source> + <translation>Naudoti šiukšlinę</translation> + </message> </context> <context> <name>DatabaseTabWidget</name> @@ -397,12 +397,6 @@ Vis tiek atmesti pakeitimus ir užverti?</translation> <translation>Nepavyko atverti duomenų bazės.</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? Alternatively the database is opened read-only.</source> - <translation>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.</translation> - </message> - <message> <source>Merge database</source> <translation>Sulieti duomenų bazę</translation> </message> @@ -412,6 +406,25 @@ Do you want to save it anyway?</source> <translation>Duomenų bazė, kurią bandote įrašyti yra užrakinta kito KeePassXC programos egzemplioriaus. Ar vis tiek norite ją įrašyti?</translation> </message> + <message> + <source>Passwords</source> + <translation>Slaptažodžiai</translation> + </message> + <message> + <source>Database already opened</source> + <translation>Duomenų bazė jau atverta</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>Duomenų bazė, kurią bandote atverti yra užrakinta kito KeePassXC programos egzemplioriaus. +Ar vis tiek norite ją atverti?</translation> + </message> + <message> + <source>Open read-only</source> + <translation>Atverti tik skaitymui</translation> + </message> </context> <context> <name>DatabaseWidget</name> @@ -520,10 +533,6 @@ Ar vis tiek norite ją įrašyti?</translation> <translation>Automatinis įkėlimas iš naujo nepavyko</translation> </message> <message> - <source>Could not parse or unlock the new database file while attempting to autoreload this database.</source> - <translation>Nepavyko išanalizuoti ar atrakinti naujos duomenų bazės failo, bandant automatiškai iš naujo įkelti šią duomenų bazę.</translation> - </message> - <message> <source>Could not open the new database file while attempting to autoreload this database.</source> <translation>Nepavyko atverti naujos duomenų bazės failo, bandant automatiškai iš naujo įkelti šią duomenų bazę.</translation> </message> @@ -651,14 +660,6 @@ Ar vis tiek norite ją įrašyti?</translation> <translation>Įjungti šiam įrašui automatinį rinkimą</translation> </message> <message> - <source>Inherit default Auto-Type sequence from the group</source> - <translation>Paveldėti numatytąją automatinio rinkimo seką iš grupės</translation> - </message> - <message> - <source>Use custom Auto-Type sequence:</source> - <translation>Naudoti tinkintą automatinio rinkimo seka:</translation> - </message> - <message> <source>+</source> <translation>+</translation> </message> @@ -671,12 +672,20 @@ Ar vis tiek norite ją įrašyti?</translation> <translation>Lango antraštė:</translation> </message> <message> - <source>Use default sequence</source> - <translation>Naudoti numatytąją seką</translation> + <source>Inherit default Auto-Type sequence from the &group</source> + <translation>Paveldėti numatytąją automatinio rinkimo seką iš &grupės</translation> + </message> + <message> + <source>&Use custom Auto-Type sequence:</source> + <translation>Na&udoti tinkintą automatinio rinkimo seka:</translation> </message> <message> - <source>Set custom sequence:</source> - <translation>Nustatyti tinkintą seką:</translation> + <source>Use default se&quence</source> + <translation>Naudoti numatytąją se&ką</translation> + </message> + <message> + <source>Set custo&m sequence:</source> + <translation>Nustatyti tinkintą s&eką:</translation> </message> </context> <context> @@ -802,14 +811,6 @@ Ar vis tiek norite ją įrašyti?</translation> <context> <name>EditWidgetIcons</name> <message> - <source>Use default icon</source> - <translation>Naudoti numatytąją piktogramą</translation> - </message> - <message> - <source>Use custom icon</source> - <translation>Naudoti tinkintą piktogramą</translation> - </message> - <message> <source>Add custom icon</source> <translation>Pridėti tinkintą piktogramą</translation> </message> @@ -853,6 +854,14 @@ Ar vis tiek norite ją įrašyti?</translation> <source>Can't delete icon. Still used by %1 items.</source> <translation>Nepavyksta ištrinti piktogramos. Vis dar naudojama %1 elementų.</translation> </message> + <message> + <source>&Use default icon</source> + <translation>Na&udoti numatytąją piktogramą</translation> + </message> + <message> + <source>Use custo&m icon</source> + <translation>Naudoti tinkintą piktogra&mą</translation> + </message> </context> <context> <name>EditWidgetProperties</name> @@ -1299,12 +1308,6 @@ Tai yra vienakryptis perkėlimas. Jūs negalėsite atverti importuotos duomenų <translation>R&odyti pranešimą, kai reikalaujama prisijungimo duomenų</translation> </message> <message> - <source>&Return only best matching entries for an URL instead -of all entries for the whole domain</source> - <translation>&Vietoj visų įrašų, skirtų visai sričiai, -grąžinti tik geriausiai atitinkančius įrašus, skirtus URL</translation> - </message> - <message> <source>&Match URL schemes Only entries with the same scheme (http://, https://, ftp://, ...) are returned</source> <translation>&Atitikti URL schemas @@ -1315,10 +1318,6 @@ Bus grąžinami įrašai tik su ta pačia schema (http://, https://, ftp://, ... <translation>Rikiuoti atitinkančius įrašus pagal na&udotojo vardą</translation> </message> <message> - <source>R&emove all shared encryption-keys from active database</source> - <translation>Ša&linti iš aktyvios duomenų bazės visus bendrinamus šifravimo raktus</translation> - </message> - <message> <source>Re&move all stored permissions from entries in active database</source> <translation>Šal&inti iš įrašų aktyvioje duomenų bazėje visus saugomus leidimus</translation> </message> @@ -1331,10 +1330,6 @@ Bus grąžinami įrašai tik su ta pačia schema (http://, https://, ftp://, ... <translation>Išplėstiniai</translation> </message> <message> - <source>Activate the following only, if you know what you are doing!</source> - <translation>Aktyvuokite tai tik tuo atveju, jeigu žinote ką darote!</translation> - </message> - <message> <source>Always allow &access to entries</source> <translation>Visada leisti &prieigą prie įrašų</translation> </message> @@ -1351,14 +1346,6 @@ Bus grąžinami įrašai tik su ta pačia schema (http://, https://, ftp://, ... <translation>Su klientu turi būti sujungta tik pasirinkta duomenų bazė!</translation> </message> <message> - <source>&Return also advanced string fields which start with "KPH: "</source> - <translation>&Taip pat grąžinti ir išplėstines eilutes, kurios prasideda "KPH: "</translation> - </message> - <message> - <source>Automatic creates or updates are not supported for string fields!</source> - <translation>Šiems eilutės laukams automatiniai kūrimai ir atnaujinimai neprieinami!</translation> - </message> - <message> <source>HTTP Port:</source> <translation>HTTP prievadas:</translation> </message> @@ -1394,6 +1381,28 @@ Using default port 19455.</source> <translation>Nepavyksta susieti su privilegijuotais prievadais žemiau 1024! Naudojamas numatytasis prievadas 19455.</translation> </message> + <message> + <source>&Return only best matching entries for a URL instead +of all entries for the whole domain</source> + <translation>&Vietoj visų įrašų, skirtų visai sričiai, +grąžinti tik geriausiai atitinkančius įrašus, skirtus URL</translation> + </message> + <message> + <source>R&emove all shared encryption keys from active database</source> + <translation>Ša&linti iš aktyvios duomenų bazės visus bendrinamus šifravimo raktus</translation> + </message> + <message> + <source>The following options can be dangerous. Change them only if you know what you are doing.</source> + <translation>Šios parinktys gali būti pavojingos. Keiskite jas tik tuo atveju, jeigu žinote ką darote!</translation> + </message> + <message> + <source>&Return advanced string fields which start with "KPH: "</source> + <translation>&Grąžinti išplėstines eilutes, kurios prasideda "KPH: "</translation> + </message> + <message> + <source>Automatically creating or updating string fields is not supported.</source> + <translation>Automatinis eilutės laukų kūrimas ar atnaujinimas nėra palaikomas.</translation> + </message> </context> <context> <name>PasswordGeneratorWidget</name> @@ -1463,7 +1472,7 @@ Naudojamas numatytasis prievadas 19455.</translation> </message> <message> <source>Entropy: %1 bit</source> - <translation>Entropija: %1 bit</translation> + <translation>Entropija: %1 bitų</translation> </message> <message> <source>Password Quality: %1</source> @@ -1535,7 +1544,7 @@ Naudojamas numatytasis prievadas 19455.</translation> </message> <message> <source>Search</source> - <translation>Ieškoti</translation> + <translation>Paieška</translation> </message> <message> <source>Find</source> @@ -1772,10 +1781,6 @@ ir priimtumėte jį.</translation> <translation>duomenų bazės rakto failas</translation> </message> <message> - <source>filename(s) of the password database(s) to open (*.kdbx)</source> - <translation>norimos atverti slaptažodžių duomenų bazės(-ių) failo pavadinimas(-ai) (*.kdbx)</translation> - </message> - <message> <source>KeePassXC - cross-platform password manager</source> <translation>KeePassXC - daugiaplatformė slaptažodžių tvarkytuvė</translation> </message> @@ -1783,5 +1788,9 @@ ir priimtumėte jį.</translation> <source>read password of the database from stdin</source> <translation>nuskaityti duomenų bazės slaptažodį iš stdin</translation> </message> + <message> + <source>filenames of the password databases to open (*.kdbx)</source> + <translation>norimų atverti slaptažodžių duomenų bazių failų pavadinimai (*.kdbx)</translation> + </message> </context> </TS>
\ 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,15 +1,7 @@ -<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_CN" version="2.0"> +<?xml version="1.0" ?><!DOCTYPE TS><TS language="zh_CN" version="2.1"> <context> <name>AboutDialog</name> <message> - <source>About KeePassX</source> - <translation>关于 KeePassX</translation> - </message> - <message> - <source>KeePassX is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source> - <translation>KeePassX 使用的是第 2 版 GNU 通用公共授权协议(GPL)(你可以根据需要选用第 3 版).</translation> - </message> - <message> <source>Revision</source> <translation>修改</translation> </message> @@ -17,17 +9,55 @@ <source>Using:</source> <translation>使用:</translation> </message> + <message> + <source>About KeePassXC</source> + <translation>关于 KeePassXC</translation> + </message> + <message> + <source>Extensions: +</source> + <translation>扩展: +</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 使用的是第 2 版 GNU 通用公共授权协议(GPL)(你可以根据需要选用第 3 版).</translation> + </message> </context> <context> - <name>AutoType</name> + <name>AccessControlDialog</name> <message> - <source>Auto-Type - KeePassX</source> - <translation>KeePassX - 自动输入</translation> + <source>Remember this decision</source> + <translation type="unfinished"/> </message> <message> + <source>Allow</source> + <translation>允许</translation> + </message> + <message> + <source>Deny</source> + <translation>拒绝</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"/> + </message> + <message> + <source>KeePassXC HTTP Confirm Access</source> + <translation type="unfinished"/> + </message> +</context> +<context> + <name>AutoType</name> + <message> <source>Couldn't find an entry that matches the window title:</source> <translation>无法找到符合窗口标题的项目</translation> </message> + <message> + <source>Auto-Type - KeePassXC</source> + <translation>KeePassXC - 自动输入</translation> + </message> </context> <context> <name>AutoTypeAssociationsModel</name> @@ -47,13 +77,13 @@ <context> <name>AutoTypeSelectDialog</name> <message> - <source>Auto-Type - KeePassX</source> - <translation>KeePassX - 自动输入</translation> - </message> - <message> <source>Select entry to Auto-Type:</source> <translation>选择自动输入的项目</translation> </message> + <message> + <source>Auto-Type - KeePassXC</source> + <translation>KeePassXC - 自动输入</translation> + </message> </context> <context> <name>ChangeMasterKeyWidget</name> @@ -70,10 +100,6 @@ <translation>重复密码:</translation> </message> <message> - <source>Key file</source> - <translation>秘钥文件</translation> - </message> - <message> <source>Browse</source> <translation>浏览</translation> </message> @@ -127,6 +153,10 @@ <translation>无法设置 %1 为秘钥文件: %2</translation> </message> + <message> + <source>&Key file</source> + <translation>秘钥文件</translation> + </message> </context> <context> <name>DatabaseOpenWidget</name> @@ -227,10 +257,6 @@ You can now save it.</source> <translation>默认用户名:</translation> </message> <message> - <source>Use recycle bin:</source> - <translation>使用垃圾桶:</translation> - </message> - <message> <source> MiB</source> <translation>MiB</translation> </message> @@ -246,6 +272,10 @@ You can now save it.</source> <source>Max. history size:</source> <translation>最大历史记录大小:</translation> </message> + <message> + <source>Use recycle bin</source> + <translation>使用回收站</translation> + </message> </context> <context> <name>DatabaseTabWidget</name> @@ -320,12 +350,6 @@ Save changes?</source> <translation>已锁</translation> </message> <message> - <source>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.</source> - <translation>你要打开的数据库已被另一个KeePassX锁住。 -你确定要以只读方式的打开吗?</translation> - </message> - <message> <source>Lock database</source> <translation>锁住数据库</translation> </message> @@ -368,15 +392,38 @@ Discard changes and close anyway?</source> <translation>写入CSV格式文件失败</translation> </message> <message> - <source>The database you are trying to save as is locked by another instance of KeePassX. + <source>Unable to open the database.</source> + <translation>无法打开数据库。</translation> + </message> + <message> + <source>Merge database</source> + <translation>合并数据库</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>你要保存的数据库已被另一个KeePassX锁住。 + <translation>你要保存的数据库已被另一个KeePassXC锁住。 你仍然要保存吗?</translation> </message> <message> - <source>Unable to open the database.</source> + <source>Passwords</source> <translation type="unfinished"/> </message> + <message> + <source>Database already opened</source> + <translation>数据库已经打开</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>你要打开的数据库已被另一个KeePassXC锁住。 +你仍然要打开吗?</translation> + </message> + <message> + <source>Open read-only</source> + <translation>已只读方式打开</translation> + </message> </context> <context> <name>DatabaseWidget</name> @@ -417,10 +464,6 @@ Do you want to save it anyway?</source> <translation>你确定永远删除 "%1" 群组吗?</translation> </message> <message> - <source>Current group</source> - <translation>当前群组</translation> - </message> - <message> <source>Error</source> <translation>错误</translation> </message> @@ -430,11 +473,67 @@ Do you want to save it anyway?</source> </message> <message> <source>Move entry to recycle bin?</source> - <translation type="unfinished"/> + <translation>移动项目到回收站?</translation> </message> <message> <source>Do you really want to move entry "%1" to the recycle bin?</source> - <translation type="unfinished"/> + <translation>是否删除 "%1" 项目到回收站?</translation> + </message> + <message> + <source>Searching...</source> + <translation>搜索中...</translation> + </message> + <message> + <source>No current database.</source> + <translation>没有当前的数据库。</translation> + </message> + <message> + <source>No source database, nothing to do.</source> + <translation>没有当前的数据库。没什么可做的。</translation> + </message> + <message> + <source>Search Results (%1)</source> + <translation>搜索结果 (%1)</translation> + </message> + <message> + <source>No Results</source> + <translation>无结果</translation> + </message> + <message> + <source>Execute command?</source> + <translation>执行命令?</translation> + </message> + <message> + <source>Do you really want to execute the following command?<br><br>%1<br></source> + <translation>你确定要执行以下命令?<br><br>%1<br></translation> + </message> + <message> + <source>Remember my choice</source> + <translation>记住这次更改</translation> + </message> + <message> + <source>Autoreload Request</source> + <translation>自动加载请求</translation> + </message> + <message> + <source>The database file has changed. Do you want to load the changes?</source> + <translation>数据库文件已更改。是否重新载入?</translation> + </message> + <message> + <source>Merge Request</source> + <translation>合并请求</translation> + </message> + <message> + <source>The database file has changed and you have unsaved changes.Do you want to merge your changes?</source> + <translation>数据库文件已更改,您有未保存的更改。是否合并您的更改?</translation> + </message> + <message> + <source>Autoreload Failed</source> + <translation>自动加载失败</translation> + </message> + <message> + <source>Could not open the new database file while attempting to autoreload this database.</source> + <translation>在尝试 autoreload 此数据库不打开新的数据库文件。</translation> </message> </context> <context> @@ -560,14 +659,6 @@ Do you want to save it anyway?</source> <translation>打开此项目的自动输入</translation> </message> <message> - <source>Inherit default Auto-Type sequence from the group</source> - <translation>从父群组继承默认的自动输入顺序</translation> - </message> - <message> - <source>Use custom Auto-Type sequence:</source> - <translation>使用自定义自动输入顺序</translation> - </message> - <message> <source>+</source> <translation>+</translation> </message> @@ -580,11 +671,19 @@ Do you want to save it anyway?</source> <translation>窗口标题:</translation> </message> <message> - <source>Use default sequence</source> + <source>Inherit default Auto-Type sequence from the &group</source> + <translation>从父群组继承默认的自动输入顺序</translation> + </message> + <message> + <source>&Use custom Auto-Type sequence:</source> + <translation>使用自定义自动输入顺序</translation> + </message> + <message> + <source>Use default se&quence</source> <translation>使用默认顺序</translation> </message> <message> - <source>Set custom sequence:</source> + <source>Set custo&m sequence:</source> <translation>设置自定义顺序</translation> </message> </context> @@ -626,10 +725,6 @@ Do you want to save it anyway?</source> <translation>重复:</translation> </message> <message> - <source>Gen.</source> - <translation>生成.</translation> - </message> - <message> <source>URL:</source> <translation>网址:</translation> </message> @@ -715,14 +810,6 @@ Do you want to save it anyway?</source> <context> <name>EditWidgetIcons</name> <message> - <source>Use default icon</source> - <translation>使用默认图标</translation> - </message> - <message> - <source>Use custom icon</source> - <translation>使用自定义图标</translation> - </message> - <message> <source>Add custom icon</source> <translation>添加自定义图标</translation> </message> @@ -746,17 +833,33 @@ Do you want to save it anyway?</source> <source>Can't delete icon!</source> <translation>不能删除图标!</translation> </message> - <message numerus="yes"> - <source>Can't delete icon. Still used by %n item(s).</source> - <translation><numerusform>不能删除图标。仍在被 %n 个项目使用</numerusform></translation> - </message> <message> <source>Error</source> - <translation type="unfinished"/> + <translation>错误</translation> </message> <message> - <source>Can't read icon:</source> - <translation type="unfinished"/> + <source>Download favicon</source> + <translation>下载网站头像</translation> + </message> + <message> + <source>Unable to fetch favicon.</source> + <translation>无法获取网站头像</translation> + </message> + <message> + <source>Can't read icon</source> + <translation>无法读取图标</translation> + </message> + <message> + <source>Can't delete icon. Still used by %1 items.</source> + <translation>%1 项目正在使用,无法删除图标。</translation> + </message> + <message> + <source>&Use default icon</source> + <translation>使用默认图标</translation> + </message> + <message> + <source>Use custo&m icon</source> + <translation>使用自定义图标</translation> </message> </context> <context> @@ -779,6 +882,13 @@ Do you want to save it anyway?</source> </message> </context> <context> + <name>Entry</name> + <message> + <source> - Clone</source> + <translation>- 复制</translation> + </message> +</context> +<context> <name>EntryAttributesModel</name> <message> <source>Name</source> @@ -831,6 +941,61 @@ Do you want to save it anyway?</source> </message> </context> <context> + <name>HttpPasswordGeneratorWidget</name> + <message> + <source>Length:</source> + <translation>长度:</translation> + </message> + <message> + <source>Character Types</source> + <translation>字符类型</translation> + </message> + <message> + <source>Upper Case Letters</source> + <translation>大写英文字母</translation> + </message> + <message> + <source>A-Z</source> + <translation>A-Z</translation> + </message> + <message> + <source>Lower Case Letters</source> + <translation>小写英文字母</translation> + </message> + <message> + <source>a-z</source> + <translation>a-z</translation> + </message> + <message> + <source>Numbers</source> + <translation>数字</translation> + </message> + <message> + <source>0-9</source> + <translation>0-9</translation> + </message> + <message> + <source>Special Characters</source> + <translation>特殊字符</translation> + </message> + <message> + <source>/*_& ...</source> + <translation>/*_& ...</translation> + </message> + <message> + <source>Exclude look-alike characters</source> + <translation>去除相似的字符</translation> + </message> + <message> + <source>Ensure that the password contains characters from every group</source> + <translation>确保密码包含每种的字符</translation> + </message> + <message> + <source>Accept</source> + <translation>接受</translation> + </message> +</context> +<context> <name>KeePass1OpenWidget</name> <message> <source>Import KeePass1 database</source> @@ -873,7 +1038,7 @@ Do you want to save it anyway?</source> </message> <message> <source>Wrong key or database file is corrupt.</source> - <translation type="unfinished"/> + <translation>秘钥错误或数据库损坏。</translation> </message> </context> <context> @@ -911,8 +1076,8 @@ This is a one-way migration. You won't be able to open the imported databas <translation>在测试加密函数时发生重大错误。</translation> </message> <message> - <source>KeePassX - Error</source> - <translation>KeePassX - 错误</translation> + <source>KeePassXC - Error</source> + <translation>KeePassXC - 错误</translation> </message> </context> <context> @@ -922,188 +1087,317 @@ This is a one-way migration. You won't be able to open the imported databas <translation>数据库</translation> </message> <message> - <source>Recent databases</source> + <source>Open database</source> + <translation>打开数据库</translation> + </message> + <message> + <source>Database settings</source> + <translation>数据库设置</translation> + </message> + <message> + <source>Copy username to clipboard</source> + <translation>将用户名复制到剪贴板</translation> + </message> + <message> + <source>Copy password to clipboard</source> + <translation>将密码复制到剪贴板</translation> + </message> + <message> + <source>Settings</source> + <translation>设置</translation> + </message> + <message> + <source>Show toolbar</source> + <translation>显示工具栏</translation> + </message> + <message> + <source>read-only</source> + <translation>只读</translation> + </message> + <message> + <source>Toggle window</source> + <translation>切换窗口</translation> + </message> + <message> + <source>Tools</source> + <translation>工具</translation> + </message> + <message> + <source>KeePass 2 Database</source> + <translation>KeePass 2 数据库</translation> + </message> + <message> + <source>All files</source> + <translation>所有文件</translation> + </message> + <message> + <source>Save repaired database</source> + <translation>保存修复后的数据库</translation> + </message> + <message> + <source>Error</source> + <translation>错误</translation> + </message> + <message> + <source>Writing the database failed.</source> + <translation>数据库写入失败</translation> + </message> + <message> + <source>&Recent databases</source> <translation>最近的数据库</translation> </message> <message> - <source>Help</source> + <source>He&lp</source> <translation>帮助</translation> </message> <message> - <source>Entries</source> - <translation>项目</translation> + <source>E&ntries</source> + <translation type="unfinished"/> </message> <message> - <source>Copy attribute to clipboard</source> + <source>Copy att&ribute to clipboard</source> <translation>将属性复制到剪贴板</translation> </message> <message> - <source>Groups</source> + <source>&Groups</source> <translation>群组</translation> </message> <message> - <source>View</source> + <source>&View</source> <translation>显示</translation> </message> <message> - <source>Quit</source> + <source>&Quit</source> <translation>退出</translation> </message> <message> - <source>About</source> + <source>&About</source> <translation>关于</translation> </message> <message> - <source>Open database</source> + <source>&Open database</source> <translation>打开数据库</translation> </message> <message> - <source>Save database</source> + <source>&Save database</source> <translation>保存数据库</translation> </message> <message> - <source>Close database</source> + <source>&Close database</source> <translation>关闭数据库</translation> </message> <message> - <source>New database</source> + <source>&New database</source> <translation>新建数据库</translation> </message> <message> - <source>Add new entry</source> + <source>Merge from KeePassX database</source> + <translation>从KeePassX数据库合并</translation> + </message> + <message> + <source>&Add new entry</source> <translation>新增项目</translation> </message> <message> - <source>View/Edit entry</source> + <source>&View/Edit entry</source> <translation>浏览/编辑项目</translation> </message> <message> - <source>Delete entry</source> + <source>&Delete entry</source> <translation>删除项目</translation> </message> <message> - <source>Add new group</source> + <source>&Add new group</source> <translation>新增群组</translation> </message> <message> - <source>Edit group</source> + <source>&Edit group</source> <translation>编辑群组</translation> </message> <message> - <source>Delete group</source> + <source>&Delete group</source> <translation>删除群组</translation> </message> <message> - <source>Save database as</source> + <source>Sa&ve database as</source> <translation>另存数据库为</translation> </message> <message> - <source>Change master key</source> + <source>Change &master key</source> <translation>更改主密码</translation> </message> <message> - <source>Database settings</source> + <source>&Database settings</source> <translation>数据库设置</translation> </message> <message> - <source>Import KeePass 1 database</source> + <source>&Import KeePass 1 database</source> <translation>导入KeePass 1 数据库</translation> </message> <message> - <source>Clone entry</source> + <source>&Clone entry</source> <translation>复制项目</translation> </message> <message> - <source>Find</source> + <source>&Find</source> <translation>查找</translation> </message> <message> - <source>Copy username to clipboard</source> - <translation>将用户名复制到剪贴板</translation> + <source>Copy &username</source> + <translation>复制用户名</translation> </message> <message> - <source>Copy password to clipboard</source> - <translation>将密码复制到剪贴板</translation> + <source>Cop&y password</source> + <translation>复制密码</translation> </message> <message> - <source>Settings</source> + <source>&Settings</source> <translation>设置</translation> </message> <message> - <source>Perform Auto-Type</source> + <source>&Perform Auto-Type</source> <translation>执行自动输入</translation> </message> <message> - <source>Open URL</source> + <source>&Open URL</source> <translation>打开网址</translation> </message> <message> - <source>Lock databases</source> + <source>&Lock databases</source> <translation>锁住数据库</translation> </message> <message> - <source>Title</source> + <source>&Title</source> <translation>标题</translation> </message> <message> - <source>URL</source> + <source>&URL</source> <translation>网址</translation> </message> <message> - <source>Notes</source> + <source>&Notes</source> <translation>备注</translation> </message> <message> - <source>Show toolbar</source> - <translation>显示工具栏</translation> + <source>&Export to CSV file</source> + <translation>导出为CSV格式文件</translation> </message> <message> - <source>read-only</source> - <translation>只读</translation> + <source>Re&pair database</source> + <translation>修复数据库</translation> </message> <message> - <source>Toggle window</source> - <translation>切换窗口</translation> + <source>Password Generator</source> + <translation>密码生成器</translation> </message> +</context> +<context> + <name>OptionDialog</name> <message> - <source>Tools</source> - <translation>工具</translation> + <source>Dialog</source> + <translation>对话框</translation> </message> <message> - <source>Copy username</source> - <translation>复制用户名</translation> + <source>General</source> + <translation>常规</translation> </message> <message> - <source>Copy password</source> - <translation>复制密码</translation> + <source>Sh&ow a notification when credentials are requested</source> + <translation type="unfinished"/> </message> <message> - <source>Export to CSV file</source> - <translation>导出为CSV格式文件</translation> + <source>&Match URL schemes +Only entries with the same scheme (http://, https://, ftp://, ...) are returned</source> + <translation type="unfinished"/> </message> <message> - <source>Repair database</source> - <translation>修复数据库</translation> + <source>Sort matching entries by &username</source> + <translation>按匹配用户名排序</translation> </message> <message> - <source>KeePass 2 Database</source> - <translation>KeePass 2 数据库</translation> + <source>Re&move all stored permissions from entries in active database</source> + <translation type="unfinished"/> </message> <message> - <source>All files</source> - <translation>所有文件</translation> + <source>Password generator</source> + <translation>密码生成器</translation> </message> <message> - <source>Save repaired database</source> - <translation>保存修复后的数据库</translation> + <source>Advanced</source> + <translation>高级</translation> </message> <message> - <source>Error</source> - <translation>错误</translation> + <source>Always allow &access to entries</source> + <translation>永远允许访问项目</translation> </message> <message> - <source>Writing the database failed.</source> - <translation>数据库写入失败</translation> + <source>Always allow &updating entries</source> + <translation>永远允许更新项目</translation> + </message> + <message> + <source>Searc&h in all opened databases for matching entries</source> + <translation>在所有打开的数据库中查找匹配项目</translation> + </message> + <message> + <source>Only the selected database has to be connected with a client!</source> + <translation>客户端只能连接选中的数据库!</translation> + </message> + <message> + <source>HTTP Port:</source> + <translation>HTTP端口:</translation> + </message> + <message> + <source>Default port: 19455</source> + <translation>默认端口:19455</translation> + </message> + <message> + <source>Re&quest to unlock the database if it is locked</source> + <translation type="unfinished"/> + </message> + <message> + <source>Sort &matching entries by title</source> + <translation>用标题排序匹配的项目</translation> + </message> + <message> + <source>Enable KeepassXC HTTP protocol +This is required for accessing your databases from ChromeIPass or PassIFox</source> + <translation>启用KeepassXC HTTP协议 +这需要ChromeIPass或PassIFox访问你的数据库</translation> + </message> + <message> + <source>KeePassXC will listen to this port on 127.0.0.1</source> + <translation>KeePassXC 将监听 127.0.0.1上的此端口</translation> + </message> + <message> + <source>Cannot bind to privileged ports</source> + <translation>无法绑定到特殊端口</translation> + </message> + <message> + <source>Cannot bind to privileged ports below 1024! +Using default port 19455.</source> + <translation>无法绑定低于 1024的特殊端口 ! +使用默认端口 19455。</translation> + </message> + <message> + <source>&Return only best matching entries for a URL instead +of all entries for the whole domain</source> + <translation>只返回最佳匹配条目的 URL 而不是整个域的所有条目</translation> + </message> + <message> + <source>R&emove all shared encryption keys from active database</source> + <translation>移除所有激活数据库共享的加密密钥</translation> + </message> + <message> + <source>The following options can be dangerous. Change them only if you know what you are doing.</source> + <translation>以下选项不要修改。除非你知道自己在做什么。</translation> + </message> + <message> + <source>&Return advanced string fields which start with "KPH: "</source> + <translation type="unfinished"/> + </message> + <message> + <source>Automatically creating or updating string fields is not supported.</source> + <translation>不支持自动创建或更新字符串字段。</translation> </message> </context> <context> @@ -1113,10 +1407,6 @@ This is a one-way migration. You won't be able to open the imported databas <translation>密码:</translation> </message> <message> - <source>Length:</source> - <translation>长度:</translation> - </message> - <message> <source>Character Types</source> <translation>字符类型</translation> </message> @@ -1141,70 +1431,71 @@ This is a one-way migration. You won't be able to open the imported databas <translation>去除相似的字符</translation> </message> <message> - <source>Ensure that the password contains characters from every group</source> - <translation>确保密码包含每种的字符</translation> - </message> - <message> <source>Accept</source> <translation>接受</translation> </message> -</context> -<context> - <name>QCommandLineParser</name> <message> - <source>Displays version information.</source> - <translation>显示版本信息</translation> + <source>%p%</source> + <translation>%p%</translation> </message> <message> - <source>Displays this help.</source> - <translation>显示帮助信息</translation> + <source>strength</source> + <translation>强度</translation> </message> <message> - <source>Unknown option '%1'.</source> - <translation>未知选项 '%1'。</translation> + <source>entropy</source> + <translation type="unfinished"/> </message> <message> - <source>Unknown options: %1.</source> - <translation>未知选项: %1。</translation> + <source>&Length:</source> + <translation>长度︰</translation> </message> <message> - <source>Missing value after '%1'.</source> - <translation>在 '%1' 后缺少值。</translation> + <source>Pick characters from every group</source> + <translation>从每个组选择字符</translation> </message> <message> - <source>Unexpected value after '%1'.</source> - <translation>'%1' 后有无法识别的值。</translation> + <source>Generate</source> + <translation>生成</translation> </message> <message> - <source>[options]</source> - <translation>[选项]</translation> + <source>Close</source> + <translation>关闭</translation> </message> <message> - <source>Usage: %1</source> - <translation>已用:%1</translation> + <source>Apply</source> + <translation>应用</translation> </message> <message> - <source>Options:</source> - <translation>选项:</translation> + <source>Entropy: %1 bit</source> + <translation type="unfinished"/> </message> <message> - <source>Arguments:</source> - <translation>参数:</translation> + <source>Password Quality: %1</source> + <translation>密码强度:%1</translation> + </message> + <message> + <source>Poor</source> + <translation>差</translation> </message> -</context> -<context> - <name>QSaveFile</name> <message> - <source>Existing file %1 is not writable</source> - <translation>当前文件%1 不可写</translation> + <source>Weak</source> + <translation>弱</translation> </message> <message> - <source>Writing canceled by application</source> - <translation>应用程序取消写入</translation> + <source>Good</source> + <translation>好</translation> </message> <message> - <source>Partial write. Partition full?</source> - <translation>写入不完整。磁盘满了吗?</translation> + <source>Excellent</source> + <translation>优秀</translation> + </message> +</context> +<context> + <name>QObject</name> + <message> + <source>Http</source> + <translation>Http</translation> </message> </context> <context> @@ -1244,20 +1535,109 @@ This is a one-way migration. You won't be able to open the imported databas <context> <name>SearchWidget</name> <message> - <source>Find:</source> - <translation>查找:</translation> + <source>Case Sensitive</source> + <translation>区分大小写</translation> </message> <message> - <source>Case sensitive</source> - <translation>区分大小写</translation> + <source>Search</source> + <translation>搜索</translation> </message> <message> - <source>Current group</source> - <translation>当前群组</translation> + <source>Find</source> + <translation>查找</translation> </message> <message> - <source>Root group</source> - <translation>根群组</translation> + <source>Clear</source> + <translation>清除</translation> + </message> +</context> +<context> + <name>Service</name> + <message> + <source>A shared encryption-key with the name "%1" already exists. +Do you want to overwrite it?</source> + <translation>一个共享的加密密钥,名为"%1"已存在。 +你想要覆盖它吗?</translation> + </message> + <message> + <source>Do you want to update the information in %1 - %2?</source> + <translation>你想更新 %1-%2 中的信息吗?</translation> + </message> + <message> + <source>The active database is locked! +Please unlock the selected database or choose another one which is unlocked.</source> + <translation>激活的数据库被锁定 ! +请解锁选定的数据库或选择另一已解锁的数据库。</translation> + </message> + <message> + <source>Successfully removed %1 encryption-%2 from KeePassX/Http Settings.</source> + <translation type="unfinished"/> + </message> + <message> + <source>No shared encryption-keys found in KeePassHttp Settings.</source> + <translation type="unfinished"/> + </message> + <message> + <source>The active database does not contain an entry of KeePassHttp Settings.</source> + <translation type="unfinished"/> + </message> + <message> + <source>Removing stored permissions...</source> + <translation>正在删除存储的权限...</translation> + </message> + <message> + <source>Abort</source> + <translation>中断</translation> + </message> + <message> + <source>Successfully removed permissions from %1 %2.</source> + <translation type="unfinished"/> + </message> + <message> + <source>The active database does not contain an entry with permissions.</source> + <translation type="unfinished"/> + </message> + <message> + <source>KeePassXC: New key association request</source> + <translation type="unfinished"/> + </message> + <message> + <source>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.</source> + <translation type="unfinished"/> + </message> + <message> + <source>KeePassXC: Overwrite existing key?</source> + <translation>KeePassXC︰ 覆盖现有的密钥吗?</translation> + </message> + <message> + <source>KeePassXC: Update Entry</source> + <translation>KeePassXC︰ 更新条目</translation> + </message> + <message> + <source>KeePassXC: Database locked!</source> + <translation>KeePassXC︰ 数据库被锁定 !</translation> + </message> + <message> + <source>KeePassXC: Removed keys from database</source> + <translation>KeePassXC︰ 从数据库中删除键</translation> + </message> + <message> + <source>KeePassXC: No keys found</source> + <translation>KeePassXC︰ 未找到键</translation> + </message> + <message> + <source>KeePassXC: Settings not available!</source> + <translation>KeePassXC︰ 设置不可用 !</translation> + </message> + <message> + <source>KeePassXC: Removed permissions</source> + <translation>KeePassXC︰ 已删除的权限</translation> + </message> + <message> + <source>KeePassXC: No entry with permissions found!</source> + <translation type="unfinished"/> </message> </context> <context> @@ -1282,10 +1662,6 @@ This is a one-way migration. You won't be able to open the imported databas <translation>记住最近的数据库</translation> </message> <message> - <source>Open previous databases on startup</source> - <translation>在启动时打开最近的数据库</translation> - </message> - <message> <source>Automatically save on exit</source> <translation>离开后自动保存</translation> </message> @@ -1326,12 +1702,20 @@ This is a one-way migration. You won't be able to open the imported databas <translation>记住最近的秘钥文件</translation> </message> <message> - <source>Hide window to system tray instead of App Exit</source> - <translation type="unfinished"/> + <source>Load previous databases on startup</source> + <translation>在启动时加载最近的数据库</translation> </message> <message> - <source>Hide window to system tray on App start</source> - <translation type="unfinished"/> + <source>Automatically reload the database when modified externally</source> + <translation>当外部修改时自动重新加载数据库</translation> + </message> + <message> + <source>Hide window to system tray instead of app exit</source> + <translation>退出时将窗口最小化至任务栏</translation> + </message> + <message> + <source>Minimize window at application startup</source> + <translation>在应用程序启动时窗口最小化</translation> </message> </context> <context> @@ -1356,6 +1740,14 @@ This is a one-way migration. You won't be able to open the imported databas <source>Always ask before performing auto-type</source> <translation>在执行自动输入前询问</translation> </message> + <message> + <source>Lock databases after minimizing the window</source> + <translation>在最小化窗口后锁定数据库</translation> + </message> + <message> + <source>Don't require password repeat when it is visible</source> + <translation>可见时不需要重复输入密码</translation> + </message> </context> <context> <name>UnlockDatabaseWidget</name> @@ -1374,14 +1766,6 @@ This is a one-way migration. You won't be able to open the imported databas <context> <name>main</name> <message> - <source>KeePassX - cross-platform password manager</source> - <translation>KeePassX - 跨平台密码管理软件</translation> - </message> - <message> - <source>filename of the password database to open (*.kdbx)</source> - <translation>打开密码数据库文件名(*.kdbx)</translation> - </message> - <message> <source>path to a custom config file</source> <translation>自定义配置文件路径</translation> </message> @@ -1389,5 +1773,17 @@ This is a one-way migration. You won't be able to open the imported databas <source>key file of the database</source> <translation>数据库秘钥文件</translation> </message> + <message> + <source>KeePassXC - cross-platform password manager</source> + <translation>KeePassXC - 跨平台密码管理软件</translation> + </message> + <message> + <source>read password of the database from stdin</source> + <translation>从标准输入读取数据库的密码</translation> + </message> + <message> + <source>filenames of the password databases to open (*.kdbx)</source> + <translation>打开密码数据库文件名(*.kdbx)</translation> + </message> </context> </TS>
\ No newline at end of file diff --git a/setup/gui/keepassxc.desktop b/snap/gui/keepassxc.desktop index bad5a8735..bad5a8735 100644 --- a/setup/gui/keepassxc.desktop +++ b/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 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) diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index c425332f7..3168fc383 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -21,6 +21,7 @@ #include <QLockFile> #include <QSaveFile> #include <QTabWidget> +#include <QPushButton> #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); - - if (result == 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::NoRole); + msgBox.setDefaultButton(readOnlyButton); + msgBox.setEscapeButton(QMessageBox::No); + auto result = msgBox.exec(); + + 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; } } } 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 diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index a7347b35a..b0e1a1925 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -282,6 +282,10 @@ MainWindow::MainWindow() connect(m_ui->actionAbout, SIGNAL(triggered()), SLOT(showAboutDialog())); +#ifdef Q_OS_MAC + setUnifiedTitleAndToolBarOnMac(true); +#endif + updateTrayIcon(); } @@ -559,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(); @@ -724,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(); 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</stri <item> <widget class="QCheckBox" name="bestMatchOnly"> <property name="text"> - <string>&Return only best matching entries for an URL instead + <string>&Return only best matching entries for a URL instead of all entries for the whole domain</string> </property> </widget> @@ -82,7 +82,7 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< <item> <widget class="QPushButton" name="removeSharedEncryptionKeys"> <property name="text"> - <string>R&emove all shared encryption-keys from active database</string> + <string>R&emove all shared encryption keys from active database</string> </property> </widget> </item> @@ -148,7 +148,7 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< <string notr="true">color: rgb(255, 0, 0);</string> </property> <property name="text"> - <string>Activate the following only, if you know what you are doing!</string> + <string>The following options can be dangerous. Change them only if you know what you are doing.</string> </property> </widget> </item> @@ -186,14 +186,14 @@ Only entries with the same scheme (http://, https://, ftp://, ...) are returned< <item> <widget class="QCheckBox" name="supportKphFields"> <property name="text"> - <string>&Return also advanced string fields which start with "KPH: "</string> + <string>&Return advanced string fields which start with "KPH: "</string> </property> </widget> </item> <item> <widget class="QLabel" name="label_2"> <property name="text"> - <string>Automatic creates or updates are not supported for string fields!</string> + <string>Automatically creating or updating string fields is not supported.</string> </property> <property name="indent"> <number>30</number> 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<int>(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<size_t>(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<qintptr>(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<size_t>(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 diff --git a/src/main.cpp b/src/main.cpp index 9f912a644..0618cefae 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,7 +18,6 @@ #include <QCommandLineParser> #include <QFile> #include <QTextStream> -#include <QtGlobal> #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); @@ -68,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"), 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; /********************************************************************************** |