diff --git a/.tx/config b/.tx/config index 3fcd5b969..2092a4bb5 100644 --- a/.tx/config +++ b/.tx/config @@ -1,7 +1,7 @@ [main] host = https://www.transifex.com -[keepassxc.keepassx_ents] +[keepassxc.keepassxc] source_file = share/translations/keepassx_en.ts file_filter = share/translations/keepassx_.ts source_lang = en diff --git a/CHANGELOG b/CHANGELOG index 4c29e968e..4f9943abe 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,8 +1,34 @@ -2.4.0-preview (TBD) +2.4.0 (2019-03-19) ========================= -This is a pre-release build, view merged PR's at -https://github.com/keepassxreboot/keepassxc/pulls?q=is%3Apr+milestone%3Av2.4.0+is%3Aclosed +- New Database Wizard [#1952] +- Advanced Search [#1797] +- Automatic update checker [#2648] +- KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739] +- Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439] +- Remove KeePassHttp support [#1752] +- CLI: output info to stderr for easier scripting [#2558] +- CLI: Add --quiet option [#2507] +- CLI: Add create command [#2540] +- CLI: Add recursive listing of entries [#2345] +- CLI: Fix stdin/stdout encoding on Windows [#2425] +- SSH Agent: Support OpenSSH for Windows [#1994] +- macOS: TouchID Quick Unlock [#1851] +- macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583] +- Linux: Prevent Klipper from storing secrets in clipboard [#1969] +- Linux: Use polling based file watching for NFS [#2171] +- Linux: Enable use of browser plugin in Snap build [#2802] +- TOTP QR Code Generator [#1167] +- High-DPI Scaling for 4k screens [#2404] +- Make keyboard shortcuts more consistent [#2431] +- Warn user if deleting referenced entries [#1744] +- Allow toolbar to be hidden and repositioned [#1819, #2357] +- Increase max allowed database timeout to 12 hours [#2173] +- Password generator uses existing password length by default [#2318] +- Improve alert message box button labels [#2376] +- Show message when a database merge makes no changes [#2551] +- Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790] +- Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731] 2.3.4 (2018-08-21) ========================= diff --git a/release-tool b/release-tool index 82d4fbc39..a04ad5de9 100755 --- a/release-tool +++ b/release-tool @@ -236,15 +236,8 @@ checkGitRepository() { fi } -checkTagExists() { - git tag | grep -q "$TAG_NAME" - if [ $? -ne 0 ]; then - exitError "Tag '${TAG_NAME}' does not exist!" - fi -} - checkReleaseDoesNotExist() { - git tag | grep -q "$TAG_NAME" + git tag | grep -q "^$TAG_NAME$" if [ $? -eq 0 ]; then exitError "Release '$RELEASE_NAME' (tag: '$TAG_NAME') already exists!" fi @@ -325,6 +318,11 @@ checkSnapcraft() { if [ $? -ne 0 ]; then exitError "'snapcraft.yaml' has not been updated to the '${RELEASE_NAME}' release!" fi + + grep -qPzo "KEEPASSXC_BUILD_TYPE=Release" snapcraft.yaml + if [ $? -ne 0 ]; then + exitError "'snapcraft.yaml' is not set for a release build!" + fi } checkTransifexCommandExists() { @@ -333,12 +331,6 @@ checkTransifexCommandExists() { fi } -checkOsslsigncodeCommandExists() { - if ! cmdExists osslsigncode; then - exitError "osslsigncode command not found on the PATH! Please install it using 'pacman -S mingw-w64-osslsigncode'." - fi -} - checkSigntoolCommandExists() { if ! cmdExists signtool; then exitError "signtool command not found on the PATH! Add the Windows SDK binary folder to your PATH." @@ -818,6 +810,10 @@ build() { shift done + if [[ ${build_appsign} && ! -f ${build_key} ]]; then + exitError "--appsign specified with invalid key file\n" + fi + init OUTPUT_DIR="$(realpath "$OUTPUT_DIR")" @@ -912,7 +908,7 @@ build() { make ${MAKE_OPTIONS} package # Appsign the executables if desired - if [[ ${build_appsign} && ! -z ${build_key} ]]; then + if [[ ${build_appsign} ]]; then logInfo "Signing executable files" appsign "-f" "./${APP_NAME}-${RELEASE_NAME}.dmg" "-k" "${build_key}" fi @@ -928,9 +924,9 @@ build() { mingw32-make ${MAKE_OPTIONS} preinstall # Appsign the executables if desired - if [[ ${build_appsign} && ! -z ${build_key} ]]; then + if [[ ${build_appsign} ]]; then logInfo "Signing executable files" - appsign "-f" $(find src | grep '\.exe') "-k" "${build_key}" + appsign "-f" $(find src | grep -P '\.exe$|\.dll$') "-k" "${build_key}" fi # Call cpack directly instead of calling make package. @@ -1172,8 +1168,6 @@ appsign() { done elif [ "$(uname -o)" == "Msys" ]; then - checkOsslsigncodeCommandExists - if [[ ! -f "${key}" ]]; then exitError "Key file was not found!" fi @@ -1182,20 +1176,8 @@ appsign() { echo for f in "${sign_files[@]}"; do - if [[ ${f: -4} == ".exe" ]]; then - logInfo "Signing file '${f}' using osslsigncode..." - # output a signed exe; we have to use a different name due to osslsigntool limitations - osslsigncode sign -pkcs12 "${key}" -pass "${password}" -n "KeePassXC" \ - -t "http://timestamp.comodoca.com/authenticode" -in "${f}" -out "${f}.signed" - - if [ 0 -ne $? ]; then - rm -f "${f}.signed" - exitError "Signing failed!" - fi - - # overwrite the original exe with the signed exe - mv -f "${f}.signed" "${f}" - elif [[ ${f: -4} == ".msi" ]]; then + ext=${f: -4} + if [[ $ext == ".msi" || $ext == ".exe" || $ext == ".dll" ]]; then # Make sure we can find the signtool checkSigntoolCommandExists diff --git a/share/linux/org.keepassxc.KeePassXC.appdata.xml b/share/linux/org.keepassxc.KeePassXC.appdata.xml index cf9d499bf..45480333c 100644 --- a/share/linux/org.keepassxc.KeePassXC.appdata.xml +++ b/share/linux/org.keepassxc.KeePassXC.appdata.xml @@ -50,11 +50,38 @@ - + -

- This is a pre-release build, click to view merged PR's -

+
    +
  • New Database Wizard [#1952]
  • +
  • Advanced Search [#1797]
  • +
  • Automatic update checker [#2648]
  • +
  • KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739]
  • +
  • Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439]
  • +
  • Remove KeePassHttp support [#1752]
  • +
  • CLI: output info to stderr for easier scripting [#2558]
  • +
  • CLI: Add --quiet option [#2507]
  • +
  • CLI: Add create command [#2540]
  • +
  • CLI: Add recursive listing of entries [#2345]
  • +
  • CLI: Fix stdin/stdout encoding on Windows [#2425]
  • +
  • SSH Agent: Support OpenSSH for Windows [#1994]
  • +
  • macOS: TouchID Quick Unlock [#1851]
  • +
  • macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583]
  • +
  • Linux: Prevent Klipper from storing secrets in clipboard [#1969]
  • +
  • Linux: Use polling based file watching for NFS [#2171]
  • +
  • Linux: Enable use of browser plugin in Snap build [#2802]
  • +
  • TOTP QR Code Generator [#1167]
  • +
  • High-DPI Scaling for 4k screens [#2404]
  • +
  • Make keyboard shortcuts more consistent [#2431]
  • +
  • Warn user if deleting referenced entries [#1744]
  • +
  • Allow toolbar to be hidden and repositioned [#1819, #2357]
  • +
  • Increase max allowed database timeout to 12 hours [#2173]
  • +
  • Password generator uses existing password length by default [#2318]
  • +
  • Improve alert message box button labels [#2376]
  • +
  • Show message when a database merge makes no changes [#2551]
  • +
  • Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790]
  • +
  • Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731]
  • +
diff --git a/share/translations/keepassx_ar.ts b/share/translations/keepassx_ar.ts index 37daf3d5f..ddffd7fa8 100644 --- a/share/translations/keepassx_ar.ts +++ b/share/translations/keepassx_ar.ts @@ -37,30 +37,6 @@ Copy to clipboard نسخ إلى الحافظة - - Revision: %1 - مراجعة: %1 - - - Distribution: %1 - مراجعة: %1 - - - Libraries: - المكتبات: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - نظام التشغيل: %1 -معمارية المعالج: %2 -النواة: %3 %4 - - - Enabled extensions: - الإضافات المُفعلة: - Project Maintainers: مشرفي المشروع: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. شكر خاص من فريق KeePassXC يذهب إلى debfx لإنشاء KeePassX الأصلي. - - Version %1 - - - - Build Type: %1 - - - - Auto-Type - الطباعة التلقائية - - - Browser Integration - تكامل المتصفح - - - SSH Agent - وكيل SSH - - - YubiKey - - - - TouchID - - - - None - - - - KeeShare (signed and unsigned sharing) - - - - KeeShare (only signed sharing) - - - - KeeShare (only unsigned sharing) - - AgentSettingsWidget @@ -655,14 +587,6 @@ Please select the correct database for saving credentials. Select custom proxy location حدد موقع خادم الوكيل المخصص - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - نحن متأسفون, ولكن KeePassXC-Browser غير مدعوم لإصدارات Snap في الوقت الراهن. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - - &Tor Browser @@ -684,6 +608,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -757,9 +693,19 @@ Moved %2 keys to custom data. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -921,6 +867,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1664,6 +1614,10 @@ Disable safe saves and try again? Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2101,6 +2055,22 @@ Disable safe saves and try again? Select import/export file + + Clear + مسح + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2572,14 +2542,6 @@ This may cause the affected plugins to malfunction. - - GroupModel - - %1 - Template for name without annotation - - - HostInstaller @@ -3172,6 +3134,22 @@ Line %2, column %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3816,10 +3794,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - - Passwords do not match. @@ -4853,6 +4827,10 @@ Available commands: Database password: + + Cannot create new group + + QtIOCompressor @@ -5126,8 +5104,7 @@ Available commands: - %1.%2 - Template for KeeShare key file + Signer: @@ -5145,10 +5122,6 @@ Available commands: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time @@ -5225,14 +5198,6 @@ Available commands: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5257,6 +5222,34 @@ Available commands: Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_ca.ts b/share/translations/keepassx_ca.ts index 4702696c6..b6041417e 100644 --- a/share/translations/keepassx_ca.ts +++ b/share/translations/keepassx_ca.ts @@ -7,7 +7,7 @@ About - Quant + Quant a Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a> @@ -23,7 +23,7 @@ <a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">See Contributions on GitHub</a> - <a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">Veure els contribuïdors a GitHub</a> + <a href="https://github.com/keepassxreboot/keepassxc/graphs/contributors">Vegeu les contribucions a GitHub</a> Debug Info @@ -37,30 +37,6 @@ Copy to clipboard Copia al porta-retalls - - Revision: %1 - Revisió: %1 - - - Distribution: %1 - Distribució: %1 - - - Libraries: - Llibreries - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Sistema operatiu: %1 -Arquitectura de la CPU: %2 -Nucli: %3 %4 - - - Enabled extensions: - Extensions habilitades: - Project Maintainers: Mantenidors del projecte: @@ -69,50 +45,6 @@ Nucli: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Agraïments de l'equip de KeePassXC a debfx per crear el KeePassX original. - - Version %1 - - - - Build Type: %1 - - - - Auto-Type - Compleció automàtica - - - Browser Integration - Integració amb el navegador - - - SSH Agent - Agent SSH - - - YubiKey - - - - TouchID - - - - None - - - - KeeShare (signed and unsigned sharing) - - - - KeeShare (only signed sharing) - - - - KeeShare (only unsigned sharing) - - AgentSettingsWidget @@ -145,19 +77,19 @@ Nucli: %3 %4 Icon only - + Només la icona Text only - + Només text Text beside icon - + Text enlloc d'icona Text under icon - + Text sota la icona Follow style @@ -337,7 +269,7 @@ Nucli: %3 %4 min - + min Forget TouchID after inactivity of @@ -655,14 +587,6 @@ Please select the correct database for saving credentials. Select custom proxy location - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - - &Tor Browser @@ -677,13 +601,25 @@ Please select the correct database for saving credentials. All Files - + Tots els fitxers Do not ask permission for HTTP &Basic Auth An extra HTTP Basic Auth setting + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -754,9 +690,19 @@ Moved %2 keys to custom data. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -875,20 +821,20 @@ This is necessary to maintain compatibility with the browser plugin. CsvParserModel %n column(s) - + %n columna(es)%n columna(es) %1, %2, %3 file info: bytes, rows, columns - + %1, %2, %3 %n byte(s) - + %n byte(s)%n byte(s) %n row(s) - + %n fila(es)%n fila(es) @@ -918,6 +864,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1005,7 +955,7 @@ Please consider generating a new key file. DatabaseSettingsDialog Advanced Settings - + Configuració avançada General @@ -1017,11 +967,11 @@ Please consider generating a new key file. Master Key - + Clau Mestra Encryption Settings - + Configuració del xifrat Browser Integration @@ -1048,7 +998,7 @@ Please consider generating a new key file. Stored keys - + Claus emmagatzemades Remove @@ -1056,7 +1006,7 @@ Please consider generating a new key file. Delete the selected key? - + Voleu eliminar la clau seleccionada? Do you really want to delete the selected key? @@ -1065,11 +1015,11 @@ This may prevent connection to the browser plugin. Key - + Clau Value - + Valor Enable Browser Integration to access these settings. @@ -1171,7 +1121,7 @@ This is necessary to maintain compatibility with the browser plugin. Memory Usage: - + Ús de memòria: Parallelism: @@ -1179,11 +1129,11 @@ This is necessary to maintain compatibility with the browser plugin. Decryption Time: - + Temps de desxifrat: ?? s - + ?? s Change @@ -1191,11 +1141,11 @@ This is necessary to maintain compatibility with the browser plugin. 100 ms - + 100 ms 5 s - + 5 s Higher values offer more protection, but opening the database will take longer. @@ -1211,11 +1161,11 @@ This is necessary to maintain compatibility with the browser plugin. KDBX 4.0 (recommended) - + KDBX 4.0 (recomanat) KDBX 3.1 - + KDBX 3.1 unchanged @@ -1263,7 +1213,7 @@ If you keep this number, your database may be too easy to crack! MiB Abbreviation for Mebibytes (KDF settings) - + MiB MiB thread(s) @@ -1273,12 +1223,12 @@ If you keep this number, your database may be too easy to crack! %1 ms milliseconds - + %1 ms%1 ms %1 s seconds - + %1 s%1 s @@ -1340,19 +1290,19 @@ If you keep this number, your database may be too easy to crack! Type - + Tipus Path - + Camí Last Signer - + Últim signant Certificates - + Certificats > @@ -1386,22 +1336,22 @@ Are you sure you want to continue without a password? Unknown error - + Error desconegut Failed to change master key - + No s'ha pogut canviar la clau mestra DatabaseSettingsWidgetMetaDataSimple Database Name: - + Nom de la base de dades: Description: - + Descripció: @@ -1461,7 +1411,7 @@ This is definitely a bug, please report it to the developers. New Database - + Base de dades nova %1 [New Database] @@ -1652,6 +1602,10 @@ Disable safe saves and try again? Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2089,6 +2043,22 @@ Disable safe saves and try again? Select import/export file + + Clear + Neteja + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2233,11 +2203,11 @@ This may cause the affected plugins to malfunction. Key - + Clau Value - + Valor @@ -2555,14 +2525,6 @@ This may cause the affected plugins to malfunction. - - GroupModel - - %1 - Template for name without annotation - - - HostInstaller @@ -3155,6 +3117,22 @@ Line %2, column %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3640,7 +3618,7 @@ Expect some bugs and minor issues, this version is not meant for production use. Advanced Settings - + Configuració avançada Simple Settings @@ -3651,7 +3629,7 @@ Expect some bugs and minor issues, this version is not meant for production use. NewDatabaseWizardPageEncryption Encryption Settings - + Opcions de xifrat Here you can adjust the database encryption settings. Don't worry, you can change them later in the database settings. @@ -3797,10 +3775,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - - Passwords do not match. @@ -4135,7 +4109,7 @@ Expect some bugs and minor issues, this version is not meant for production use. Unknown error - + Error desconegut Add a new entry to a database. @@ -4827,6 +4801,10 @@ Available commands: Database password: + + Cannot create new group + + QtIOCompressor @@ -5048,7 +5026,7 @@ Available commands: Path - + Camí Status @@ -5100,8 +5078,7 @@ Available commands: - %1.%2 - Template for KeeShare key file + Signer: @@ -5119,10 +5096,6 @@ Available commands: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time @@ -5199,14 +5172,6 @@ Available commands: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5231,6 +5196,34 @@ Available commands: Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_cs.ts b/share/translations/keepassx_cs.ts index 96d74d39f..60ea7985a 100644 --- a/share/translations/keepassx_cs.ts +++ b/share/translations/keepassx_cs.ts @@ -37,30 +37,6 @@ Copy to clipboard Zkopírovat do schránky - - Revision: %1 - Revize: %1 - - - Distribution: %1 - Distribuce: %1 - - - Libraries: - Knihovny: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Operační systém: %1 -Architektura procesoru: %2 -Jádro systému: %3 %4 - - - Enabled extensions: - Zapnutá rozšíření: - Project Maintainers: Správci projektu: @@ -69,52 +45,6 @@ Jádro systému: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Tým KeePassXC děkuje zvláště vývojáři debfx za vytvoření původního KeePassX. - - Version %1 - Verze %1 - - - - Build Type: %1 - Typ sestavení: %1 - - - - Auto-Type - Automatické vyplňování - - - Browser Integration - Napojení webového prohlížeče - - - SSH Agent - SSH agent - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Žádné - - - KeeShare (signed and unsigned sharing) - KeeShare (podepsané a nepodepsané sdílení) - - - KeeShare (only signed sharing) - KeeShare (pouze podepsané sdílení) - - - KeeShare (only unsigned sharing) - KeeShare (pouze nepodepsané sdílení) - AgentSettingsWidget @@ -658,14 +588,6 @@ Vyberte databázi, do které chcete přihlašovací údaje uložit.Select custom proxy location Vybrat uživatelem určené umístění zprostředkovávající aplikace - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Je nám líto, ale KeePassXC-Browser v tuto chvíli není ve snap vydáních podporován. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - Aby fungovalo napojení na prohlížeč, je třeba KeePassXC. <br /> Stáhnete ho pro %1 a %2. - &Tor Browser &Tor Browser @@ -687,6 +609,18 @@ Vyberte databázi, do které chcete přihlašovací údaje uložit.An extra HTTP Basic Auth setting Neptat se na oprávnění pro HTTP &Basic Auth + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -761,12 +695,20 @@ Přesunuto %2 klíčů do uživatelsky určených dat. KeePassXC: zjištěna nastavení starého napojení na webový prohlížeč - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Byla zjištěna nastavení starého napojení na prohlížeč. -Chcete povýšit nastavení na nejnovější standard? -Toto je nezbytné pro zachování kompatibility se zásuvným modulem pro prohlížeč. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -928,6 +870,10 @@ Toto je nezbytné pro zachování kompatibility se zásuvným modulem pro prohl File cannot be written as it is opened in read-only mode. Do souboru nelze zapisovat, protože je otevřen v režimu pouze pro čtení. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1682,6 +1628,10 @@ Vypnout bezpečné ukládání a zkusit to znovu? Database was not modified by merge operation. Databáze nebyla operací slučování upravena. + + Shared group... + + EditEntryWidget @@ -2119,6 +2069,22 @@ Vypnout bezpečné ukládání a zkusit to znovu? Select import/export file Vybrat importní/exportní soubor + + Clear + Vyčistit + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2594,14 +2560,6 @@ Dotčený zásuvný modul to může rozbít. [prázdné] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3196,6 +3154,22 @@ Line %2, column %3 Synchronize with Synchronizovat s + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3845,10 +3819,6 @@ Očekávejte chyby a drobné problémy, tato verze není určena pro produkční <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>Heslo je hlavní metodou zabezpečení databáze.</p><p>Dobrá hesla jsou dlouhá a nepoužívaná stejná na více místech. KeePassXC ho pro vás může vytvořit.</p> - - Password cannot be empty. - Heslo nemůže zůstat nevyplněné. - Passwords do not match. Zadání hesla se neshodují. @@ -4884,6 +4854,10 @@ Příkazy k dispozici: Database password: Heslo databáze: + + Cannot create new group + + QtIOCompressor @@ -5157,9 +5131,8 @@ Příkazy k dispozici: Exportovaný certifikát se liší od toho, který je používán. Chcete exportovat stávající certifikát? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5176,10 +5149,6 @@ Příkazy k dispozici: Import from container with certificate Importovat z kontejneru s certifikátem - - Do you want to trust %1 with the fingerprint of %2 from %3 - Chcete věřit %1 s otiskem %2 z %3 - Not this time Tentokrát ne @@ -5256,14 +5225,6 @@ Příkazy k dispozici: Could not write export container (%1) Nedaří se zapsat exportní kontejner (%1) - - Could not embed signature (%1) - Nedaří se zapouzdřit podpis (%1) - - - Could not embed database (%1) - Nedaří se zapouzdřit databázi (%1) - Overwriting unsigned share container is not supported - export prevented Přepsání nepodepsaného kontejneru sdílení není podporováno – exportu zabráněno @@ -5288,6 +5249,34 @@ Příkazy k dispozici: Export to %1 Exportovat do %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + Věříte %1 s otiskem %2 od %3? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_da.ts b/share/translations/keepassx_da.ts index af8604cca..558cfbd6f 100644 --- a/share/translations/keepassx_da.ts +++ b/share/translations/keepassx_da.ts @@ -37,30 +37,6 @@ Copy to clipboard Kopier til udklipsholder - - Revision: %1 - Revision: %1 - - - Distribution: %1 - Distribution: %1 - - - Libraries: - Biblioteker: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Operativsystem: %1 -CPU-arkitektur: %2 -Kerne: %3 %4 - - - Enabled extensions: - Aktiverede udvidelser: - Project Maintainers: Projektet vedligeholdes af: @@ -69,50 +45,6 @@ Kerne: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Særlig tak fra KeePassXC holdet går til debfx for at udvikle den oprindelige KeePassX. - - Version %1 - - - - Build Type: %1 - - - - Auto-Type - Auto-Indsæt - - - Browser Integration - Browser-integration - - - SSH Agent - SSH Agent - - - YubiKey - - - - TouchID - - - - None - - - - KeeShare (signed and unsigned sharing) - - - - KeeShare (only signed sharing) - - - - KeeShare (only unsigned sharing) - - AgentSettingsWidget @@ -655,14 +587,6 @@ Please select the correct database for saving credentials. Select custom proxy location Vælg en brugerdefineret proxy lokation - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - KeePassXC-Browser er desværre ikke understøttet for Snap udgivelser endnu. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - - &Tor Browser @@ -684,6 +608,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -757,9 +693,19 @@ Moved %2 keys to custom data. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -921,6 +867,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1662,6 +1612,10 @@ Så sikre gem fra og prøv igen? Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2099,6 +2053,22 @@ Så sikre gem fra og prøv igen? Select import/export file + + Clear + Ryd + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2570,14 +2540,6 @@ Dette kan få det påvirkede plugin til at svigte. - - GroupModel - - %1 - Template for name without annotation - - - HostInstaller @@ -3170,6 +3132,22 @@ Line %2, column %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3814,10 +3792,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - - Passwords do not match. @@ -4850,6 +4824,10 @@ Tilgængelige kommandoer: Database password: + + Cannot create new group + + QtIOCompressor @@ -5123,8 +5101,7 @@ Tilgængelige kommandoer: - %1.%2 - Template for KeeShare key file + Signer: @@ -5142,10 +5119,6 @@ Tilgængelige kommandoer: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time @@ -5222,14 +5195,6 @@ Tilgængelige kommandoer: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5254,6 +5219,34 @@ Tilgængelige kommandoer: Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_de.ts b/share/translations/keepassx_de.ts index 2e4bef905..89b9f0b6e 100644 --- a/share/translations/keepassx_de.ts +++ b/share/translations/keepassx_de.ts @@ -11,7 +11,7 @@ Report bugs at: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a> - Melden Sie Bugs auf: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a> + Melden Sie Fehler auf: <a href="https://github.com/keepassxreboot/keepassxc/issues" style="text-decoration: underline;">https://github.com</a> KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3. @@ -31,36 +31,12 @@ Include the following information whenever you report a bug: - Geben Sie folgende Informationen an, wenn Sie einen Bug melden: + Geben Sie folgende Informationen an, wenn Sie einen Fehler melden: Copy to clipboard In die Zwischenablage kopieren - - Revision: %1 - Revision: %1 - - - Distribution: %1 - Distribution: %1 - - - Libraries: - Bibliotheken: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Betriebssystem: %1 -CPU-Architektur: %2 -Kernel: %3 %4 - - - Enabled extensions: - Aktivierte Erweiterungen: - Project Maintainers: Projekt-Maintainer: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Das KeePassXC-Team möchte ganz besonders debfx danken für die Entwicklung des ursprünglichen KeePassX. - - Version %1 - Version %1 - - - Build Type: %1 - Build Typ: %1 - - - Auto-Type - Auto-Type - - - Browser Integration - Browser-Integration - - - SSH Agent - SSH-Agent - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Keine - - - KeeShare (signed and unsigned sharing) - KeeShare (bestätigtes und unbestätigtes Teilen) - - - KeeShare (only signed sharing) - KeeShare (nur bestätigtes Teilen) - - - KeeShare (only unsigned sharing) - KeeShare (nur unbestätigtes Teilen) - AgentSettingsWidget @@ -180,7 +112,7 @@ Kernel: %3 %4 Remember last databases - Letzte Datenbank merken + Letzte Datenbanken merken Remember last key files and security dongles @@ -389,7 +321,7 @@ Kernel: %3 %4 Use DuckDuckGo as fallback for downloading website icons - Verwende DuckDuckGo als Ersatz für das Herunterladen von Website-Symbole + DuckDuckGo als Ersatz für das Herunterladen von Website-Symbolen verwenden @@ -656,14 +588,6 @@ Bitte wähle die richtige Datenbank zum speichern der Anmeldedaten.Select custom proxy location Benutzerdefinierten Proxy-Pfad auswählen - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Sorry, aber KeePassXC-Browser wird derzeit für Snap-Releases nicht unterstützt. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser wird für die Funktion der Browserintegration benötig. <br />Lade es für %1 und %2 herunter. - &Tor Browser &Tor Browser @@ -685,6 +609,18 @@ Bitte wähle die richtige Datenbank zum speichern der Anmeldedaten.An extra HTTP Basic Auth setting Nicht nach HTTP Basic Auth fragen + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -759,12 +695,20 @@ Moved %2 keys to custom data. KeePassXC: native Browser-Integrations-Einstellungen gefunden - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Einstellungen zur veralteten Browserintegration gefunden -Sollen diese Einstellungen zur aktuellen Version migriert werden? -Das ist nötig um das Browser-Plugin kompatibel zu halten. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -925,6 +869,10 @@ Das ist nötig um das Browser-Plugin kompatibel zu halten. File cannot be written as it is opened in read-only mode. Datei ist schreibgeschützt + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1145,7 +1093,7 @@ Zugriffserlaubnisse zu allen Einträgen werden gelöscht. The active database does not contain an entry with permissions. - Diese Datenbank enthält keinen Eintrag mit Zugangsdaten. + Die aktive Datenbank enthält keinen Eintrag mit Zugangsdaten. Move KeePassHTTP attributes to custom data @@ -1162,7 +1110,7 @@ Das ist nötig um das Browser-Plugin kompatibel zu halten. DatabaseSettingsWidgetEncryption Encryption Algorithm: - Verschlüsselungs-Algorithmus. + Verschlüsselungs-Algorithmus: AES: 256 Bit (default) @@ -1174,7 +1122,7 @@ Das ist nötig um das Browser-Plugin kompatibel zu halten. Key Derivation Function: - Schlüssel-Ableitungsfunktion + Schlüssel-Ableitungsfunktion: Transform rounds: @@ -1218,7 +1166,7 @@ Das ist nötig um das Browser-Plugin kompatibel zu halten. Database format: - Datenbanformat: + Datenbankformat: This is only important if you need to use your database with other programs. @@ -1479,7 +1427,7 @@ Das ist definitiv ein Fehler, teile das bitte den Entwicklern mit. Select CSV file - Ausgewählte CSV-Datei + CSV-Datei auswählen New Database @@ -1680,6 +1628,10 @@ Sicheres Speichern deaktivieren und erneut versuchen? Database was not modified by merge operation. Datenbank wurde nicht zusammengeführt + + Shared group... + + EditEntryWidget @@ -1729,7 +1681,7 @@ Sicheres Speichern deaktivieren und erneut versuchen? Failed to open private key - Privatschlüsel konnte nicht geöffnet werden + Privatschlüssel konnte nicht geöffnet werden Entry history @@ -2117,6 +2069,22 @@ Sicheres Speichern deaktivieren und erneut versuchen? Select import/export file Wähle Datei für Import/Export + + Clear + Löschen + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2197,7 +2165,7 @@ Sicheres Speichern deaktivieren und erneut versuchen? Hint: You can enable DuckDuckGo as a fallback under Tools>Settings>Security - Tipp: Sie können DuckDuckgo als Ausweichelösung unter Werkzeuge>Einstellungen>Sicherheit festlegen + Tipp: Sie können DuckDuckGo als Ersatz unter Werkzeuge>Einstellungen>Sicherheit aktivieren Select Image(s) @@ -2221,7 +2189,7 @@ Sicheres Speichern deaktivieren und erneut versuchen? This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it? - Dieses Symbol wird von %n Eintrag/Einträgen benutzt und wird mit dem Standardsymbol ersetzt. Bist du sicher, dass es gelöscht werden soll?Dieses Symbol wird von %n Eintrag/Einträgen benutzt und wird mit dem Standardsymbol ersetzt. Bist du sicher, dass es gelöscht werden soll? + Dieses Symbol wird von %n Eintrag benutzt und wird mit dem Standardsymbol ersetzt. Sind Sie sicher, dass es gelöscht werden soll?Dieses Symbol wird von %n Einträgen benutzt und wird mit dem Standardsymbol ersetzt. Sind Sie sicher, dass es gelöscht werden soll? @@ -2315,7 +2283,7 @@ Dies kann dazu führen, dass die jeweiligen Plugins nicht mehr richtig funktioni Are you sure you want to remove %n attachment(s)? - Sind Sie sicher, dass sie einen Anhang löschen möchten?Sind Sie sicher, dass sie %n Anhänge löschen möchten? + Sind Sie sicher, dass Sie einen Anhang löschen möchten?Sind Sie sicher, dass Sie %n Anhänge löschen möchten? Save attachments @@ -2350,7 +2318,7 @@ Dies kann dazu führen, dass die jeweiligen Plugins nicht mehr richtig funktioni Unable to open attachments: %1 - Öffnen des Anhangs nicht möglich: + Öffnen der Anhänge nicht möglich: %1 @@ -2590,14 +2558,6 @@ Dies kann dazu führen, dass die jeweiligen Plugins nicht mehr richtig funktioni [leer] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3192,6 +3152,22 @@ Zeile %2, Spalte %3 Synchronize with Synchronisieren mit + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3532,7 +3508,7 @@ Wir empfehlen dir die Verwendung des auf unserer Downloadseite verfügbaren AppI &Database settings... - &Datenbankeinstellungen + &Datenbankeinstellungen... Copy &password @@ -3617,7 +3593,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins Adding backup for older target %1 [%2] - Backup für alten Eintrag %1 hinzugefügt [%2] + Backup für älteres Ziel %1 hinzugefügt [%2] Adding backup for older source %1 [%2] @@ -3744,7 +3720,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins Key file magic header id invalid - Magic-Header-ID der Schlüsseldate ungültig + Magic-Header-ID der Schlüsseldatei ungültig Found zero keys @@ -3756,7 +3732,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins Corrupted key file, reading private key failed - Korrupte Schlüsseldatei, lesen des Privatschlüssels fehlgeschlagen + Korrupte Schlüsseldatei, Lesen des Privatschlüssels fehlgeschlagen No private key payload to decrypt @@ -3839,11 +3815,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - 1 - - - Password cannot be empty. - Passwort kann nicht leer sein. + <p>Ein Passwort ist die primäre Methode, Ihre Datenbank abzusichern.</p><p>Gute Passwörter sind lang und einzigartig. KeepassXC kann eins für Sie generieren.</p> Passwords do not match. @@ -3943,7 +3915,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins Password Quality: %1 - Passwort Qualität: %1 + Passwort-Qualität: %1 Poor @@ -4215,7 +4187,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins Prompt for the entry's password. - Nach dem Passwort des Eintrags fragen + Nach dem Passwort des Eintrags fragen. Generate a password for the entry. @@ -4260,11 +4232,11 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins Path of the entry to edit. - Pfad des zu bearbeitenden Eintrags + Pfad des zu bearbeitenden Eintrags. Estimate the entropy of a password. - Entropy des Passworts abschätzen + Entropie des Passworts abschätzen. Password for which to estimate the entropy. @@ -4445,7 +4417,7 @@ Verfügbare Kommandos: Invalid value for password length %1. - Passwortlänge ungültig %1 + Ungültiger Wert für Passwortlänge %1. Could not create entry with path %1. @@ -4506,7 +4478,7 @@ Verfügbare Kommandos: Invalid value for password length: %1 - Passwortlänge ungültig %1 + Ungültiger Wert für Passwortlänge: %1 Could not find entry with path %1. @@ -4724,7 +4696,7 @@ Verfügbare Kommandos: Show the entry's current TOTP. - Zeige TOTP + Aktuelles TOTP des Eintrags zeigen. ERROR: unknown attribute %1. @@ -4802,7 +4774,7 @@ Verfügbare Kommandos: No key is set. Aborting database creation. - Kein Schlüssel gewählt. Datenbankerstellung wird abgebrochen + Kein Schlüssel gewählt. Datenbankerstellung wird abgebrochen. Failed to save the database: %1. @@ -4814,7 +4786,7 @@ Verfügbare Kommandos: Insert password to encrypt database (Press enter to leave blank): - Passwort zur Datenbankverschlüsselung eingeben (Enter drücken um es leer zu lassen) + Passwort zur Datenbankverschlüsselung eingeben (Enter drücken, um es leer zu lassen): Creating KeyFile %1 failed: %2 @@ -4880,6 +4852,10 @@ Verfügbare Kommandos: Database password: Datenbankpasswort: + + Cannot create new group + + QtIOCompressor @@ -5153,9 +5129,8 @@ Verfügbare Kommandos: Das exportierte Zertifikat ist nicht das selbe wie das benutzte. Soll das aktuelle Zertifikat exportiert werden? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5172,10 +5147,6 @@ Verfügbare Kommandos: Import from container with certificate Von Container mit Zertifikat importieren - - Do you want to trust %1 with the fingerprint of %2 from %3 - Soll %1 mit dem Fingerabdruck %2 von %3 vertraut werden? - Not this time Nicht diesmal @@ -5252,14 +5223,6 @@ Verfügbare Kommandos: Could not write export container (%1) Export-Container (%1) kann nicht gespeichert werden - - Could not embed signature (%1) - Unterschrift kann nicht eingebettet werden (%1) - - - Could not embed database (%1) - Datenbank kann nicht eingebettet werden (%1) - Overwriting unsigned share container is not supported - export prevented Überschreiben von nicht unterzeichneten geteilten Containern nicht unterstützt. Export verhindert. @@ -5284,6 +5247,34 @@ Verfügbare Kommandos: Export to %1 Export nach %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + Möchten Sie %1 mit dem Fingerabdruck %2 von %3 vertrauen? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog @@ -5412,7 +5403,7 @@ Verfügbare Kommandos: KeePassXC %1 is now available — you have %2. - Version %1 ist verfügbar, aktuell: %2. + KeepassXC %1 ist jetzt verfügbar — Sie haben %2. Download it at keepassxc.org diff --git a/share/translations/keepassx_en.ts b/share/translations/keepassx_en.ts index 430d3b7ea..1f6b00076 100644 --- a/share/translations/keepassx_en.ts +++ b/share/translations/keepassx_en.ts @@ -590,14 +590,6 @@ Please select the correct database for saving credentials. Select custom proxy location Select custom proxy location - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - &Tor Browser &Tor Browser @@ -619,6 +611,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting Do not ask permission for HTTP &Basic Auth + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -696,12 +700,20 @@ Moved %2 keys to custom data. KeePassXC: Legacy browser integration settings detected - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -875,6 +887,10 @@ This is necessary to maintain compatibility with the browser plugin.File cannot be written as it is opened in read-only mode. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1663,6 +1679,10 @@ Disable safe saves and try again? Database was not modified by merge operation. Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2109,6 +2129,22 @@ Disable safe saves and try again? Select import/export file Select import/export file + + Clear + Clear + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2600,14 +2636,6 @@ This may cause the affected plugins to malfunction. [empty] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3202,6 +3230,22 @@ Line %2, column %3 Synchronize with Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3852,10 +3896,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - Password cannot be empty. - Passwords do not match. Passwords do not match. @@ -4647,6 +4687,26 @@ Available commands: Failed to load key file %1: %2 Failed to load key file %1: %2 + + File %1 does not exist. + File %1 does not exist. + + + Unable to open file %1. + Unable to open file %1. + + + Error while reading the database: +%1 + Error while reading the database: +%1 + + + Error while parsing the database: +%1 + Error while parsing the database: +%1 + Length of the generated password Length of the generated password @@ -4876,7 +4936,7 @@ Available commands: Database password: - Unable to extract database %1 + Cannot create new group @@ -5152,9 +5212,8 @@ Available commands: The exported certificate is not the same as the one in use. Do you want to export the current certificate? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5247,14 +5306,6 @@ Available commands: Could not write export container (%1) Could not write export container (%1) - - Could not embed signature (%1) - Could not embed signature (%1) - - - Could not embed database (%1) - Could not embed database (%1) - Overwriting unsigned share container is not supported - export prevented Overwriting unsigned share container is not supported - export prevented @@ -5283,6 +5334,30 @@ Available commands: Do you want to trust %1 with the fingerprint of %2 from %3? Do you want to trust %1 with the fingerprint of %2 from %3? {1 ?} {2 ?} + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_en_GB.ts b/share/translations/keepassx_en_GB.ts index eea217d96..1918b2855 100644 --- a/share/translations/keepassx_en_GB.ts +++ b/share/translations/keepassx_en_GB.ts @@ -37,30 +37,6 @@ Copy to clipboard Copy to clipboard - - Revision: %1 - Revision: %1 - - - Distribution: %1 - Distribution: %1 - - - Libraries: - Libraries: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - - - Enabled extensions: - Enabled extensions: - Project Maintainers: Project Maintainers: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. - - Version %1 - Version %1 - - - Build Type: %1 - Build Type: %1 - - - Auto-Type - Auto-Type - - - Browser Integration - Browser Integration - - - SSH Agent - SSH Agent - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - None - - - KeeShare (signed and unsigned sharing) - KeeShare (signed and unsigned sharing) - - - KeeShare (only signed sharing) - KeeShare (only signed sharing) - - - KeeShare (only unsigned sharing) - KeeShare (only unsigned sharing) - AgentSettingsWidget @@ -497,7 +429,7 @@ Please select whether you want to allow access. BrowserEntrySaveDialog KeePassXC-Browser Save Entry - + KeePassXC-Browser Save Entry Ok @@ -656,21 +588,13 @@ Please select the correct database for saving credentials. Select custom proxy location Select custom proxy location - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - &Tor Browser &Tor Browser <b>Warning</b>, the keepassxc-proxy application was not found!<br />Please check the KeePassXC installation directory or confirm the custom path in advanced options.<br />Browser integration WILL NOT WORK without the proxy application.<br />Expected Path: - + <b>Warning</b>, the keepassxc-proxy application was not found!<br />Please check the KeePassXC installation directory or confirm the custom path in advanced options.<br />Browser integration WILL NOT WORK without the proxy application.<br />Expected Path: Executable Files @@ -685,6 +609,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting Do not ask permission for HTTP &Basic Auth + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -758,12 +694,20 @@ Moved %2 keys to custom data. KeePassXC: Legacy browser integration settings detected - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -825,7 +769,7 @@ This is necessary to maintain compatibility with the browser plugin. Number of headers line to discard - + Number of headers line to discard Consider '\' an escape character @@ -869,7 +813,7 @@ This is necessary to maintain compatibility with the browser plugin. [%n more message(s) skipped] - + [%n more message skipped][%n more messages skipped] CSV import: writer has errors: @@ -882,7 +826,7 @@ This is necessary to maintain compatibility with the browser plugin.CsvParserModel %n column(s) - + %n column%n columns %1, %2, %3 @@ -891,11 +835,11 @@ This is necessary to maintain compatibility with the browser plugin. %n byte(s) - + %n byte%n bytes %n row(s) - + %n row%n rows @@ -925,6 +869,10 @@ This is necessary to maintain compatibility with the browser plugin.File cannot be written as it is opened in read-only mode. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -968,7 +916,10 @@ This is necessary to maintain compatibility with the browser plugin. - + You are using a legacy key file format which may become +unsupported in the future. + +Please consider generating a new key file. Don't show this warning again @@ -1041,7 +992,7 @@ Please consider generating a new key file. DatabaseSettingsWidgetBrowser KeePassXC-Browser settings - + KeePassXC-Browser settings &Disconnect all browsers @@ -1070,7 +1021,8 @@ Please consider generating a new key file. Do you really want to delete the selected key? This may prevent connection to the browser plugin. - + Do you really want to delete the selected key? +This may prevent connection to the browser plugin. Key @@ -1091,7 +1043,8 @@ This may prevent connection to the browser plugin. Do you really want to disconnect all browsers? This may prevent connection to the browser plugin. - + Do you really want to disconnect all browsers? +This may prevent connection to the browser plugin. KeePassXC: No keys found @@ -1116,7 +1069,8 @@ This may prevent connection to the browser plugin. Do you really want forget all site-specific settings on every entry? Permissions to access entries will be revoked. - + Do you really want forget all site-specific settings on every entry? +Permissions to access entries will be revoked. Removing stored permissions… @@ -1149,7 +1103,8 @@ Permissions to access entries will be revoked. Do you really want to move all legacy browser integration data to the latest standard? This is necessary to maintain compatibility with the browser plugin. - + Do you really want to move all legacy browser integration data to the latest standard? +This is necessary to maintain compatibility with the browser plugin. @@ -1160,51 +1115,51 @@ This is necessary to maintain compatibility with the browser plugin. AES: 256 Bit (default) - + AES: 256 Bit (default) Twofish: 256 Bit - + Twofish: 256 Bit Key Derivation Function: - + Key Derivation Function: Transform rounds: - + Transform rounds: Benchmark 1-second delay - + Benchmark 1-second delay Memory Usage: - + Memory Usage: Parallelism: - + Parallelism: Decryption Time: - + Decryption Time: ?? s - + ?? s Change - + Change 100 ms - + 100 ms 5 s - + 5 s Higher values offer more protection, but opening the database will take longer. @@ -1212,7 +1167,7 @@ This is necessary to maintain compatibility with the browser plugin. Database format: - + Database format: This is only important if you need to use your database with other programs. @@ -1267,7 +1222,7 @@ If you keep this number, your database may be too easy to crack! KDF unchanged - + KDF unchanged Failed to transform key with new KDF parameters; KDF unchanged. @@ -1281,24 +1236,24 @@ If you keep this number, your database may be too easy to crack! thread(s) Threads for parallel execution (KDF settings) - + thread threads %1 ms milliseconds - + %1 ms%1 ms %1 s seconds - + %1 s%1 s DatabaseSettingsWidgetGeneral Database Meta Data - + Database Meta Data Database name: @@ -1314,19 +1269,19 @@ If you keep this number, your database may be too easy to crack! History Settings - + History Settings Max. history items: - + Max. history items: Max. history size: - + Max. history size: MiB - + MiB Use recycle bin @@ -1345,11 +1300,11 @@ If you keep this number, your database may be too easy to crack! DatabaseSettingsWidgetKeeShare Sharing - + Sharing Breadcrumb - + Breadcrumb Type @@ -1361,23 +1316,23 @@ If you keep this number, your database may be too easy to crack! Last Signer - + Last Signer Certificates - + Certificates > Breadcrumb separator - + > DatabaseSettingsWidgetMasterKey Add additional protection... - + Add additional protection... No encryption key added @@ -1395,7 +1350,9 @@ If you keep this number, your database may be too easy to crack! WARNING! You have not set a password. Using a database without a password is strongly discouraged! Are you sure you want to continue without a password? - + WARNING! You have not set a password. Using a database without a password is strongly discouraged! + +Are you sure you want to continue without a password? Unknown error @@ -1462,7 +1419,8 @@ Are you sure you want to continue without a password? The created database has no key or KDF, refusing to save it. This is definitely a bug, please report it to the developers. - + The created database has no key or KDF, refusing to save it. +This is definitely a bug, please report it to the developers. The database file does not exist or is not accessible. @@ -1479,17 +1437,17 @@ This is definitely a bug, please report it to the developers. %1 [New Database] Database tab name modifier - + %1 [New Database] %1 [Locked] Database tab name modifier - + %1 [Locked] %1 [Read-only] Database tab name modifier - + %1 [Read-only] @@ -1516,7 +1474,7 @@ This is definitely a bug, please report it to the developers. Do you really want to execute the following command?<br><br>%1<br> - + Do you really want to execute the following command?<br><br>%1<br> Remember my choice @@ -1586,7 +1544,7 @@ Do you want to merge your changes? Lock Database? - + Lock Database? You are editing an entry. Discard changes and lock anyway? @@ -1627,7 +1585,8 @@ Disable safe saves and try again? Writing the database failed. %1 - + Writing the database failed. +%1 Passwords @@ -1635,7 +1594,7 @@ Disable safe saves and try again? Save database as - + Save database as KeePass 2 Database @@ -1643,7 +1602,7 @@ Disable safe saves and try again? Replace references to entry? - + Replace references to entry? Entry "%1" has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway? @@ -1669,12 +1628,16 @@ Disable safe saves and try again? Database was not modified by merge operation. Database was not modified by merge operation. + + Shared group... + + EditEntryWidget Entry - + Entry Advanced @@ -1694,7 +1657,7 @@ Disable safe saves and try again? History - + History SSH Agent @@ -1702,11 +1665,11 @@ Disable safe saves and try again? n/a - + n/a (encrypted) - + (encrypted) Select private key @@ -1774,19 +1737,19 @@ Disable safe saves and try again? New attribute %1 - + New attribute %1 [PROTECTED] Press reveal to view or edit - + [PROTECTED] Press reveal to view or edit %n year(s) - + %n year%n years Confirm Removal - + Confirm Removal @@ -1805,15 +1768,15 @@ Disable safe saves and try again? Edit Name - + Edit Name Protect - + Protect Reveal - + Reveal Attachments @@ -1832,35 +1795,35 @@ Disable safe saves and try again? EditEntryWidgetAutoType Enable Auto-Type for this entry - + Enable Auto-Type for this entry Inherit default Auto-Type sequence from the &group - + Inherit default Auto-Type sequence from the &group &Use custom Auto-Type sequence: - + &Use custom Auto-Type sequence: Window Associations - + Window Associations + - + + - - + - Window title: - + Window title: Use a specific sequence for this association: - + Use a specific sequence for this association: @@ -1886,7 +1849,7 @@ Disable safe saves and try again? EditEntryWidgetMain URL: - + URL: Password: @@ -1894,11 +1857,11 @@ Disable safe saves and try again? Repeat: - + Repeat: Title: - + Title: Notes @@ -1906,7 +1869,7 @@ Disable safe saves and try again? Presets - + Presets Toggle the checkbox to reveal the notes section. @@ -1914,7 +1877,7 @@ Disable safe saves and try again? Username: - + Username: Expires @@ -1925,19 +1888,19 @@ Disable safe saves and try again? EditEntryWidgetSSHAgent Form - + Form Remove key from agent after - + Remove key from agent after seconds - + seconds Fingerprint - + Fingerprint Remove key from agent when database is closed/locked @@ -1953,15 +1916,15 @@ Disable safe saves and try again? Comment - + Comment Decrypt - + Decrypt n/a - + n/a Copy to clipboard @@ -2029,26 +1992,26 @@ Disable safe saves and try again? Inherit from parent group (%1) - + Inherit from parent group (%1) EditGroupWidgetKeeShare Form - + Form Type: - + Type: Path: - + Path: ... - + ... Password: @@ -2056,54 +2019,70 @@ Disable safe saves and try again? Inactive - + Inactive Import from path - + Import from path Export to path - + Export to path Synchronize with path - + Synchronize with path Your KeePassXC version does not support sharing your container type. Please use %1. - + Your KeePassXC version does not support sharing your container type. Please use %1. Database sharing is disabled - + Database sharing is disabled Database export is disabled - + Database export is disabled Database import is disabled - + Database import is disabled KeeShare unsigned container - + KeeShare unsigned container KeeShare signed container - + KeeShare signed container Select import source - + Select import source Select export target - + Select export target Select import/export file + Select import/export file + + + Clear + Clear + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. @@ -2178,62 +2157,62 @@ Disable safe saves and try again? Confirm Delete - + Confirm Delete Custom icon successfully downloaded - + Custom icon successfully downloaded Hint: You can enable DuckDuckGo as a fallback under Tools>Settings>Security - + Hint: You can enable DuckDuckGo as a fallback under Tools>Settings>Security Select Image(s) - + Select Image(s) Successfully loaded %1 of %n icon(s) - + Successfully loaded %1 of %n iconSuccessfully loaded %1 of %n icons No icons were loaded - + No icons were loaded %n icon(s) already exist in the database - + %n icon already exist in the database%n icons already exist in the database The following icon(s) failed: - + The following icon failed:The following icons failed: This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it? - + This icon is used by %n entry, and will be replaced by the default icon. Are you sure you want to delete it?This icon is used by %n entries, and will be replaced by the default icon. Are you sure you want to delete it? EditWidgetProperties Created: - + Created: Modified: - + Modified: Accessed: - + Accessed: Uuid: - + Uuid: Plugin Data - + Plugin Data Remove @@ -2262,7 +2241,7 @@ This may cause the affected plugins to malfunction. Entry %1 - Clone - + %1 - Clone @@ -2273,14 +2252,14 @@ This may cause the affected plugins to malfunction. Size - + Size EntryAttachmentsWidget Form - + Form Add @@ -2344,12 +2323,14 @@ This may cause the affected plugins to malfunction. Confirm remove - + Confirm remove Unable to open file(s): %1 - + Unable to open file: +%1Unable to open files: +%1 @@ -2383,7 +2364,7 @@ This may cause the affected plugins to malfunction. Ref: Reference abbreviation - + Ref: Group @@ -2419,15 +2400,15 @@ This may cause the affected plugins to malfunction. Created - + Created Modified - + Modified Accessed - + Accessed Attachments @@ -2435,18 +2416,18 @@ This may cause the affected plugins to malfunction. Yes - + Yes TOTP - + TOTP EntryPreviewWidget Generate TOTP Token - + Generate TOTP Token Close @@ -2466,7 +2447,7 @@ This may cause the affected plugins to malfunction. Expiration - + Expiration URL @@ -2474,7 +2455,7 @@ This may cause the affected plugins to malfunction. Attributes - + Attributes Attachments @@ -2486,7 +2467,7 @@ This may cause the affected plugins to malfunction. Autotype - + Autotype Window @@ -2498,7 +2479,7 @@ This may cause the affected plugins to malfunction. Searching - + Searching Search @@ -2514,39 +2495,39 @@ This may cause the affected plugins to malfunction. [PROTECTED] - + [PROTECTED] <b>%1</b>: %2 attributes line - + <b>%1</b>: %2 Enabled - + Enabled Disabled - + Disabled Share - + Share EntryView Customize View - + Customize View Hide Usernames - + Hide Usernames Hide Passwords - + Hide Passwords Fit to window @@ -2558,11 +2539,11 @@ This may cause the affected plugins to malfunction. Reset to defaults - + Reset to defaults Attachments (icon) - + Attachments (icon) @@ -2574,26 +2555,18 @@ This may cause the affected plugins to malfunction. [empty] group has no children - - - - - GroupModel - - %1 - Template for name without annotation - + [empty] HostInstaller KeePassXC: Cannot save file! - + KeePassXC: Cannot save file! Cannot save the native messaging script file. - + Cannot save the native messaging script file. @@ -2623,15 +2596,15 @@ This may cause the affected plugins to malfunction. missing database headers - + missing database headers Header doesn't match hash - + Header doesn't match hash Invalid header id size - + Invalid header id size Invalid header field length @@ -2657,7 +2630,7 @@ This may cause the affected plugins to malfunction. Kdbx4Reader missing database headers - + missing database headers Unable to calculate master key @@ -2665,11 +2638,11 @@ This may cause the affected plugins to malfunction. Invalid header checksum size - + Invalid header checksum size Header SHA256 mismatch - + Header SHA256 mismatch Wrong key or database file is corrupt. (HMAC mismatch) @@ -2681,7 +2654,7 @@ This may cause the affected plugins to malfunction. Invalid header id size - + Invalid header id size Invalid header field length @@ -2693,7 +2666,7 @@ This may cause the affected plugins to malfunction. Failed to open buffer for KDF parameters in header - + Failed to open buffer for KDF parameters in header Unsupported key derivation function (KDF) or invalid parameters @@ -2701,24 +2674,24 @@ This may cause the affected plugins to malfunction. Legacy header fields found in KDBX4 file. - + Legacy header fields found in KDBX4 file. Invalid inner header id size - + Invalid inner header id size Invalid inner header field length - + Invalid inner header field length Invalid inner header binary size - + Invalid inner header binary size Unsupported KeePass variant map version. Translation: variant map = data structure for storing meta data - + Unsupported KeePass variant map version. Invalid variant map entry name length @@ -2728,64 +2701,64 @@ This may cause the affected plugins to malfunction. Invalid variant map entry name data Translation: variant map = data structure for storing meta data - + Invalid variant map entry name data Invalid variant map entry value length Translation: variant map = data structure for storing meta data - + Invalid variant map entry value length Invalid variant map entry value data Translation comment: variant map = data structure for storing meta data - + Invalid variant map entry value data Invalid variant map Bool entry value length Translation: variant map = data structure for storing meta data - + Invalid variant map Bool entry value length Invalid variant map Int32 entry value length Translation: variant map = data structure for storing meta data - + Invalid variant map Int32 entry value length Invalid variant map UInt32 entry value length Translation: variant map = data structure for storing meta data - + Invalid variant map UInt32 entry value length Invalid variant map Int64 entry value length Translation: variant map = data structure for storing meta data - + Invalid variant map Int64 entry value length Invalid variant map UInt64 entry value length Translation: variant map = data structure for storing meta data - + Invalid variant map UInt64 entry value length Invalid variant map entry type Translation: variant map = data structure for storing meta data - + Invalid variant map entry type Invalid variant map field type size Translation: variant map = data structure for storing meta data - + Invalid variant map field type size Kdbx4Writer Invalid symmetric cipher algorithm. - + Invalid symmetric cipher algorithm. Invalid symmetric cipher IV size. IV = Initialization Vector for symmetric cipher - + Invalid symmetric cipher IV size. Unable to calculate master key @@ -2794,50 +2767,50 @@ This may cause the affected plugins to malfunction. Failed to serialize KDF parameters variant map Translation comment: variant map = data structure for storing meta data - + Failed to serialize KDF parameters variant map KdbxReader Unsupported cipher - + Unsupported cipher Invalid compression flags length - + Invalid compression flags length Unsupported compression algorithm - + Unsupported compression algorithm Invalid master seed size - + Invalid master seed size Invalid transform seed size - + Invalid transform seed size Invalid transform rounds size - + Invalid transform rounds size Invalid start bytes size - + Invalid start bytes size Invalid random stream id size - + Invalid random stream id size Invalid inner random stream cipher - + Invalid inner random stream cipher Not a KeePass database. - + Not a KeePass database. The selected file is an old KeePass 1 database (.kdb). @@ -2855,15 +2828,15 @@ This is a one-way migration. You won't be able to open the imported databas Invalid cipher uuid length: %1 (length=%2) - + Invalid cipher uuid length: %1 (length=%2) Unable to parse UUID: %1 - + Unable to parse UUID: %1 Failed to read database file. - + Failed to read database file. @@ -2878,27 +2851,27 @@ This is a one-way migration. You won't be able to open the imported databas Missing icon uuid or data - + Missing icon uuid or data Missing custom data key or value - + Missing custom data key or value Multiple group elements - + Multiple group elements Null group uuid - + Null group uuid Invalid group icon number - + Invalid group icon number Invalid EnableAutoType value - + Invalid EnableAutoType value Invalid EnableSearching value @@ -3011,7 +2984,7 @@ Line %2, column %3 Not a KeePass database. - + Not a KeePass database. Unsupported encryption algorithm. @@ -3040,7 +3013,7 @@ Line %2, column %3 Invalid transform seed size - + Invalid transform seed size Invalid number of transform rounds @@ -3177,6 +3150,22 @@ Line %2, column %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3819,10 +3808,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - - Passwords do not match. @@ -4376,7 +4361,7 @@ Available commands: Created - + Created Browser Integration @@ -4849,6 +4834,10 @@ Available commands: Database password: + + Cannot create new group + + QtIOCompressor @@ -5078,7 +5067,7 @@ Available commands: Fingerprint - + Fingerprint Certificate @@ -5122,8 +5111,7 @@ Available commands: - %1.%2 - Template for KeeShare key file + Signer: @@ -5141,10 +5129,6 @@ Available commands: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time @@ -5221,14 +5205,6 @@ Available commands: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5253,6 +5229,34 @@ Available commands: Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_en_US.ts b/share/translations/keepassx_en_US.ts index 2cfb15456..f443aefe6 100644 --- a/share/translations/keepassx_en_US.ts +++ b/share/translations/keepassx_en_US.ts @@ -1,4 +1,4 @@ - + AboutDialog @@ -37,30 +37,6 @@ Copy to clipboard Copy to clipboard - - Revision: %1 - Revision: %1 - - - Distribution: %1 - Distribution: %1 - - - Libraries: - Libraries: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - - - Enabled extensions: - Enabled extensions: - Project Maintainers: Project Maintainers: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. - - Version %1 - Version %1 - - - Build Type: %1 - Build Type: %1 - - - Auto-Type - Auto-Type - - - Browser Integration - Browser Integration - - - SSH Agent - SSH Agent - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - None - - - KeeShare (signed and unsigned sharing) - KeeShare (signed and unsigned sharing) - - - KeeShare (only signed sharing) - KeeShare (only signed sharing) - - - KeeShare (only unsigned sharing) - KeeShare (only unsigned sharing) - AgentSettingsWidget @@ -656,14 +588,6 @@ Please select the correct database for saving credentials. Select custom proxy location Select custom proxy location - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - &Tor Browser &Tor Browser @@ -685,6 +609,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting Do not ask permission for HTTP &Basic Auth + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + Please see special instructions for browser extension use below + Please see special instructions for browser extension use below + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + BrowserService @@ -759,12 +695,24 @@ Moved %2 keys to custom data. KeePassXC: Legacy browser integration settings detected - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + KeePassXC: Create a new group + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -926,6 +874,10 @@ This is necessary to maintain compatibility with the browser plugin.File cannot be written as it is opened in read-only mode. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + Key not transformed. This is a bug, please report it to the developers! + DatabaseOpenDialog @@ -1289,7 +1241,7 @@ If you keep this number, your database may be too easy to crack! thread(s) Threads for parallel execution (KDF settings) - thread(s) thread(s) + thread threads %1 ms @@ -1519,7 +1471,7 @@ This is definitely a bug, please report it to the developers. Do you really want to move %n entry(s) to the recycle bin? - Do you really want to move %n entry(s) to the recycle bin?Do you really want to move %n entry(s) to the recycle bin? + Do you really want to move %n entry to the recycle bin?Do you really want to move %n entries to the recycle bin? Execute command? @@ -1581,15 +1533,15 @@ Do you want to merge your changes? Do you really want to delete %n entry(s) for good? - Do you really want to delete %n entry(s) for good?Do you really want to delete %n entry(s) for good? + Do you really want to delete %n entry for good?Do you really want to delete %n entries for good? Delete entry(s)? - Delete entry(s)?Delete entry(s)? + Delete entry?Delete entries? Move entry(s) to recycle bin? - Move entry(s) to recycle bin?Move entry(s) to recycle bin? + Move entry to recycle bin?Move entries to recycle bin? File opened in read only mode. @@ -1659,7 +1611,7 @@ Disable safe saves and try again? Entry "%1" has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway? - Entry "%1" has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway?Entry "%1" has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway? + Entry "%1" has %2 reference. Do you want to overwrite references with values, skip this entry, or delete anyway?Entry "%1" has %2 references. Do you want to overwrite references with values, skip this entry, or delete anyway? Delete group @@ -1681,6 +1633,10 @@ Disable safe saves and try again? Database was not modified by merge operation. Database was not modified by merge operation. + + Shared group... + Shared group... + EditEntryWidget @@ -1762,11 +1718,11 @@ Disable safe saves and try again? %n week(s) - %n week(s)%n week(s) + %n week%n weeks %n month(s) - %n month(s)%n month(s) + %n month%n months Apply generated password? @@ -1794,7 +1750,7 @@ Disable safe saves and try again? %n year(s) - %n year(s)%n year(s) + %n year%n years Confirm Removal @@ -2118,6 +2074,22 @@ Disable safe saves and try again? Select import/export file Select import/export file + + Clear + Clear + + + The export container %1 is already referenced. + The export container %1 is already referenced. + + + The import container %1 is already imported. + The import container %1 is already imported. + + + The container %1 imported and export by different groups. + The container %1 imported and export by different groups. + EditGroupWidgetMain @@ -2206,7 +2178,7 @@ Disable safe saves and try again? Successfully loaded %1 of %n icon(s) - Successfully loaded %1 of %n icon(s)Successfully loaded %1 of %n icon(s) + Successfully loaded %1 of %n iconSuccessfully loaded %1 of %n icons No icons were loaded @@ -2214,15 +2186,15 @@ Disable safe saves and try again? %n icon(s) already exist in the database - %n icon(s) already exist in the database%n icon(s) already exist in the database + %n icon already exist in the database%n icons already exist in the database The following icon(s) failed: - The following icon(s) failed:The following icon(s) failed: + The following icon failed:The following icons failed: This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it? - This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it?This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it? + This icon is used by %n entry, and will be replaced by the default icon. Are you sure you want to delete it?This icon is used by %n entries, and will be replaced by the default icon. Are you sure you want to delete it? @@ -2316,7 +2288,7 @@ This may cause the affected plugins to malfunction. Are you sure you want to remove %n attachment(s)? - Are you sure you want to remove %n attachment(s)?Are you sure you want to remove %n attachment(s)? + Are you sure you want to remove %n attachment?Are you sure you want to remove %n attachments? Save attachments @@ -2361,8 +2333,8 @@ This may cause the affected plugins to malfunction. Unable to open file(s): %1 - Unable to open file(s): -%1Unable to open file(s): + Unable to open file: +%1Unable to open files: %1 @@ -2591,14 +2563,6 @@ This may cause the affected plugins to malfunction. [empty] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3193,6 +3157,22 @@ Line %2, column %3 Synchronize with Synchronize with + + Disabled share %1 + Disabled share %1 + + + Import from share %1 + Import from share %1 + + + Export to share %1 + Export to share %1 + + + Synchronize with share %1 + Synchronize with share %1 + KeyComponentWidget @@ -3843,10 +3823,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - Password cannot be empty. - Passwords do not match. Passwords do not match. @@ -4492,7 +4468,7 @@ Available commands: Clearing the clipboard in %1 second(s)... - Clearing the clipboard in %1 second(s)...Clearing the clipboard in %1 second(s)... + Clearing the clipboard in %1 second...Clearing the clipboard in %1 seconds... Clipboard cleared! @@ -4883,6 +4859,10 @@ Available commands: Database password: Database password: + + Cannot create new group + Cannot create new group + QtIOCompressor @@ -5156,9 +5136,8 @@ Available commands: The exported certificate is not the same as the one in use. Do you want to export the current certificate? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + Signer: @@ -5175,10 +5154,6 @@ Available commands: Import from container with certificate Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - Do you want to trust %1 with the fingerprint of %2 from %3 - Not this time Not this time @@ -5255,14 +5230,6 @@ Available commands: Could not write export container (%1) Could not write export container (%1) - - Could not embed signature (%1) - Could not embed signature (%1) - - - Could not embed database (%1) - Could not embed database (%1) - Overwriting unsigned share container is not supported - export prevented Overwriting unsigned share container is not supported - export prevented @@ -5287,6 +5254,34 @@ Available commands: Export to %1 Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + Do you want to trust %1 with the fingerprint of %2 from %3? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + Multiple import source path to %1 in %2 + + + Conflicting export target path %1 in %2 + Conflicting export target path %1 in %2 + + + Could not embed signature: Could not open file to write (%1) + Could not embed signature: Could not open file to write (%1) + + + Could not embed signature: Could not write file (%1) + Could not embed signature: Could not write file (%1) + + + Could not embed database: Could not open file to write (%1) + Could not embed database: Could not open file to write (%1) + + + Could not embed database: Could not write file (%1) + Could not embed database: Could not write file (%1) + TotpDialog @@ -5304,7 +5299,7 @@ Available commands: Expires in <b>%n</b> second(s) - Expires in <b>%n</b> second(s)Expires in <b>%n</b> second(s) + Expires in <b>%n</b> secondExpires in <b>%n</b> seconds diff --git a/share/translations/keepassx_es.ts b/share/translations/keepassx_es.ts index 4b1736bed..99d394ff9 100644 --- a/share/translations/keepassx_es.ts +++ b/share/translations/keepassx_es.ts @@ -37,30 +37,6 @@ Copy to clipboard Copiar al portapapeles - - Revision: %1 - Revisión: %1 - - - Distribution: %1 - Distribución: %1 - - - Libraries: - Bibliotecas: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Sistema operativo: %1 -Arquitectura de CPU: %2 -Núcleo: %3 %4 - - - Enabled extensions: - Extensiones habilitadas: - Project Maintainers: Mantenedores del proyecto: @@ -69,50 +45,6 @@ Núcleo: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. El equipo de KeePassXC quiere agradecer de manera especial el trabajo de debfx por la creación de KeePassX. - - Version %1 - Versión %1 - - - Build Type: %1 - Tipo de Compilación: %1 - - - Auto-Type - Auto-Escritura - - - Browser Integration - Integración con Navegadores - - - SSH Agent - Agente de SSH - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Ninguno - - - KeeShare (signed and unsigned sharing) - KeeShare (compartir firmado y sin firmar) - - - KeeShare (only signed sharing) - KeeShare (compartir solo firmado) - - - KeeShare (only unsigned sharing) - KeeShare (compartir solo sin firmar) - AgentSettingsWidget @@ -656,14 +588,6 @@ Por favor, seleccione la base de datos correcta para guardar las credenciales.Select custom proxy location Elegir una ubicación de proxy personalizada - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Lo sentimos, pero KeePassXC-Browser no está soportado en las versiones Snap por el momento. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser es necesario para que la integración con el navegador funcione. Descárguelo para %1 y %2. - &Tor Browser Navegador &Tor @@ -685,6 +609,18 @@ Por favor, seleccione la base de datos correcta para guardar las credenciales.An extra HTTP Basic Auth setting No pedir permiso para Autenticación HTTP &Básica + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -760,12 +696,20 @@ Movió %2 claves a datos personalizados. KeePassXC: detectada configuración de integración del navegador heredada - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Se han detectado configuraciones de integración del navegador heredadas. -¿Desea actualizar la configuración al último estándar? -Esto es necesario para mantener la compatibilidad con el complemento del navegador. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -927,6 +871,10 @@ Esto es necesario para mantener la compatibilidad con el complemento del navegad File cannot be written as it is opened in read-only mode. El archivo no se puede escribir, ya que se ha abierto en modo de solo lectura. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1681,6 +1629,10 @@ Disable safe saves and try again? Database was not modified by merge operation. La base de datos no fue modificada por la operación de unir + + Shared group... + + EditEntryWidget @@ -2118,6 +2070,22 @@ Disable safe saves and try again? Select import/export file Seleccione el archivo de importación/exportación + + Clear + Limpiar + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2591,14 +2559,6 @@ Esto puede causar un mal funcionamiento de los complementos afectados.[vacío] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3193,6 +3153,22 @@ Linea %2, columna %3 Synchronize with Sincronizar con + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3843,10 +3819,6 @@ Espere algunos errores y problemas menores, esta versión no está destinada par <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>La contraseña es el método principal para asegurar su base de datos.<p><p>Las contraseñas buenas son largas y únicas. KeePassXC puede generar una para usted.<p> - - Password cannot be empty. - La contraseña no puede ser vacía. - Passwords do not match. Las contraseñas no coinciden. @@ -4883,6 +4855,10 @@ Comandos disponibles: Database password: Contraseña de la Base de Datos: + + Cannot create new group + + QtIOCompressor @@ -5156,9 +5132,8 @@ Comandos disponibles: El certificado exportado no es lo mismo que el que está en uso. ¿Desea exportar el certificado actual? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5175,10 +5150,6 @@ Comandos disponibles: Import from container with certificate Importar desde contenedor con certificado - - Do you want to trust %1 with the fingerprint of %2 from %3 - ¿Desea confiar en %1 con la huella digital de %2 desde %3? - Not this time No esta vez @@ -5255,14 +5226,6 @@ Comandos disponibles: Could not write export container (%1) No podría escribir el contenedor de exportación (%1) - - Could not embed signature (%1) - No puede incrustar la firma (%1) - - - Could not embed database (%1) - No se puede incrustar la base de datos (%1) - Overwriting unsigned share container is not supported - export prevented No se soporta la sobrescritura de contenedor compartido sin firmar - exportación prevenida @@ -5287,6 +5250,34 @@ Comandos disponibles: Export to %1 Exportar a %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + ¿Desea confiar a %1 con la huella digital de %2 de %3? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_fi.ts b/share/translations/keepassx_fi.ts index 8662859f8..de8237ea5 100644 --- a/share/translations/keepassx_fi.ts +++ b/share/translations/keepassx_fi.ts @@ -37,30 +37,6 @@ Copy to clipboard Kopioi leikepöydälle - - Revision: %1 - Revisio: %1 - - - Distribution: %1 - Jakelu: %1 - - - Libraries: - Kirjastot: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Käyttöjärjestelmä: %1 -Suoritinarkkitehtuuri: %2 -Ydin: %3 %4 - - - Enabled extensions: - Käytössä olevat laajennukset: - Project Maintainers: Projektin ylläpitäjät: @@ -69,50 +45,6 @@ Ydin: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. KeePassXC-tiimi antaa erityiskiitokset KeePassX-ohjelman alkuperäiselle luojalle debfx:lle - - Version %1 - Versio %1 - - - Build Type: %1 - Ohjelmiston tyyppi - - - Auto-Type - Automaattisyöttö - - - Browser Integration - Selainintegraatio - - - SSH Agent - SSH-agentti - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Ei mitään - - - KeeShare (signed and unsigned sharing) - KeeShare (allekirjoitettu ja allekirjoittamaton jakaminen) - - - KeeShare (only signed sharing) - KeeShare (vain allekirjoitettu jakaminen) - - - KeeShare (only unsigned sharing) - KeeShare (vain allekirjoittamaton jakaminen) - AgentSettingsWidget @@ -656,14 +588,6 @@ Valitse oikea tietokanta tietueen tallentamiseksi Select custom proxy location Valitse mukautettu välitysohjelma - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Valitettavasti KeePassXC-Browser ei tällä hetkellä tue Snap-julkaisuja. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser tarvitaan selainintegraation toimimiseksi. <br />Lataa se selaimille %1 ja %2. - &Tor Browser &Tor-selain @@ -685,6 +609,18 @@ Valitse oikea tietokanta tietueen tallentamiseksi An extra HTTP Basic Auth setting Älä kysy lupaa HTTP-autentikointiin + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -758,12 +694,20 @@ Siirrettiin %2 avainta mukautettuihin tietoihin. KeePassXC: Vanhoja selainintegraatioasetuksia havaittu - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Vanhoja selainintegraatioasetuksia on havaittu. -Haluatko päivittää tiedot uuteen muotoon? -Tämä on välttämätöntä selainintegraation yhteensopivuuden takaamiseksi. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -925,6 +869,10 @@ Tämä on välttämätöntä selainintegraation yhteensopivuuden takaamiseksi.File cannot be written as it is opened in read-only mode. Tiedostoa ei voitu tallentaa, sillä se on avattu vain lukuoikeuksin. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1680,6 +1628,10 @@ Ota turvallinen tallennus pois käytöstä ja yritä uudelleen? Database was not modified by merge operation. Tietokannan sisältö ei muuttunut yhdistämisen yhteydessä. + + Shared group... + + EditEntryWidget @@ -2117,6 +2069,22 @@ Ota turvallinen tallennus pois käytöstä ja yritä uudelleen? Select import/export file Valitse tuonti-/vientitiedosto + + Clear + Tyhjennä + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2590,14 +2558,6 @@ Tämä voi vikaannuttaa tietoa käyttävän liitännäisen. [tyhjä] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3192,6 +3152,22 @@ Rivi %2, sarake %3 Synchronize with Synkronoi + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3841,10 +3817,6 @@ Bugeja ja ongelmia voi esiintyä. Tämä versio ei ole tarkoitettu päivittäise <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>Salasana on kaikkein tärkein asia tietokannan suojauksessa.</p><p>Hyvät salasanat ovat pitkiä ja uniikkeja. KeePassXC voi luoda sellaisen sinulle.</p> - - Password cannot be empty. - Salasana ei voi olla tyhjä. - Passwords do not match. Salasanat eivät ole samoja. @@ -4881,6 +4853,10 @@ Käytettävissä olevat komennot: Database password: Tietokannan salasana: + + Cannot create new group + + QtIOCompressor @@ -5154,9 +5130,8 @@ Käytettävissä olevat komennot: Viety sertifikaatti ei ole sama kuin käytössä oleva. Haluatko viedä tämän hetkisen sertifikaatin? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5173,10 +5148,6 @@ Käytettävissä olevat komennot: Import from container with certificate Tuo säiliöstä sertifikaatin kanssa - - Do you want to trust %1 with the fingerprint of %2 from %3 - Haluatko luottaa kohteeseen %1 sormenjäljen %2 kanssa, jonka lähde on %3 - Not this time Ei tällä kertaa @@ -5253,14 +5224,6 @@ Käytettävissä olevat komennot: Could not write export container (%1) Vietyä säiliötä ei voitu kirjoittaa (%1) - - Could not embed signature (%1) - Allekirjoitusta ei voitu sisällyttää (%1) - - - Could not embed database (%1) - Tietokantaa ei voitu sisällyttää (%1) - Overwriting unsigned share container is not supported - export prevented Allekirjoittamattoman jaetun säiliön ylikirjoitus ei ole tuettu - vienti estettiin @@ -5285,6 +5248,34 @@ Käytettävissä olevat komennot: Export to %1 Vie kohteeseen %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_fr.ts b/share/translations/keepassx_fr.ts index c196336df..8384e1462 100644 --- a/share/translations/keepassx_fr.ts +++ b/share/translations/keepassx_fr.ts @@ -37,30 +37,6 @@ Copy to clipboard Copier dans le presse-papiers - - Revision: %1 - Révision : %1 - - - Distribution: %1 - Distribution : %1 - - - Libraries: - Bibliothèques : - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Système d’exploitation : %1 -Architecture d’UCT : %2 -Noyau : %3 %4 - - - Enabled extensions: - Extensions activées : - Project Maintainers: Mainteneurs du projet : @@ -69,50 +45,6 @@ Noyau : %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. L’équipe de KeePassXC remercie tout particulièrement debfx pour la création du KeePassX original. - - Version %1 - Version %1 - - - Build Type: %1 - Type de Version : %1 - - - Auto-Type - Saisie automatique - - - Browser Integration - Intégration aux navigateurs - - - SSH Agent - Agent SSH - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Aucun - - - KeeShare (signed and unsigned sharing) - KeeShare (partage signé et non signé) - - - KeeShare (only signed sharing) - KeeShare (partage signé uniquement) - - - KeeShare (only unsigned sharing) - KeeShare (partage non signé uniquement) - AgentSettingsWidget @@ -656,14 +588,6 @@ Veuillez sélectionner la base de donnée souhaitée pour enregistrer les identi Select custom proxy location Sélectionner un proxy personnalisé - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Nous sommes désolés, mais KeePassXC-Browser n’est pas disponible via Snap pour le moment. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser est nécessaire pour que l'intégration au navigateur fonctionne. <br />Téléchargez-le pour %1 et%2. - &Tor Browser &Navigateur Tor @@ -685,6 +609,18 @@ Veuillez sélectionner la base de donnée souhaitée pour enregistrer les identi An extra HTTP Basic Auth setting Ne pas demander d'autorisation pour l'authentification HTTP &Basic + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -759,9 +695,19 @@ Moved %2 keys to custom data. KeePassXC : Ancienne integration au navigateur détectée - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -924,6 +870,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. Le fichier ne peut pas être enregistré car il est ouvert en lecture seule. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1676,6 +1626,10 @@ Désactiver les enregistrements sécurisés et ressayer ? Database was not modified by merge operation. La base de données n'a pas été modifiée par l'opération de fusion. + + Shared group... + + EditEntryWidget @@ -2113,6 +2067,22 @@ Désactiver les enregistrements sécurisés et ressayer ? Select import/export file Sélectionner le fichier d'import/export + + Clear + Effacer + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2585,14 +2555,6 @@ This may cause the affected plugins to malfunction. [vide] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3187,6 +3149,22 @@ Ligne %2, colonne %3 Synchronize with Synchroniser avec + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3836,10 +3814,6 @@ Attendez-vous à des bogues et des problèmes mineurs. Cette version n’est pas <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>Le mot de passe est le moyen principal pour sécuriser votre base de données.</p><p>Un bon mot de passe est long et unique. KeePassXC peut en générer un pour vous.</p> - - Password cannot be empty. - Le mot de passe ne peut pas être vide. - Passwords do not match. Les mots de passe ne correspondent pas. @@ -4875,6 +4849,10 @@ Commandes disponibles : Database password: Mot de passe de la base de données : + + Cannot create new group + + QtIOCompressor @@ -4993,7 +4971,7 @@ Commandes disponibles : logical OR - + OU logique Examples @@ -5137,7 +5115,7 @@ Commandes disponibles : Select path - + Sélectionner le chemin Exporting changed certificate @@ -5148,8 +5126,7 @@ Commandes disponibles : - %1.%2 - Template for KeeShare key file + Signer: @@ -5167,10 +5144,6 @@ Commandes disponibles : Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time Pas cette fois @@ -5247,14 +5220,6 @@ Commandes disponibles : Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5279,6 +5244,34 @@ Commandes disponibles : Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_hu.ts b/share/translations/keepassx_hu.ts index 680877a08..95e035abb 100644 --- a/share/translations/keepassx_hu.ts +++ b/share/translations/keepassx_hu.ts @@ -37,30 +37,6 @@ Copy to clipboard Vágólapra másolás - - Revision: %1 - Revízió: %1 - - - Distribution: %1 - Disztribúció: %1 - - - Libraries: - Függvénykönyvtárak: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Operációs rendszer: %1 -CPU architektúra: %2 -Kernel: %3 %4 - - - Enabled extensions: - Engedélyezett kiterjesztések: - Project Maintainers: Projektkarbantartók: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. A KeePassXC fejlesztőcsapata ezúton külön köszönetet mond debfx-nek az eredetei KeePassX létrehozásáért. - - Version %1 - Verzió: %1 - - - Build Type: %1 - Összeállítás típusa: %1 - - - Auto-Type - Automatikus beírás - - - Browser Integration - Böngészőintegráció - - - SSH Agent - SSH ügynök - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Nincs - - - KeeShare (signed and unsigned sharing) - KeeShare (aláírt és nem aláírt megosztás) - - - KeeShare (only signed sharing) - KeeShare (csak aláírt megoszás) - - - KeeShare (only unsigned sharing) - KeeShare (csak nem aláírt megosztás) - AgentSettingsWidget @@ -656,14 +588,6 @@ Válassza ki a helyes adatbázist a hitelesítő adatok mentéséhez.Select custom proxy location Egyedi proxyhely kijelölése - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Sajnáljuk, de a KeePassXC-Browser pillanatnyilag nem támogatja a Snap kiadásokat. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - A böngészőintegráció működéséhez a KeePassXC-böngészőre van szükség. <br />Letölthető ezen böngészőkre: %1 és %2. - &Tor Browser &Tor böngésző @@ -685,6 +609,18 @@ Válassza ki a helyes adatbázist a hitelesítő adatok mentéséhez.An extra HTTP Basic Auth setting Ne kérjen engedélyt a HTTP &Basic Auth számára + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -758,12 +694,20 @@ Moved %2 keys to custom data. KeePassXC: Örökölt böngészőintegrációs beállítások észlelve - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Örökölt böngészőintegrációs beállítások észlelve -Frissíti a beállításokat a legfrissebb szabványra? -Ez szükséges a böngészőbővítménnyel történő kompatibilitáshoz. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -925,6 +869,10 @@ Ez szükséges a böngészőbővítménnyel történő kompatibilitáshoz.File cannot be written as it is opened in read-only mode. A fájlba nem lehet írni, mert csak olvasható módban van megnyitva. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1679,6 +1627,10 @@ Letiltható a biztonságos mentés és úgy megkísérelhető a mentés?Database was not modified by merge operation. Az adatbázis nem változott az összeolvasztási művelet során. + + Shared group... + + EditEntryWidget @@ -2116,6 +2068,22 @@ Letiltható a biztonságos mentés és úgy megkísérelhető a mentés?Select import/export file Importálási vagy exportálási fájl kijelölése + + Clear + Törlés + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2589,14 +2557,6 @@ Ez a kijelölt bővítmény hibás működését eredményezheti. [üres] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3191,6 +3151,22 @@ Line %2, column %3 Synchronize with Szinkronizálás ezzel + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3839,10 +3815,6 @@ Néhány hiba és kisebb nehézségek várhatóak, ezért ez a verzió nem aján <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>A jelszó az adatbázis biztonságban tartásának elsődleges módja.</p><p>A jó jelszavak hosszúak és egyediek. A KeePassXC elő tud állítani egyet Önnek.</p> - - Password cannot be empty. - A jelszó nem lehet üres. - Passwords do not match. A jelszavak nem egyeznek @@ -4274,11 +4246,11 @@ Néhány hiba és kisebb nehézségek várhatóak, ezért ez a verzió nem aján Extract and print the content of a database. - Adatbázis tartalmának kinyerése és kiírása. + Adatbázis tartalmának kibontása és kiírása. Path of the database to extract. - Kinyerendő adatbázis útvonala. + Kibontandó adatbázis útvonala. Insert password to unlock %1: @@ -4636,7 +4608,7 @@ Elérhető parancsok: Unable to open file %1. - A(z) %1 fájl nem nyitható meg + A(z) %1 fájl nem nyitható meg. Error while reading the database: @@ -4878,6 +4850,10 @@ Elérhető parancsok: Database password: Adatbázis jelszava + + Cannot create new group + + QtIOCompressor @@ -5151,9 +5127,8 @@ Elérhető parancsok: Az exportált tanúsítvány nem egyezik meg a jelenleg használattal. Exportálható a jelenlegi? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5170,10 +5145,6 @@ Elérhető parancsok: Import from container with certificate Importálás a tárolóból aláírással - - Do you want to trust %1 with the fingerprint of %2 from %3 - Megbízhatónak minősíthető a(z) %1, melynek ujjlenyomata %2 / %3? - Not this time Most nem @@ -5250,14 +5221,6 @@ Elérhető parancsok: Could not write export container (%1) Nem írható az exportálási tároló (%1) - - Could not embed signature (%1) - Az aláírás nem beágyazható (%1) - - - Could not embed database (%1) - Az adatbázis nem beágyazható (%1) - Overwriting unsigned share container is not supported - export prevented A nem aláírt tárolók felülírása nem támogatott – az exportálás megakadályozva @@ -5282,6 +5245,34 @@ Elérhető parancsok: Export to %1 Exportálás: %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + Megbízhatónak minősíthető a(z) %1, melynek ujjlenyomata %2 / %3? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_id.ts b/share/translations/keepassx_id.ts index f56ecabb7..efbc39535 100644 --- a/share/translations/keepassx_id.ts +++ b/share/translations/keepassx_id.ts @@ -37,30 +37,6 @@ Copy to clipboard Salin ke papan klip - - Revision: %1 - Revisi: %1 - - - Distribution: %1 - Distribusi: %1 - - - Libraries: - Pustaka: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Sistem operasi: %1 -Arsitektur CPU: %2 -Kernel: %3 %4 - - - Enabled extensions: - Ekstensi aktif: - Project Maintainers: Pengelola Proyek: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Terima kasih dari tim KeePassXC kepada debfx yang telah membuat KeepassX original. - - Version %1 - Versi %1 - - - Build Type: %1 - Tipe Build: %1 - - - Auto-Type - Ketik-Otomatis - - - Browser Integration - Integrasi Peramban - - - SSH Agent - SSH Agent - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Nihil - - - KeeShare (signed and unsigned sharing) - - - - KeeShare (only signed sharing) - - - - KeeShare (only unsigned sharing) - - AgentSettingsWidget @@ -655,14 +587,6 @@ Please select the correct database for saving credentials. Select custom proxy location Pilih lokasi proksi khusus - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Maaf, KeePassXC-Browser saat ini tidak mendukung rilisan Snap. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - Membutuhkan KeePassXC-Browser agar integrasi peramban bisa bekerja. <br />Unduh di %1 dan %2. - &Tor Browser Peramban &Tor @@ -684,6 +608,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -757,9 +693,19 @@ Moved %2 keys to custom data. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -921,6 +867,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1663,6 +1613,10 @@ Nonaktifkan penyimpanan aman dan coba lagi? Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2100,6 +2054,22 @@ Nonaktifkan penyimpanan aman dan coba lagi? Select import/export file + + Clear + Bersihkan + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2571,14 +2541,6 @@ Ini mungkin akan menyebabkan plugin terkait tidak berfungsi. [kosong] - - GroupModel - - %1 - Template for name without annotation - - - HostInstaller @@ -3173,6 +3135,22 @@ Baris %2, kolom %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3818,10 +3796,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - Sandi tidak boleh kosong. - Passwords do not match. Sandi tidak sama. @@ -4855,6 +4829,10 @@ Perintah yang tersedia: Database password: Sandi basis data: + + Cannot create new group + + QtIOCompressor @@ -5128,8 +5106,7 @@ Perintah yang tersedia: - %1.%2 - Template for KeeShare key file + Signer: @@ -5147,10 +5124,6 @@ Perintah yang tersedia: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time @@ -5227,14 +5200,6 @@ Perintah yang tersedia: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5259,6 +5224,34 @@ Perintah yang tersedia: Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_it.ts b/share/translations/keepassx_it.ts index 0d906c9e1..e5a1558cc 100644 --- a/share/translations/keepassx_it.ts +++ b/share/translations/keepassx_it.ts @@ -37,30 +37,6 @@ Copy to clipboard Copia negli appunti - - Revision: %1 - Revisione: %1 - - - Distribution: %1 - Distribuzione: %1 - - - Libraries: - Librerie: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Sistema operativo: %1 -Architettura CPU: %2 -Kernel: %3 %4 - - - Enabled extensions: - Estensioni abilitate: - Project Maintainers: Responsabili del progetto: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Uno speciale ringraziamento dal team di KeePassXC va a debfx per la creazione del KeePassX originale. - - Version %1 - Versione %1 - - - Build Type: %1 - Tipo di compilazione: %1 - - - Auto-Type - Completamento automatico - - - Browser Integration - Integrazione con i browser - - - SSH Agent - Agente SSH - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Nessuno - - - KeeShare (signed and unsigned sharing) - - - - KeeShare (only signed sharing) - - - - KeeShare (only unsigned sharing) - - AgentSettingsWidget @@ -655,14 +587,6 @@ Please select the correct database for saving credentials. Select custom proxy location Selezionare una posizione personalizzata per il proxy - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Siamo spiacenti, ma KeePassXC-Browser non è supportato per i rilasci di Snap al momento. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser è necessario per far funzionare l'integrazione con il browser. < br / > scaricarlo per %1 e %2. - &Tor Browser &Tor Browser @@ -684,6 +608,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -756,9 +692,19 @@ Moved %2 keys to custom data. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -920,6 +866,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. Il file non può essere scritto perché aperto in modalità di sola lettura. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1664,6 +1614,10 @@ Disabilitare i salvataggi sicuri e riprovare? Database was not modified by merge operation. Il database non è stato modificato dall'operazione di unione. + + Shared group... + + EditEntryWidget @@ -2101,6 +2055,22 @@ Disabilitare i salvataggi sicuri e riprovare? Select import/export file + + Clear + Azzera + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2574,14 +2544,6 @@ Ciò potrebbe causare malfunzionamenti ai plugin interessati. [vuoto] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3176,6 +3138,22 @@ Riga %2, colonna %3 Synchronize with Sincronizza con + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3822,10 +3800,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - La password non può essere vuota. - Passwords do not match. Le password non corrispondono. @@ -4859,6 +4833,10 @@ Comandi disponibili: Database password: Password del database: + + Cannot create new group + + QtIOCompressor @@ -5132,8 +5110,7 @@ Comandi disponibili: - %1.%2 - Template for KeeShare key file + Signer: @@ -5151,10 +5128,6 @@ Comandi disponibili: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time @@ -5231,14 +5204,6 @@ Comandi disponibili: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5263,6 +5228,34 @@ Comandi disponibili: Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_ja.ts b/share/translations/keepassx_ja.ts index 71a1dd182..025d7ef28 100644 --- a/share/translations/keepassx_ja.ts +++ b/share/translations/keepassx_ja.ts @@ -37,30 +37,6 @@ Copy to clipboard クリップボードにコピー - - Revision: %1 - リビジョン: %1 - - - Distribution: %1 - 配布形式: %1 - - - Libraries: - ライブラリ: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - オペレーティングシステム: %1 -CPU アーキテクチャー: %2 -カーネル: %3 %4 - - - Enabled extensions: - 有効化された拡張機能: - Project Maintainers: プロジェクトメンテナ: @@ -69,50 +45,6 @@ CPU アーキテクチャー: %2 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. KeePassXC チームはオリジナルの KeePassX を作成した debfx に心から感謝します。 - - Version %1 - バージョン %1 - - - Build Type: %1 - ビルド形式: %1 - - - Auto-Type - 自動入力 - - - Browser Integration - ブラウザー統合 - - - SSH Agent - SSH エージェント - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - なし - - - KeeShare (signed and unsigned sharing) - KeeShare (署名共有と未署名共有) - - - KeeShare (only signed sharing) - KeeShare (署名共有のみ) - - - KeeShare (only unsigned sharing) - KeeShare (未署名共有のみ) - AgentSettingsWidget @@ -656,14 +588,6 @@ Please select the correct database for saving credentials. Select custom proxy location カスタムプロキシを選択する - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - 申し訳ありませんが、今の所 KeePassXC-Browser は Snap リリースではサポートしていません。 - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - ブラウザー統合の動作には KeePassXC-Browser が必要です。<br />KeePassXC-Browser は %1 用と %2 用の2種類あります。 - &Tor Browser Tor Browser(&T) @@ -685,6 +609,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting HTTP ベーシック認証でアクセス許可を確認しない(&B) + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -759,12 +695,20 @@ Moved %2 keys to custom data. KeePassXC: レガシーなブラウザー統合の設定が検出されました - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - レガシーなブラウザー統合の設定が検出されました。 -設定を最新の標準にアップグレードしますか? -これはブラウザープラグインとの互換性維持に必要です。 + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -926,6 +870,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. ファイルは読み取り専用モードで開かれているため書き込むことはできません。 + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1681,6 +1629,10 @@ Disable safe saves and try again? Database was not modified by merge operation. データベースはマージ処理で更新されませんでした。 + + Shared group... + + EditEntryWidget @@ -2118,6 +2070,22 @@ Disable safe saves and try again? Select import/export file インポート/エクスポートファイルを選択 + + Clear + 消去 + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2590,14 +2558,6 @@ This may cause the affected plugins to malfunction. [空] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3192,6 +3152,22 @@ Line %2, column %3 Synchronize with 同期 + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3842,10 +3818,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>パスワードはデータベースを保護するための基本的手段です。</p><p>長くて複雑なパスワードが良いパスワードとされています。KeePassXC に生成させることも可能です。</p> - - Password cannot be empty. - パスワードは空にできません。 - Passwords do not match. パスワードが一致しません。 @@ -4882,6 +4854,10 @@ Available commands: Database password: データベースのパスワード: + + Cannot create new group + + QtIOCompressor @@ -5155,9 +5131,8 @@ Available commands: エクスポートされる証明書は使用中の証明書と同一ではありません。現在の証明書をエクスポートしますか? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5174,10 +5149,6 @@ Available commands: Import from container with certificate 署名付きコンテナからのインポート - - Do you want to trust %1 with the fingerprint of %2 from %3 - %3 の %1 (フィンガープリント %2) を信用しますか? - Not this time 今回はしない @@ -5254,14 +5225,6 @@ Available commands: Could not write export container (%1) コンテナを書き込めませんでした (%1) - - Could not embed signature (%1) - 署名を埋め込めませんでした (%1) - - - Could not embed database (%1) - データベースを埋め込めませんでした (%1) - Overwriting unsigned share container is not supported - export prevented 未署名共有コンテナの上書きはサポートされていません - エクスポートは阻害されました @@ -5286,6 +5249,34 @@ Available commands: Export to %1 %1 にエクスポート + + Do you want to trust %1 with the fingerprint of %2 from %3? + %3 の %1 (フィンガープリント %2) を信用しますか?{1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_ko.ts b/share/translations/keepassx_ko.ts index d39b0ff00..240fbaed2 100644 --- a/share/translations/keepassx_ko.ts +++ b/share/translations/keepassx_ko.ts @@ -37,30 +37,6 @@ Copy to clipboard 클립보드에 복사 - - Revision: %1 - 리비전: %1 - - - Distribution: %1 - 배포판: %1 - - - Libraries: - 라이브러리: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - 운영 체제: %1 -CPU 아키텍처: %2 -커널: %3 %4 - - - Enabled extensions: - 활성화된 확장 기능: - Project Maintainers: 프로젝트 관리자: @@ -69,50 +45,6 @@ CPU 아키텍처: %2 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. - - Version %1 - - - - Build Type: %1 - - - - Auto-Type - 자동 입력 - - - Browser Integration - 브라우저 통합 - - - SSH Agent - SSH 에이전트 - - - YubiKey - - - - TouchID - - - - None - - - - KeeShare (signed and unsigned sharing) - - - - KeeShare (only signed sharing) - - - - KeeShare (only unsigned sharing) - - AgentSettingsWidget @@ -655,14 +587,6 @@ Please select the correct database for saving credentials. Select custom proxy location 사용자 정의 프록시 위치 지정 - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - - &Tor Browser @@ -684,6 +608,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -757,9 +693,19 @@ Moved %2 keys to custom data. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -921,6 +867,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1663,6 +1613,10 @@ Disable safe saves and try again? Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2100,6 +2054,22 @@ Disable safe saves and try again? Select import/export file + + Clear + 비우기 + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2570,14 +2540,6 @@ This may cause the affected plugins to malfunction. - - GroupModel - - %1 - Template for name without annotation - - - HostInstaller @@ -3170,6 +3132,22 @@ Line %2, column %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3814,10 +3792,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - - Passwords do not match. @@ -4850,6 +4824,10 @@ Available commands: Database password: + + Cannot create new group + + QtIOCompressor @@ -5123,8 +5101,7 @@ Available commands: - %1.%2 - Template for KeeShare key file + Signer: @@ -5142,10 +5119,6 @@ Available commands: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time @@ -5222,14 +5195,6 @@ Available commands: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5254,6 +5219,34 @@ Available commands: Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_lt.ts b/share/translations/keepassx_lt.ts index fbbf69ae8..bf5f5cf22 100644 --- a/share/translations/keepassx_lt.ts +++ b/share/translations/keepassx_lt.ts @@ -37,30 +37,6 @@ Copy to clipboard Kopijuoti į iškarpinę - - Revision: %1 - Poversijis: %1 - - - Distribution: %1 - Platinimas: %1 - - - Libraries: - Bibliotekos: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Operacinė sistema: %1 -Procesoriaus architektūra: %2 -Branduolys: %3 %4 - - - Enabled extensions: - Įjungti plėtiniai: - Project Maintainers: Projektą prižiūri: @@ -69,50 +45,6 @@ Branduolys: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Ypatinga padėka nuo KeePassXC komandos yra skiriama debfx už pradinės KeePassX programos sukūrimą. - - Version %1 - Versija %1 - - - Build Type: %1 - Darinio tipas: %1 - - - Auto-Type - Automatinis rinkimas - - - Browser Integration - Naršyklės integracija - - - SSH Agent - SSH agentas - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Nėra - - - KeeShare (signed and unsigned sharing) - - - - KeeShare (only signed sharing) - - - - KeeShare (only unsigned sharing) - - AgentSettingsWidget @@ -656,14 +588,6 @@ Prisijungimo duomenų įrašymui, pasirinkite teisingą duomenų bazę.Select custom proxy location - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - - &Tor Browser &Tor Browser @@ -685,6 +609,18 @@ Prisijungimo duomenų įrašymui, pasirinkite teisingą duomenų bazę.An extra HTTP Basic Auth setting + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -756,9 +692,19 @@ Perkelta %2 raktų į tinkintus duomenis. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -920,6 +866,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. Failas negali būti įrašytas, nes jis atvertas tik skaitymo veiksenoje. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1658,6 +1608,10 @@ Disable safe saves and try again? Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2095,6 +2049,22 @@ Disable safe saves and try again? Select import/export file + + Clear + Išvalyti + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2565,14 +2535,6 @@ This may cause the affected plugins to malfunction. [tuščia] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3167,6 +3129,22 @@ Line %2, column %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3809,10 +3787,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - Slaptažodis negali būti tuščias. - Passwords do not match. Slaptažodžiai nesutampa. @@ -4843,6 +4817,10 @@ Prieinamos komandos: Database password: Duomenų bazės slaptažodis: + + Cannot create new group + + QtIOCompressor @@ -5116,9 +5094,8 @@ Prieinamos komandos: - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5135,10 +5112,6 @@ Prieinamos komandos: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time Ne šį kartą @@ -5215,14 +5188,6 @@ Prieinamos komandos: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5247,6 +5212,34 @@ Prieinamos komandos: Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_nb.ts b/share/translations/keepassx_nb.ts index ab8f5ce56..58a820a42 100644 --- a/share/translations/keepassx_nb.ts +++ b/share/translations/keepassx_nb.ts @@ -37,30 +37,6 @@ Copy to clipboard Kopier til utklippstavle - - Revision: %1 - Revisjon: %1 - - - Distribution: %1 - Distribusjon: %1 - - - Libraries: - Biblioteker: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Operativsystem: %1 -CPU arkitektur: %2 -Kjerne: %3 %4 - - - Enabled extensions: - Aktive utvidelser: - Project Maintainers: Prosjektets vedlikeholdere: @@ -69,50 +45,6 @@ Kjerne: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. En spesiell takk fra KeePassXC-laget går til debfx, utvikler av programmet KeePassX. - - Version %1 - Versjon %1 - - - Build Type: %1 - Byggetype: %1 - - - Auto-Type - Autoskriv - - - Browser Integration - Nettlesertillegg - - - SSH Agent - SSH-agent - - - YubiKey - YubiKey - - - TouchID - Berørings-id - - - None - Ingen - - - KeeShare (signed and unsigned sharing) - - - - KeeShare (only signed sharing) - - - - KeeShare (only unsigned sharing) - - AgentSettingsWidget @@ -655,14 +587,6 @@ Please select the correct database for saving credentials. Select custom proxy location Oppgi en selvvalgt mellomtjerneradresse - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Nettlesertillegget er foreløpig ikke tilgjengelig for snap-utgaver. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser er nødvendig for at nettleserintegrasjonen skal fungere. <br />Last den ned for %1 og %2. - &Tor Browser &Tor nettleser @@ -684,6 +608,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting Ikke spør om tillatelse til &enkel HTTP autentisering + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -756,9 +692,19 @@ Moved %2 keys to custom data. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -920,6 +866,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1662,6 +1612,10 @@ Deaktivere sikker lagring og prøve igjen? Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2099,6 +2053,22 @@ Deaktivere sikker lagring og prøve igjen? Select import/export file + + Clear + Tøm + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2570,14 +2540,6 @@ Dette kan føre til feil for de berørte programtilleggene. - - GroupModel - - %1 - Template for name without annotation - - - HostInstaller @@ -3170,6 +3132,22 @@ Line %2, column %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3815,10 +3793,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - - Passwords do not match. @@ -4851,6 +4825,10 @@ Tilgjengelige kommandoer: Database password: Databasepassord: + + Cannot create new group + + QtIOCompressor @@ -5124,9 +5102,8 @@ Tilgjengelige kommandoer: Eksportert sertifikat er ikke det samme som det som er i bruk. Vil du eksportere gjeldende sertifikat? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5143,10 +5120,6 @@ Tilgjengelige kommandoer: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time @@ -5223,14 +5196,6 @@ Tilgjengelige kommandoer: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5255,6 +5220,34 @@ Tilgjengelige kommandoer: Export to %1 Eksporter til %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_nl_NL.ts b/share/translations/keepassx_nl_NL.ts index d4427cf2f..6b25466e6 100644 --- a/share/translations/keepassx_nl_NL.ts +++ b/share/translations/keepassx_nl_NL.ts @@ -37,30 +37,6 @@ Copy to clipboard Naar klembord kopiëren - - Revision: %1 - Revisie: %1 - - - Distribution: %1 - Distributie: %1 - - - Libraries: - Bibliotheken: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Besturingssysteem: %1 -CPU-architectuur: %2 -Kernelversie: %3 %4 - - - Enabled extensions: - Geactiveerde extensies: - Project Maintainers: Projectbeheerders: @@ -69,50 +45,6 @@ Kernelversie: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Een extra dank-je-wel van het KeePassXC-team gaat naar debfx voor het creëren van het oorspronkelijke KeePassX. - - Version %1 - Versie %1 - - - Build Type: %1 - Bouwtype: %1 - - - Auto-Type - Auto-type - - - Browser Integration - Browserintegratie - - - SSH Agent - SSH-agent - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Geen - - - KeeShare (signed and unsigned sharing) - KeeShare (getekend en ongetekend delen) - - - KeeShare (only signed sharing) - KeeShare (alleen ondertekend delen) - - - KeeShare (only unsigned sharing) - KeeShare (alleen niet-ondertekend delen) - AgentSettingsWidget @@ -297,7 +229,7 @@ Kernelversie: %3 %4 Auto-Type start delay - Auto-type start vertraging + Auto-type startvertraging Check for updates at application startup @@ -313,7 +245,7 @@ Kernelversie: %3 %4 Button style - Knop stijl + Knopstijl @@ -361,7 +293,7 @@ Kernelversie: %3 %4 Re-lock previously locked database after performing Auto-Type - Vergrendelde database na Auto-type weer vergrendelen. + Vergrendelde database na Auto-type weer vergrendelen Don't require password repeat when it is visible @@ -489,7 +421,7 @@ Kernelversie: %3 %4 %1 has requested access to passwords for the following item(s). Please select whether you want to allow access. - %1 vraagt toegang tot jouw wachtwoorden voor het volgende). + %1 vraagt toegang tot jouw wachtwoorden voor het volgende. Geef aan of je toegang wilt verlenen of niet. @@ -656,22 +588,13 @@ Selecteer de database voor het opslaan van de inloggegevens. Select custom proxy location Selecteer aangepaste proxy-locatie - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Het spijt ons, maar KeePassXC-Browser wordt momenteel niet ondersteund voor Snap releases. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePaasXC-Browser is nodig voor de browser integratie. -Download hem voor %1 en %2. - &Tor Browser &Tor browser <b>Warning</b>, the keepassxc-proxy application was not found!<br />Please check the KeePassXC installation directory or confirm the custom path in advanced options.<br />Browser integration WILL NOT WORK without the proxy application.<br />Expected Path: - <b>Waarschuwing</b>, de keepassxc-proxy applicatie is niet gevonden!<br />Controleer de installatie directory van KeePassXC of bevestig het aangepaste pad in geavanceerde opties.<br />De browser integratie zal NIET WERKEN zonder de proxy application.<br />Verwacht pad: + <b>Waarschuwing</b>, de keepassxc-proxy-applicatie is niet gevonden!<br />Controleer de installatiemap van KeePassXC of bevestig het aangepaste pad in geavanceerde opties.<br />De browserintegratie zal NIET WERKEN zonder de proxy-applicatie.<br />Verwacht pad: Executable Files @@ -686,6 +609,18 @@ Download hem voor %1 en %2. An extra HTTP Basic Auth setting Vraag geen toestemming voor HTTP en Basis Authentificatie + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -760,12 +695,20 @@ Moved %2 keys to custom data. KeePassXC: instellingen voor oudere browserintegratie gedetecteerd - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Instellingen voor oudere browserintegratie gedetecteerd. -Wil je de instellingen veranderen naar de nieuwste standaard? -Dit is nodig om compatibiliteit met de browser plugin te behouden. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -927,6 +870,10 @@ Dit is nodig om compatibiliteit met de browser plugin te behouden. File cannot be written as it is opened in read-only mode. Bestand kan niet worden geschreven omdat het in de alleen-lezen modus is geopend. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1680,6 +1627,10 @@ Veilig opslaan afschakelen en opnieuw proberen? Database was not modified by merge operation. Database werd niet gewijzigd door het samenvoegen. + + Shared group... + + EditEntryWidget @@ -2117,6 +2068,22 @@ Veilig opslaan afschakelen en opnieuw proberen? Select import/export file Selecteer import/export bestand + + Clear + Wissen + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2588,14 +2555,6 @@ Hierdoor werken de plugins mogelijk niet meer goed. [leeg] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3190,6 +3149,22 @@ Lijn %2, kolom %3 Synchronize with Synchroniseren met + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3715,7 +3690,7 @@ Verwacht een aantal bugs en kleine problemen, deze versie is niet bedoeld voor p NewDatabaseWizardPageMetaData General Database Information - Algemene databaseinformatie + Algemene database-informatie Please fill in the display name and an optional description for your new database: @@ -3839,10 +3814,6 @@ Verwacht een aantal bugs en kleine problemen, deze versie is niet bedoeld voor p <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>Een wachtwoord is de primaire methode voor het beveiligen van een database.</p> <p>Goede wachtwoorden zijn lang en uniek. KeePassXC kan er een voor je genereren.</p> - - Password cannot be empty. - Wachtwoord mag niet leeg zijn. - Passwords do not match. Wachtwoorden komen niet overeen. @@ -4878,6 +4849,10 @@ Beschikbare opdrachten: Database password: Databasewachtwoord: + + Cannot create new group + + QtIOCompressor @@ -5151,9 +5126,8 @@ Beschikbare opdrachten: Het geëxporteerde certificaat is niet hetzelfde als die in gebruik is. Wilt u het huidige certificaat exporteren? - %1.%2 - Template for KeeShare key file - %1. %2 + Signer: + @@ -5170,10 +5144,6 @@ Beschikbare opdrachten: Import from container with certificate Importeren uit de container met certificaat - - Do you want to trust %1 with the fingerprint of %2 from %3 - Wil je %1 met de vingerafdruk van %2 van %3 vertrouwen? - Not this time Deze keer niet @@ -5250,14 +5220,6 @@ Beschikbare opdrachten: Could not write export container (%1) Kan geen export container schrijven (%1) - - Could not embed signature (%1) - Kon ondertekening niet opnemen in zip bestand (%1) - - - Could not embed database (%1) - Kon database niet opnemen in zip bestand (%1) - Overwriting unsigned share container is not supported - export prevented Overschrijven van een niet-ondertekende deel-container wordt niet ondersteund - export is voorkomen @@ -5282,6 +5244,34 @@ Beschikbare opdrachten: Export to %1 Exporteer naar %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + Wilt u %1 met de vingerafdruk van %2 vanaf %3 vertrouwen? {1 ?} {2 ?}  + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog @@ -5402,7 +5392,7 @@ Beschikbare opdrachten: Software Update - Software update + Software-update A new version of KeePassXC is available! @@ -5472,7 +5462,7 @@ Beschikbare opdrachten: No YubiKey detected, please ensure it's plugged in. - Geen YubiKey gedetecteerd, plug deze aub in. + Geen YubiKey gedetecteerd, plug deze a.u.b. in. No YubiKey inserted. diff --git a/share/translations/keepassx_pl.ts b/share/translations/keepassx_pl.ts index 2c6ed2824..ed32eff41 100644 --- a/share/translations/keepassx_pl.ts +++ b/share/translations/keepassx_pl.ts @@ -37,30 +37,6 @@ Copy to clipboard Skopiuj do schowka - - Revision: %1 - Rewizja: %1 - - - Distribution: %1 - Dystrybucja: %1 - - - Libraries: - Biblioteki: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - System operacyjny: %1 -Architektura procesora: %2 -Jądro: %3 %4 - - - Enabled extensions: - Włączone rozszerzenia: - Project Maintainers: Opiekunowie projektu: @@ -69,50 +45,6 @@ Jądro: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Specjalne podziękowania od zespołu KeePassXC dla debfx za stworzenie oryginalnego KeePassX. - - Version %1 - Wersja %1 - - - Build Type: %1 - Typ kompilacji: %1 - - - Auto-Type - Autowpisywanie - - - Browser Integration - Integracja z przeglądarką - - - SSH Agent - Agent SSH - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Żaden - - - KeeShare (signed and unsigned sharing) - KeeShare (podpisane i niepodpisane udostępnianie) - - - KeeShare (only signed sharing) - KeeShare (tylko podpisane udostępnianie) - - - KeeShare (only unsigned sharing) - KeeShare (tylko niepodpisane udostępnianie) - AgentSettingsWidget @@ -656,14 +588,6 @@ Wybierz właściwą bazę danych do zapisania danych uwierzytelniających.Select custom proxy location Wybierz niestandardową lokalizację proxy - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Przykro nam, ale KeePassXC-Browser obecnie nie obsługuje wydań Snap. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser jest potrzebny, aby działała integracja z przeglądarką. <br />Pobierz go dla %1 oraz %2. - &Tor Browser &Tor Browser @@ -685,6 +609,18 @@ Wybierz właściwą bazę danych do zapisania danych uwierzytelniających.An extra HTTP Basic Auth setting Nie pytaj o uprawnienie dla HTTP &Basic Auth + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -759,12 +695,20 @@ Przeniesiono %2 klucze do niestandardowych danych. KeePassXC: Wykryto ustawienia przestarzałej integracji z przeglądarką - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Wykryto ustawienia przestarzałej integracji z przeglądarką. -Czy chcesz uaktualnić ustawienia do najnowszego standardu? -Jest to konieczne, aby zachować zgodność z wtyczką przeglądarki. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -926,6 +870,10 @@ Jest to konieczne, aby zachować zgodność z wtyczką przeglądarki.File cannot be written as it is opened in read-only mode. Plik nie może zostać zapisany, ponieważ jest otwarty w trybie tylko do odczytu. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1681,6 +1629,10 @@ Wyłączyć bezpieczne zapisywanie i spróbować ponownie? Database was not modified by merge operation. Baza danych nie została zmodyfikowana operacją scalania. + + Shared group... + + EditEntryWidget @@ -2118,6 +2070,22 @@ Wyłączyć bezpieczne zapisywanie i spróbować ponownie? Select import/export file Wybierz plik importu/eksportu + + Clear + Wyczyść + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2593,14 +2561,6 @@ Może to spowodować nieprawidłowe działanie wtyczek. [pusty] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3195,6 +3155,22 @@ Wiersz %2, kolumna %3 Synchronize with Synchronizuj z + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3844,10 +3820,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>Hasło jest podstawową metodą zabezpieczania bazy danych.</p><p>Dobre hasła są długie i niepowtarzalne. KeePassXC może je wygenerować dla ciebie.</p> - - Password cannot be empty. - Hasło nie może być puste. - Passwords do not match. Hasła nie pasują do siebie. @@ -4884,6 +4856,10 @@ Dostępne polecenia: Database password: Hasło bazy danych: + + Cannot create new group + + QtIOCompressor @@ -5157,9 +5133,8 @@ Dostępne polecenia: Wyeksportowany certyfikat nie jest tym samym, co używany. Czy chcesz wyeksportować bieżący certyfikat? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5176,10 +5151,6 @@ Dostępne polecenia: Import from container with certificate Importuj z kontenera z certyfikatem - - Do you want to trust %1 with the fingerprint of %2 from %3 - Czy chcesz zaufać %1 z odciskiem palca %2 z %3 - Not this time Nie tym razem @@ -5256,14 +5227,6 @@ Dostępne polecenia: Could not write export container (%1) Nie można zapisać kontenera eksportu (%1) - - Could not embed signature (%1) - Nie można osadzić podpisu (%1) - - - Could not embed database (%1) - Nie można osadzić bazy danych (%1) - Overwriting unsigned share container is not supported - export prevented Zastąpienie niepodpisanego kontenera udostępniania nie jest obsługiwane - eksport został zablokowany @@ -5288,6 +5251,34 @@ Dostępne polecenia: Export to %1 Eksportuj do %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + Czy chcesz zaufać %1 z odciskiem palca %2 z %3? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_pt.ts b/share/translations/keepassx_pt.ts index a3cc9608e..71df82a7b 100644 --- a/share/translations/keepassx_pt.ts +++ b/share/translations/keepassx_pt.ts @@ -37,30 +37,6 @@ Copy to clipboard Copiar para a área de transferência - - Revision: %1 - Revisão: %1 - - - Distribution: %1 - Distribuição: %1 - - - Libraries: - Bibliotecas: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Sistema operativo: %1 -Arquitetura do CPU: %2 -Kernel: %3 %4 - - - Enabled extensions: - Extensões ativas: - Project Maintainers: Manutenção do projeto: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Um agradecimento especial da equipa do KeePassXC a debfx por ter criado a aplicação KeePassX. - - Version %1 - Versão %1 - - - Build Type: %1 - Tipo de compilação: %1 - - - Auto-Type - Escrita automática - - - Browser Integration - Integração com o navegador - - - SSH Agent - Agente SSH - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Nada - - - KeeShare (signed and unsigned sharing) - KeeShare (partilha assinada e não assinada) - - - KeeShare (only signed sharing) - KeeShare (apenas partilha assinada) - - - KeeShare (only unsigned sharing) - KeeShare (apenas partilha não assinada) - AgentSettingsWidget @@ -656,14 +588,6 @@ Selecione a base de dados correta para guardar as credenciais. Select custom proxy location Selecionar localização do proxy personalizado - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Lamentamos mas, de momento, o KeePassXC-Browser não tem suporte a versões Snap. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - Necessita de KeePassXC-Browser para que a integração com o navegador funcione. <br />Descarregue para %1 e para %2. - &Tor Browser Navegador &Tor @@ -685,6 +609,18 @@ Selecione a base de dados correta para guardar as credenciais. An extra HTTP Basic Auth setting Não pedir permissão para autorização &básica HTTP + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -759,12 +695,20 @@ Moved %2 keys to custom data. KeePassXC: Detetadas definições de integração legada com o navegador - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Detetadas definições de integração legada com o navegador. -Deseja atualizar as definições para a versão mais recente? -Esta atualização é necessária para manter a compatibilidade com o suplemento. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -926,6 +870,10 @@ Esta atualização é necessária para manter a compatibilidade com o suplemento File cannot be written as it is opened in read-only mode. Não é possível escrever no ficheiro porque este foi aberto no modo de leitura. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1681,6 +1629,10 @@ Desativar salvaguardas e tentar novamente? Database was not modified by merge operation. A base de dados não foi alterada pela combinação. + + Shared group... + + EditEntryWidget @@ -2119,6 +2071,22 @@ Por favor utilize %1. Select import/export file Selecione o ficheiro de importação/exportação + + Clear + Limpar + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2592,14 +2560,6 @@ Esta ação pode implicar um funcionamento errático. [vazia] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3194,6 +3154,22 @@ Linha %2, coluna %3 Synchronize with Sincronizar com + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3844,10 +3820,6 @@ Pode encontrar erros graves e esta versão não deve ser utilizada em ambientes <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>A palavra-passe é o método primário para proteger a sua base de dados.</p><p>As boas palavras-passe são extensão e únicas. O KeePassXC pode gerar uma palavra-passe por si.</p> - - Password cannot be empty. - Palavra-passe não pode ser vazia. - Passwords do not match. Disparidade nas palavras-passe. @@ -4884,6 +4856,10 @@ Comandos disponíveis: Database password: Palavra-passe da base de dados: + + Cannot create new group + + QtIOCompressor @@ -5157,9 +5133,8 @@ Comandos disponíveis: O certificado exportado não é o que está a ser utilizado. Deseja exportar o certificado atual? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5176,10 +5151,6 @@ Comandos disponíveis: Import from container with certificate Importar de um contentor com certificado - - Do you want to trust %1 with the fingerprint of %2 from %3 - Quer confiar %1 com a impressão digital de %2 de %3 - Not this time Agora não @@ -5256,14 +5227,6 @@ Comandos disponíveis: Could not write export container (%1) Não foi possível escrever contentor de exportação (%1) - - Could not embed signature (%1) - Não foi possível incorporar a assinatura (%1) - - - Could not embed database (%1) - Não foi possível incorporar a base de dados (%1) - Overwriting unsigned share container is not supported - export prevented A substituição de contentor de partilha assinado não é suportada - exportação evitada @@ -5288,6 +5251,34 @@ Comandos disponíveis: Export to %1 Exportar para %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + Deseja confiar em %1 com a impressão digital de %2 em %3? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_pt_BR.ts b/share/translations/keepassx_pt_BR.ts index fa7b5ee51..3199b21e0 100644 --- a/share/translations/keepassx_pt_BR.ts +++ b/share/translations/keepassx_pt_BR.ts @@ -37,30 +37,6 @@ Copy to clipboard Copiar para a área de transferência - - Revision: %1 - Revisão: %1 - - - Distribution: %1 - Distribuição: %1 - - - Libraries: - Bibliotecas: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Sistema operacional: %1 -Arquitetura da CPU: %2 -Kernel: %3 %4 - - - Enabled extensions: - Extensões habilitadas: - Project Maintainers: Mantedores do Projeto: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. A equipe KeePassXC agradece especialmente a debfx pela criação do KeePassX original. - - Version %1 - Versão %1 - - - Build Type: %1 - Tipo da Build: %1 - - - Auto-Type - Autodigitação - - - Browser Integration - Integração com o Navegador - - - SSH Agent - Agente SSH - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Nada - - - KeeShare (signed and unsigned sharing) - KeeShare (compartilhamento assinado e não assinado) - - - KeeShare (only signed sharing) - KeeShare (somente compartilhamento assinado) - - - KeeShare (only unsigned sharing) - KeeShare (apenas compartilhamento não assinado) - AgentSettingsWidget @@ -353,7 +285,7 @@ Kernel: %3 %4 Forget TouchID when session is locked or lid is closed - + Esqueça o TouchID quando a sessão está bloqueada ou a tampa está fechada Lock databases after minimizing the window @@ -373,7 +305,7 @@ Kernel: %3 %4 Don't use placeholder for empty password fields - + Não use espaço reservado para campos de senha vazios Hide passwords in the entry preview panel @@ -389,7 +321,7 @@ Kernel: %3 %4 Use DuckDuckGo as fallback for downloading website icons - + Use DuckDuckGo como substituto para baixar ícones de sites @@ -656,21 +588,13 @@ Por favor, selecione o banco de dados correto para salvar as credenciais.Select custom proxy location Selecione localização para o proxy - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Desculpe, o KeePassXC-Browser não é suportado em versões Snap no momento. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser é necessário para que a integração do navegador funcione. <br />Faça o download de %1 e %2. - &Tor Browser &Navegador Tor <b>Warning</b>, the keepassxc-proxy application was not found!<br />Please check the KeePassXC installation directory or confirm the custom path in advanced options.<br />Browser integration WILL NOT WORK without the proxy application.<br />Expected Path: - + <b>Alerta</b>, o aplicativo keepassxc-proxy não foi encontrado!<br />Por favor, verifique o diretório de instalação do KeePassXC ou confirme o caminho personalizado nas opções avançadas.<br />A integração do navegador não funcionará sem o aplicativo proxy.<br />Caminho esperado: Executable Files @@ -685,6 +609,18 @@ Por favor, selecione o banco de dados correto para salvar as credenciais.An extra HTTP Basic Auth setting Não pedir permissão para HTTP &Basic Auth + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -738,11 +674,12 @@ Você deseja sobrescreve-la? Successfully converted attributes from %1 entry(s). Moved %2 keys to custom data. - + Atributos convertidos com sucesso de %1 entrada(s). +Movido %2 chaves para dados personalizados. Successfully moved %n keys to custom data. - + Movido com sucesso %n chaves para dados personalizados.Movido com sucesso %n chaves para dados personalizados. KeePassXC: No entry with KeePassHTTP attributes found! @@ -757,12 +694,20 @@ Moved %2 keys to custom data. KeePassXC: Configurações de integração do navegador herdado detectadas - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - As configurações de integração do navegador legadas foram detectadas. -Você quer atualizar as configurações para o padrão mais recente? -Isso é necessário para manter a compatibilidade com o plugin do navegador. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -914,7 +859,7 @@ Isso é necessário para manter a compatibilidade com o plugin do navegador. Error while reading the database: %1 - + Erro ao ler o banco de dados: %1 Could not save, database has no file name. @@ -922,6 +867,10 @@ Isso é necessário para manter a compatibilidade com o plugin do navegador. File cannot be written as it is opened in read-only mode. + O arquivo não pode ser gravado, pois é aberto no modo somente leitura. + + + Key not transformed. This is a bug, please report it to the developers! @@ -1071,7 +1020,8 @@ Por favor, considere-se gerar um novo arquivo de chave. Do you really want to delete the selected key? This may prevent connection to the browser plugin. - + Você realmente deseja excluir a chave selecionada? +Isso pode impedir a conexão com o plugin do navegador. Key @@ -1101,7 +1051,7 @@ Isso pode impedir a conexão com o plugin do navegador. No shared encryption keys found in KeePassXC settings. - + Nenhuma chave de criptografia compartilhada encontrada nas configurações do KeePassXC. KeePassXC: Removed keys from database @@ -1673,6 +1623,10 @@ Deseja desabilitar salvamento seguro e tentar novamente? Database was not modified by merge operation. Banco de dados não foi modificado pela operação de mesclagem. + + Shared group... + + EditEntryWidget @@ -2110,6 +2064,22 @@ Deseja desabilitar salvamento seguro e tentar novamente? Select import/export file Selecione o arquivo de importação/exportação + + Clear + Limpar + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2581,14 +2551,6 @@ Isto pode causar mal funcionamento dos plugins afetados. [vazio] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -2867,7 +2829,7 @@ Isto é uma migração de caminho único. Você não poderá abrir o banco de da Failed to read database file. - + Falha ao ler o arquivo de banco de dados. @@ -3183,6 +3145,22 @@ Linha %2, coluna %3 Synchronize with Sincronizar com + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3459,7 +3437,8 @@ Esta versão não se destina ao uso em produção. WARNING: Your Qt version may cause KeePassXC to crash with an On-Screen Keyboard! We recommend you use the AppImage available on our downloads page. - + AVISO: Sua versão do Qt pode fazer com que o KeePassXC trave com um teclado na tela! +Recomendamos que você use o AppImage disponível em nossa página de downloads. &Import @@ -3535,11 +3514,11 @@ We recommend you use the AppImage available on our downloads page. KeePass 1 database... - + Banco de dados do KeePass 1... Import a KeePass 1 database - + Importar banco de dados do KeePass 1 CSV file... @@ -3555,7 +3534,7 @@ We recommend you use the AppImage available on our downloads page. Show TOTP QR Code... - + Exibir Código QR do TOTP... Check for Updates... @@ -3568,7 +3547,8 @@ We recommend you use the AppImage available on our downloads page. NOTE: You are using a pre-release version of KeePassXC! Expect some bugs and minor issues, this version is not meant for production use. - + NOTA: Você está usando uma versão de pré-lançamento do KeePassXC! +Espere alguns bugs e problemas menores, esta versão não é para uso em produção. Check for updates on startup? @@ -3599,7 +3579,7 @@ Expect some bugs and minor issues, this version is not meant for production use. older entry merged from database "%1" - + entrada mais antiga mesclada do banco de dados "%1" Adding backup for older target %1 [%2] @@ -3623,7 +3603,7 @@ Expect some bugs and minor issues, this version is not meant for production use. Synchronizing from older source %1 [%2] - + Sincronizando a partir da fonte antiga %1 [%2] Deleting child %1 [%2] @@ -3827,10 +3807,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - Senha não pode estar vazia. - Passwords do not match. Senha não corresponde. @@ -4041,7 +4017,7 @@ Expect some bugs and minor issues, this version is not meant for production use. Character set to exclude from generated password - + Conjunto de caracteres para excluir da senha gerada Do not include: @@ -4439,7 +4415,7 @@ Comandos disponíveis: Enter password for new entry: - + Digite a senha para a nova entrada: Writing the database failed %1. @@ -4455,11 +4431,11 @@ Comandos disponíveis: Invalid timeout value %1. - + Valor de tempo limite inválido %1. Entry %1 not found. - + Entrada%1 não encontrada. Entry with path %1 has no TOTP set up. @@ -4483,7 +4459,7 @@ Comandos disponíveis: Silence password prompt and other secondary outputs. - + Pergunta por senha em silêncio e outras saídas secundárias. count @@ -4492,7 +4468,7 @@ Comandos disponíveis: Invalid value for password length: %1 - + Valor inválido para o tamanho da senha: %1 Could not find entry with path %1. @@ -4504,7 +4480,7 @@ Comandos disponíveis: Enter new password for entry: - + Digite uma nova senha para entrada: Writing the database failed: %1 @@ -4512,7 +4488,7 @@ Comandos disponíveis: Successfully edited entry %1. - + Entrada editada com sucesso %1. Length %1 @@ -4608,7 +4584,7 @@ Comandos disponíveis: Entropy %1 (%2) - + Entropia %1 (%2) *** Password length (%1) != sum of length of parts (%2) *** @@ -4658,7 +4634,7 @@ Comandos disponíveis: Use extended ASCII - + Use estendido ASCII Exclude character set @@ -4678,7 +4654,7 @@ Comandos disponíveis: Recursively list the elements of the group. - + Listar recursivamente os elementos do grupo. Cannot find group %1. @@ -4723,7 +4699,7 @@ Comandos disponíveis: file empty - + arquivo vazio %1: (row, col) %2,%3 @@ -4769,11 +4745,11 @@ Comandos disponíveis: No groups found - + Nenhum grupo encontrado Create a new database. - + Criar um novo banco de dados. File %1 already exists. @@ -4781,7 +4757,7 @@ Comandos disponíveis: Loading the key file failed - + O carregamento do arquivo de chave falhou No key is set. Aborting database creation. @@ -4789,7 +4765,7 @@ Comandos disponíveis: Failed to save the database: %1. - + Falha ao salvar o banco de dados: %1. Successfully created new database. @@ -4863,6 +4839,10 @@ Comandos disponíveis: Database password: Senha do banco de dados: + + Cannot create new group + + QtIOCompressor @@ -4910,7 +4890,7 @@ Comandos disponíveis: No agent running, cannot add identity. - + Nenhum agente em execução, não é possível adicionar identidade. No agent running, cannot remove identity. @@ -4953,11 +4933,11 @@ Comandos disponíveis: exclude term from results - + excluir termo dos resultados match term exactly - + encontrar termo exato use regex in term @@ -5136,9 +5116,8 @@ Comandos disponíveis: O certificado exportado não é o mesmo que está em uso. Você quer exportar o certificado atual? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5155,10 +5134,6 @@ Comandos disponíveis: Import from container with certificate Importar do contêiner com certificado - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time Não dessa vez @@ -5193,19 +5168,19 @@ Comandos disponíveis: File is not readable - + Arquivo não é legível Invalid sharing container - + Contêiner de compartilhamento inválido Untrusted import prevented - + Importação não confiável impedida Successful signed import - + Importação assinada bem-sucedida Unexpected error @@ -5235,21 +5210,13 @@ Comandos disponíveis: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented - + A substituição de contêiner de compartilhamento não assinado não é suportada - exportação impedida Could not write export container - + Não foi possível escrever o contêiner de exportação Unexpected export error occurred @@ -5267,6 +5234,34 @@ Comandos disponíveis: Export to %1 Exportar para %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog @@ -5284,7 +5279,7 @@ Comandos disponíveis: Expires in <b>%n</b> second(s) - + Expira em <b>%n</b> segundo(s)Expira em <b>%n</b> segundo(s) @@ -5296,11 +5291,11 @@ Comandos disponíveis: NOTE: These TOTP settings are custom and may not work with other authenticators. TOTP QR code dialog warning - + NOTA: Essas configurações de TOTP são personalizadas e podem não funcionar com outros autenticadores. There was an error creating the QR code. - + Ocorreu um erro ao criar o código QR. Closing in %1 seconds. diff --git a/share/translations/keepassx_pt_PT.ts b/share/translations/keepassx_pt_PT.ts index ae35aa8cc..5e2014fc8 100644 --- a/share/translations/keepassx_pt_PT.ts +++ b/share/translations/keepassx_pt_PT.ts @@ -37,30 +37,6 @@ Copy to clipboard Copiar para a área de transferência - - Revision: %1 - Revisão: %1 - - - Distribution: %1 - Distribuição: %1 - - - Libraries: - Bibliotecas: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Sistema operativo: %1 -Arquitetura do CPU: %2 -Kernel: %3 %4 - - - Enabled extensions: - Extensões ativas: - Project Maintainers: Manutenção do projeto: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Um agradecimento especial da equipa KeePassXC a debfx por ter criado a aplicação KeePassX. - - Version %1 - Versão %1 - - - Build Type: %1 - Tipo de compilação: %1 - - - Auto-Type - Escrita automática - - - Browser Integration - Integração com o navegador - - - SSH Agent - Agente SSH - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Nada - - - KeeShare (signed and unsigned sharing) - KeeShare (partilha assinada e não assinada) - - - KeeShare (only signed sharing) - KeeShare (apenas partilha assinada) - - - KeeShare (only unsigned sharing) - KeeShare (apenas partilha não assinada) - AgentSettingsWidget @@ -656,14 +588,6 @@ Selecione a base de dados correta para guardar as credenciais. Select custom proxy location Selecionar localização do proxy personalizado - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Lamentamos mas, de momento, o KeePassXC-Browser não tem suporte a versões Snap. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - Necessita de KeePassXC-Browser para que a integração com o navegador funcione. <br />Descarregue para %1 e para %2. - &Tor Browser Navegador &Tor @@ -685,6 +609,18 @@ Selecione a base de dados correta para guardar as credenciais. An extra HTTP Basic Auth setting Não pedir permissão para autorização &básica HTTP + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -759,12 +695,20 @@ Moved %2 keys to custom data. KeePassXC: Detetadas definições de integração legada com o navegador - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Detetadas definições de integração legada com o navegador. -Deseja atualizar as definições para a versão mais recente? -Esta atualização é necessária para manter a compatibilidade com o suplemento. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -926,6 +870,10 @@ Esta atualização é necessária para manter a compatibilidade com o suplemento File cannot be written as it is opened in read-only mode. Não é possível escrever no ficheiro porque este foi aberto no modo de leitura. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1507,7 +1455,7 @@ Existe aqui um erro que deve ser reportado aos programadores. DatabaseWidget Searching... - Pesquisar.. + Pesquisar... Do you really want to delete the entry "%1" for good? @@ -1681,6 +1629,10 @@ Desativar salvaguardas e tentar novamente? Database was not modified by merge operation. A base de dados não foi modificada pela combinação. + + Shared group... + + EditEntryWidget @@ -2119,6 +2071,22 @@ Por favor utilize %1. Select import/export file Selecione o ficheiro de importação/exportação + + Clear + Limpar + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2592,14 +2560,6 @@ Esta ação pode implicar um funcionamento errático. [vazia] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3194,6 +3154,22 @@ Linha %2, coluna %3 Synchronize with Sincronizar com + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3231,7 +3207,7 @@ Linha %2, coluna %3 %1 set, click to change or remove Change or remove a key component - %1 definido, clique para alterar ou remover + %1 definida, clique para alterar ou remover @@ -3250,7 +3226,7 @@ Linha %2, coluna %3 <p>You can add a key file containing random bytes for additional security.</p><p>You must keep it secret and never lose it or you will be locked out!</p> - <p>Para mais segurança, pode adicionar um ficheiro-chave que contenha dados aleatórios.</p><p>Tem que o manter secreto e não o pode perder pois se o fizer não mais poderá abrir a base de dados.</p> + <p>Para mais segurança, pode adicionar um ficheiro-chave que contenha dados aleatórios.</p><p>Tem de o manter secreto e não o pode perder pois se tal acontecer, nunca mais conseguirá abrir a base de dados.</p> Legacy key file format @@ -3844,10 +3820,6 @@ Pode encontrar erros graves e esta versão não deve ser utilizada em ambientes <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>A palavra-passe é o método primário para proteger a sua base de dados.</p><p>As boas palavras-passe são extensão e únicas. O KeePassXC pode gerar uma palavra-passe por si.</p> - - Password cannot be empty. - Palavra-passe não pode ser vazia. - Passwords do not match. Disparidade nas palavras-passe. @@ -4884,6 +4856,10 @@ Comandos disponíveis: Database password: Palavra-passe da base de dados: + + Cannot create new group + + QtIOCompressor @@ -5157,9 +5133,8 @@ Comandos disponíveis: O certificado exportado não é o que está a ser utilizado. Deseja exportar o certificado atual? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5176,10 +5151,6 @@ Comandos disponíveis: Import from container with certificate Importar de um contentor com certificado - - Do you want to trust %1 with the fingerprint of %2 from %3 - Quer confiar %1 com a impressão digital de %2 de %3 - Not this time Agora não @@ -5256,14 +5227,6 @@ Comandos disponíveis: Could not write export container (%1) Não foi possível escrever contentor de exportação (%1) - - Could not embed signature (%1) - Não foi possível incorporar a assinatura (%1) - - - Could not embed database (%1) - Não foi possível incorporar a base de dados (%1) - Overwriting unsigned share container is not supported - export prevented A substituição de contentor de partilha assinado não é suportada - exportação evitada @@ -5288,6 +5251,34 @@ Comandos disponíveis: Export to %1 Exportar para %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + Deseja confiar em %1 com a impressão digital de %2 em %3? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog @@ -5474,7 +5465,7 @@ Comandos disponíveis: <p>If you own a <a href="https://www.yubico.com/">YubiKey</a>, you can use it for additional security.</p><p>The YubiKey requires one of its slots to be programmed as <a href="https://www.yubico.com/products/services-software/personalization-tools/challenge-response/">HMAC-SHA1 Challenge-Response</a>.</p> - <p>Se você tiver uma <a href="https://www.yubico.com/">YubiKey</a>, pode utiliza-la para obter mais segurança.</p><p>A YubiKey requer que uma das suas ranhuras seja programada como uma <a href="https://www.yubico.com/products/services-software/personalization-tools/challenge-response/">HMAC-SHA1 Challenge-Response</a>.</p> + <p>Se tiver uma <a href="https://www.yubico.com/">YubiKey</a>, pode utilizá-la para obter mais segurança.</p><p>A YubiKey requer que uma das suas ranhuras seja programada como uma <a href="https://www.yubico.com/products/services-software/personalization-tools/challenge-response/">HMAC-SHA1 Challenge-Response</a>.</p> No YubiKey detected, please ensure it's plugged in. diff --git a/share/translations/keepassx_ru.ts b/share/translations/keepassx_ru.ts index 402f235ac..10b78f00d 100644 --- a/share/translations/keepassx_ru.ts +++ b/share/translations/keepassx_ru.ts @@ -37,30 +37,6 @@ Copy to clipboard Скопировать в буфер обмена - - Revision: %1 - Ревизия: %1 - - - Distribution: %1 - Дистрибутив: %1 - - - Libraries: - Библиотеки: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Операционная система: %1 -Архитектура ЦП: %2 -Ядро: %3 %4 - - - Enabled extensions: - Включённые расширения: - Project Maintainers: Проект сопровождают: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Команда KeePassXC выражает особую благодарность debfx за создание оригинального KeePassX. - - Version %1 - Версия %1 - - - Build Type: %1 - Тип сборки: %1 - - - Auto-Type - Автоввод - - - Browser Integration - Интеграция с браузером - - - SSH Agent - SSH-агент - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Нет - - - KeeShare (signed and unsigned sharing) - KeeShare (доступ с использованием подписей и без) - - - KeeShare (only signed sharing) - KeeShare (доступ только с использованием подписи) - - - KeeShare (only unsigned sharing) - KeeShare (доступ только без использованием подписи) - AgentSettingsWidget @@ -656,14 +588,6 @@ Please select the correct database for saving credentials. Select custom proxy location Выбрать другое расположение прокси - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - KeePassXC-Browser сейчас не поддерживается для выпусков Snap. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Browser необходим для интеграции браузера. <br /> Cкачайте его для %1 и %2. - &Tor Browser &Tor Browser @@ -685,6 +609,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting Не спрашивать разрешения для HTTP и Basic авторизации + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -759,12 +695,20 @@ Moved %2 keys to custom data. KeePassXC: Устаревшая интеграция с браузером обнаружена - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Параметры устаревшей интеграции с браузерами были обнаружены. Вы хотите обновить параметры до нового стандарта? - -Это необходимо для сохранения совместимости с плагином для браузера. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -925,6 +869,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. Файл не может быть перезаписан, т.к. он открыт в режиме "только для чтения". + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -957,7 +905,7 @@ This is necessary to maintain compatibility with the browser plugin. Challenge Response: - Ответ на вызов: + Вызов-ответ: Legacy key file format @@ -1657,7 +1605,7 @@ Disable safe saves and try again? Entry "%1" has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway? - + Запись "%1" имеет %2 ссылку. Вы хотите переписать ссылки значениями, пропустить эту запись или удалить в любом случае?Запись "%1" имеет %2 ссылки. Вы хотите переписать ссылки значениями, пропустить эту запись или удалить в любом случае?Запись "%1" имеет %2 ссылок. Вы хотите переписать ссылки значениями, пропустить эту запись или удалить в любом случае?Запись "%1" имеет %2 ссылку(ки, ок). Вы хотите переписать ссылки значениями, пропустить эту запись или удалить в любом случае? Delete group @@ -1679,6 +1627,10 @@ Disable safe saves and try again? Database was not modified by merge operation. База данных не была изменена операцией слияния. + + Shared group... + + EditEntryWidget @@ -2116,6 +2068,22 @@ Disable safe saves and try again? Select import/export file Выберите файл для импорта/экспорта + + Clear + Очистить + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2196,7 +2164,7 @@ Disable safe saves and try again? Hint: You can enable DuckDuckGo as a fallback under Tools>Settings>Security - + Совет: Вы можете включить DuckDuckGo в качестве резерва в "Инструменты>Настройки>Безопасность" Select Image(s) @@ -2204,7 +2172,7 @@ Disable safe saves and try again? Successfully loaded %1 of %n icon(s) - + Успешно загружено %1 из %n иконкиУспешно загружено %1 из %n иконокУспешно загружено %1 из %n иконокУспешно загружено %1 из %n иконки(ок) No icons were loaded @@ -2220,7 +2188,7 @@ Disable safe saves and try again? This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it? - + Эта иконка используется %n записью и будет замещена иконкой по умолчанию. Вы уверены, что хотите удалить её?Эта иконка используется %n записями и будет замещена иконкой по умолчанию. Вы уверены, что хотите удалить её?Эта иконка используется %n записями и будет замещена иконкой по умолчанию. Вы уверены, что хотите удалить её?Эта иконка используется %n записью(ями) и будет замещена иконкой по умолчанию. Вы уверены, что хотите удалить её? @@ -2590,14 +2558,6 @@ This may cause the affected plugins to malfunction. [пустой] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -2868,7 +2828,7 @@ This is a one-way migration. You won't be able to open the imported databas Invalid cipher uuid length: %1 (length=%2) - + Неверная длина UUID шифра: %1 (длина=%2) Unable to parse UUID: %1 @@ -3171,7 +3131,7 @@ Line %2, column %3 unable to seek to content position - + не удалось переместиться к позиции содержимого @@ -3192,6 +3152,22 @@ Line %2, column %3 Synchronize with Синхронизировать с + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3248,7 +3224,7 @@ Line %2, column %3 <p>You can add a key file containing random bytes for additional security.</p><p>You must keep it secret and never lose it or you will be locked out!</p> - + <p>Вы можете добавить ключевой файл, содержащий случайные байты, для дополнительной безопасности.</p><p>Вы должны хранить его в секрете и никогда не терять, или Вы будете заблокированы!</p> Legacy key file format @@ -3259,12 +3235,15 @@ Line %2, column %3 unsupported in the future. Please go to the master key settings and generate a new key file. - + Вы используете устаревший формат файла-ключа, который может стать не поддерживаемым в будущем. + +Пожалуйста, сходите в настройки мастер ключа и сгенерируйте новый файл-ключ. Error loading the key file '%1' Message: %2 - + Ошибка загрузки ключевого файла '%1' +Сообщение: %2 Key files @@ -3299,7 +3278,7 @@ Message: %2 &Recent databases - &Недавние базы данных + Н&едавние базы данных &Help @@ -3319,7 +3298,7 @@ Message: %2 &Quit - В&ыход + &Выход &About @@ -3351,7 +3330,7 @@ Message: %2 Sa&ve database as... - &Сохранить базу данных как... + Со&хранить базу данных как... Database settings @@ -3473,19 +3452,19 @@ We recommend you use the AppImage available on our downloads page. &Import - &Import + &Импорт Copy att&ribute... - Копирование атрибутов... + Скопировать ат&рибут... TOTP... - TOTP... + &TOTP... &New database... - + &Новая база данных... Create a new database @@ -3493,15 +3472,15 @@ We recommend you use the AppImage available on our downloads page. &Merge from database... - + Сое&динить с другой базой данных... Merge from another KDBX database - + Соединить с другой базой данных KDBX &New entry - + &Новая запись Add a new entry @@ -3509,7 +3488,7 @@ We recommend you use the AppImage available on our downloads page. &Edit entry - + &Править запись View or edit entry @@ -3517,7 +3496,7 @@ We recommend you use the AppImage available on our downloads page. &New group - + &Новая группа Add a new group @@ -3529,15 +3508,15 @@ We recommend you use the AppImage available on our downloads page. &Database settings... - + &Параметры базы данных... Copy &password - Скпировать &пароль + Скопировать п&ароль Perform &Auto-Type - + Осуществить а&втоввод Open &URL @@ -3598,66 +3577,66 @@ Expect some bugs and minor issues, this version is not meant for production use. Merger Creating missing %1 [%2] - + Создание отсутствующей %1 [%2] Relocating %1 [%2] - + Перемещение %1 [%2] Overwriting %1 [%2] - + Перезапись %1 [%2] older entry merged from database "%1" - + более старая запись присоединена из базы данных "%1" Adding backup for older target %1 [%2] - + Добавление резервной копии для более старой мишени %1 [%2] Adding backup for older source %1 [%2] - + Добавление резервной копии для более старого источника %1 [%2] Reapplying older target entry on top of newer source %1 [%2] - + Повторное применение более старой целевой записи поверх более нового источника %1 [%2] Reapplying older source entry on top of newer target %1 [%2] - + Повторное применение более старой исходной записи поверх более новой мишени %1 [%2] Synchronizing from newer source %1 [%2] - + Синхронизация с более новым источником %1 [%2] Synchronizing from older source %1 [%2] - + Синхронизация с более старым источником %1 [%2] Deleting child %1 [%2] - + Удаление дочерней %1 [%2] Deleting orphan %1 [%2] - + Удаление заброшенной %1 [%2] Changed deleted objects - + Изменены удалённые объекты Adding missing icon %1 - + Добавление отсутствующей иконки %1 NewDatabaseWizard Create a new KeePassXC database... - + Создать новую базу данных KeePassXC Root @@ -3669,15 +3648,15 @@ Expect some bugs and minor issues, this version is not meant for production use. NewDatabaseWizardPage WizardPage - + СтраницаМастера En&cryption Settings - + Настройки шифрования Here you can adjust the database encryption settings. Don't worry, you can change them later in the database settings. - + Здесь Вы можете отрегулировать настройки шифрования базы данных. Не беспокойтесь, вы сможете изменить их позже в настройках базы данных. Advanced Settings @@ -3685,7 +3664,7 @@ Expect some bugs and minor issues, this version is not meant for production use. Simple Settings - + Простые настройки @@ -3696,25 +3675,25 @@ Expect some bugs and minor issues, this version is not meant for production use. Here you can adjust the database encryption settings. Don't worry, you can change them later in the database settings. - + Здесь Вы можете отрегулировать настройки шифрования базы данных. Не беспокойтесь, вы сможете изменить их позже в настройках базы данных. NewDatabaseWizardPageMasterKey Database Master Key - + Мастер-ключ базы данных A master key known only to you protects your database. - + Мастер-ключ, известный только Вам, защищает Вашу базу данных. NewDatabaseWizardPageMetaData General Database Information - + Общая информация о базе данных Please fill in the display name and an optional description for your new database: @@ -3828,7 +3807,7 @@ Expect some bugs and minor issues, this version is not meant for production use. Confirm password: - + Подтвердите пароль: Password @@ -3838,10 +3817,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>Пароль - первичный метод защиты Вашей базы данных.</p><p>Хорошие пароли длинные и уникальные. KeePassXC может сгенерировать его для Вас.</p> - - Password cannot be empty. - Пароль не может быть пустым. - Passwords do not match. Пароли не совпадают. @@ -4020,7 +3995,7 @@ Expect some bugs and minor issues, this version is not meant for production use. Math - + Математические <*+!?= @@ -4060,7 +4035,7 @@ Expect some bugs and minor issues, this version is not meant for production use. Add non-hex letters to "do not include" list - + Добавить не шестнадцатеричные буквы к списку "не включать" Hex @@ -4072,7 +4047,7 @@ Expect some bugs and minor issues, this version is not meant for production use. Word Co&unt: - + Количество слов: Regenerate @@ -4447,7 +4422,7 @@ Available commands: Could not create entry with path %1. - + Не удалось создать запись с путём %1. Enter password for new entry: @@ -4463,11 +4438,11 @@ Available commands: Copy the current TOTP to the clipboard. - + Скопировать текущий TOTP в буфер обмена. Invalid timeout value %1. - + Неверное значение времени ожидания %1. Entry %1 not found. @@ -4475,7 +4450,7 @@ Available commands: Entry with path %1 has no TOTP set up. - + У записи с путём %1 не настроен TOTP. Entry's current TOTP copied to the clipboard! @@ -4487,7 +4462,7 @@ Available commands: Clearing the clipboard in %1 second(s)... - + Очищение буфера обмена через %1 секунду...Очищение буфера обмена через %1 секунды..Очищение буфера обмена через %1 секунд...Очищение буфера обмена через %1 секунд(у, ы)... Clipboard cleared! @@ -4495,7 +4470,7 @@ Available commands: Silence password prompt and other secondary outputs. - + Заглушить запрос пароля и другие второстепенные выводы. count @@ -4512,7 +4487,7 @@ Available commands: Not changing any field for entry %1. - + Не меняются какие-либо поля для записи %1. Enter new password for entry: @@ -4536,11 +4511,11 @@ Available commands: Log10 %1 - + Log10 %1 Multi-word extra bits %1 - + Дополнительные биты мультислова %1 Type: Bruteforce @@ -4624,7 +4599,7 @@ Available commands: *** Password length (%1) != sum of length of parts (%2) *** - + *** Длина пароля (%1) != сумма длин частей (%2) *** Failed to load key file %1: %2 @@ -4701,7 +4676,8 @@ Available commands: Error reading merge file: %1 - + Ошибка при чтении файла слияния: +%1 Unable to save database to file : %1 @@ -4729,7 +4705,7 @@ Available commands: No program defined for clipboard manipulation - + Не задана программа для манипуляции буфером обмена Unable to start program %1 @@ -4815,11 +4791,11 @@ Available commands: Creating KeyFile %1 failed: %2 - + Создание ключевого файла %1 не удалось: %2 Loading KeyFile %1 failed: %2 - + Загрузка ключевого файла %1 не удалась: %2 Remove an entry from the database. @@ -4877,6 +4853,10 @@ Available commands: Database password: Пароль базы данных: + + Cannot create new group + + QtIOCompressor @@ -4951,15 +4931,15 @@ Available commands: SearchHelpWidget Search Help - + Искать в справке Search terms are as follows: [modifiers][field:]["]term["] - + Поисковые выражения выглядят следующим образом: [модификаторы][поле:]["]выражение["] Every search term must match (ie, logical AND) - + Каждое поисковое выражение должно иметь соответствие (т.е. логическое И) Modifiers @@ -4967,15 +4947,15 @@ Available commands: exclude term from results - + исключить выражение из результатов match term exactly - + соответствовать выражению в точности use regex in term - + использовать регулярные выражения в поисковых Fields @@ -4983,19 +4963,19 @@ Available commands: Term Wildcards - + Шаблоны для выражений match anything - + соответствие всему match one - + соответствие одному logical OR - + логическое ИЛИ Examples @@ -5018,12 +4998,12 @@ Available commands: Search Help - + Искать в справке Search (%1)... Search placeholder text, %1 is the keyboard shortcut - + Поиск (%1)... Case sensitive @@ -5034,23 +5014,23 @@ Available commands: SettingsWidgetKeeShare Active - + Активный Allow export - + Разрешить экспорт Allow import - + Разрешить импорт Own certificate - + Собственный сертификат Fingerprint: - + Отпечаток: Certificate: @@ -5058,7 +5038,7 @@ Available commands: Signer - + Подписчик Key: @@ -5070,27 +5050,27 @@ Available commands: Import - Импорт + Импортировать Export - + Экспортировать Imported certificates - + Импортированные сертификаты Trust - + Доверять Ask - + Запросить Untrust - + Не доверять Remove @@ -5114,24 +5094,24 @@ Available commands: Trusted - + Надёжный Untrusted - + Ненадёжный Unknown - + Неизвестен key.share Filetype for KeeShare key - + key.share KeeShare key file - + Ключевой файл KeeShare All files @@ -5139,19 +5119,18 @@ Available commands: Select path - + Выберите путь Exporting changed certificate - + Экспортирование изменённого сертификата The exported certificate is not the same as the one in use. Do you want to export the current certificate? - + Экспортированный сертификат не такой же, как сертификат, который используется. Вы хотите экспортировать текущий сертификат? - %1.%2 - Template for KeeShare key file + Signer: @@ -5159,19 +5138,15 @@ Available commands: ShareObserver Import from container without signature - + Импортировать из контейнера без подписи We cannot verify the source of the shared container because it is not signed. Do you really want to import from %1? - + Мы не можем проверить источник коллективного контейнера, потому что он не подписан. Вы действительно хотите импортировать из %1? Import from container with certificate - - - - Do you want to trust %1 with the fingerprint of %2 from %3 - + Импортировать из контейнера с сертификатом Not this time @@ -5191,11 +5166,11 @@ Available commands: Import from %1 failed (%2) - + Импорт из %1 не удался (%2) Import from %1 successful (%2) - + Импорт из %1 успешен (%2) Imported from %1 @@ -5249,14 +5224,6 @@ Available commands: Could not write export container (%1) Не удалось записать Экспорт контейнера (%1) - - Could not embed signature (%1) - Не удалось вставить подпись (%1) - - - Could not embed database (%1) - Не удалось встроить базу данных (%1) - Overwriting unsigned share container is not supported - export prevented Перезапись неподписанного общего ресурса не поддерживается - экспорт запрещен @@ -5281,6 +5248,34 @@ Available commands: Export to %1 Экспорт в %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + Вы хотите довериться %1 с отпечатком %2 из %3? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog @@ -5467,7 +5462,7 @@ Available commands: <p>If you own a <a href="https://www.yubico.com/">YubiKey</a>, you can use it for additional security.</p><p>The YubiKey requires one of its slots to be programmed as <a href="https://www.yubico.com/products/services-software/personalization-tools/challenge-response/">HMAC-SHA1 Challenge-Response</a>.</p> - + <p>Если Вы владееете <a href="https://www.yubico.com/">YubiKey</a>, Вы можете использовать его для дополнительной безопасности.</p><p>YubiKey требует, чтобы один из его слотов был запрограммирован как <a href="https://www.yubico.com/products/services-software/personalization-tools/challenge-response/"> вызов-ответ HMAC-SHA1</a>.</p> No YubiKey detected, please ensure it's plugged in. diff --git a/share/translations/keepassx_sk.ts b/share/translations/keepassx_sk.ts index aede0b820..450f50f42 100644 --- a/share/translations/keepassx_sk.ts +++ b/share/translations/keepassx_sk.ts @@ -37,30 +37,6 @@ Copy to clipboard Kopírovať do schránky - - Revision: %1 - Revízia %1 - - - Distribution: %1 - Distribúcia %1 - - - Libraries: - Knižnice: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Operačný systém: %1 -Architektúra CPU: %2 -Jadro: %3 %4 - - - Enabled extensions: - Zapnuté rozšírenia: - Project Maintainers: Správcovia projektu: @@ -69,50 +45,6 @@ Jadro: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Špeciálne poďakovanie od tímu KeePassXC patrí debfx za vytvorenie pôvodného KeePassX. - - Version %1 - Verzia %1 - - - Build Type: %1 - Typ zostavenia: %1 - - - Auto-Type - Automatické vypĺňanie - - - Browser Integration - Integrácia prehliadača - - - SSH Agent - Agent SSH - - - YubiKey - YubiKey - - - TouchID - - - - None - Žiadny - - - KeeShare (signed and unsigned sharing) - KeeShare (podpísané a nepodpísané zdieľanie) - - - KeeShare (only signed sharing) - KeeShare (len podpísané zdieľanie) - - - KeeShare (only unsigned sharing) - KeeShare (len nepodpísané zdieľanie) - AgentSettingsWidget @@ -656,14 +588,6 @@ Prosím, vyberte správnu databázu na uloženie prihlasovacích údajov.Select custom proxy location Zvoliť vlastné umiestnenie proxy - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Prepáčte, ale KeePassXC-Prehliadač nie je v súčasnosti podporovaný pre vydania Snap. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - Aby fungovala integrácia do prehliadača, je potrebný KeePassXC-Browser. <br />Stiahnuť pre %1 a %2. - &Tor Browser &Tor Browser @@ -685,6 +609,18 @@ Prosím, vyberte správnu databázu na uloženie prihlasovacích údajov.An extra HTTP Basic Auth setting Nepýtať povolenie na HTTP &Basic Auth + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -758,9 +694,19 @@ Moved %2 keys to custom data. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -922,6 +868,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1667,6 +1617,10 @@ Vypnúť bezpečné ukladanie a skúsiť znova? Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2104,6 +2058,22 @@ Vypnúť bezpečné ukladanie a skúsiť znova? Select import/export file + + Clear + Vymazať + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2575,14 +2545,6 @@ Môže to spôsobiť nefunkčnosť dotknutých zásuvných modulov. - - GroupModel - - %1 - Template for name without annotation - - - HostInstaller @@ -3176,6 +3138,22 @@ Line %2, column %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3821,10 +3799,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - - Passwords do not match. @@ -4858,6 +4832,10 @@ Dostupné príkazy: Database password: Heslo databázy: + + Cannot create new group + + QtIOCompressor @@ -5131,8 +5109,7 @@ Dostupné príkazy: - %1.%2 - Template for KeeShare key file + Signer: @@ -5150,10 +5127,6 @@ Dostupné príkazy: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time @@ -5230,14 +5203,6 @@ Dostupné príkazy: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5262,6 +5227,34 @@ Dostupné príkazy: Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_sv.ts b/share/translations/keepassx_sv.ts index 3d68f366c..ffc647903 100644 --- a/share/translations/keepassx_sv.ts +++ b/share/translations/keepassx_sv.ts @@ -37,30 +37,6 @@ Copy to clipboard Kopiera till urklipp - - Revision: %1 - Ändring: %1 - - - Distribution: %1 - Utdelning: %1 - - - Libraries: - Arkiv: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Operativsystem: %1 -Processorarkitektur: %2 -Kärna: %3 %4 - - - Enabled extensions: - Aktiverade tillägg: - Project Maintainers: Projekt Ansvariga: @@ -69,50 +45,6 @@ Kärna: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Ett särskilt tack från teamet bakom KeePassXC riktas till debfx som skapade den ursprungliga KeePassX. - - Version %1 - Version %1 - - - Build Type: %1 - Build Type: %1 - - - Auto-Type - Autoskriv - - - Browser Integration - Webbläsarintegration - - - SSH Agent - SSH Agent - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Ingen - - - KeeShare (signed and unsigned sharing) - KeeShare (signerad och osignerad delning) - - - KeeShare (only signed sharing) - KeeShare (endast signerad delning) - - - KeeShare (only unsigned sharing) - KeeShare (endast osignerad delning) - AgentSettingsWidget @@ -655,14 +587,6 @@ Please select the correct database for saving credentials. Select custom proxy location Välj en proxy - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Vi ber om ursäkt, KeePassXC-Browser stödjer inte Snap-releaser för tillfället. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - - &Tor Browser &Tor Browser @@ -684,6 +608,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -753,9 +689,19 @@ Moved %2 keys to custom data. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -918,6 +864,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1654,6 +1604,10 @@ Disable safe saves and try again? Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2091,6 +2045,22 @@ Disable safe saves and try again? Select import/export file Välj fil för import/export + + Clear + Rensa + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2560,14 +2530,6 @@ This may cause the affected plugins to malfunction. [tom] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3157,6 +3119,22 @@ Line %2, column %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3799,10 +3777,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - - Passwords do not match. @@ -4832,6 +4806,10 @@ Tillgängliga kommandon: Database password: Databaslösenord: + + Cannot create new group + + QtIOCompressor @@ -5105,8 +5083,7 @@ Tillgängliga kommandon: - %1.%2 - Template for KeeShare key file + Signer: @@ -5124,10 +5101,6 @@ Tillgängliga kommandon: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time Inte denna gång @@ -5204,14 +5177,6 @@ Tillgängliga kommandon: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5236,6 +5201,34 @@ Tillgängliga kommandon: Export to %1 Exportera till %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_tr.ts b/share/translations/keepassx_tr.ts index b1a29e19b..84a331e3d 100644 --- a/share/translations/keepassx_tr.ts +++ b/share/translations/keepassx_tr.ts @@ -37,30 +37,6 @@ Copy to clipboard Panoya kopyala - - Revision: %1 - Düzeltme: %1 - - - Distribution: %1 - Dağıtım: %1 - - - Libraries: - Kütüphaneler: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - İşletim sistemi: %1 -MİB mimarisi: %2 -Çekirdek: %3 %4 - - - Enabled extensions: - Etkin eklentiler: - Project Maintainers: Proje Sahipleri: @@ -69,50 +45,6 @@ MİB mimarisi: %2 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. KeePassXC ekibinden özel teşekkürler, özgün KeePassX'i yaptığı için debfx'e gider. - - Version %1 - Sürüm %1 - - - Build Type: %1 - Yapı: %1 - - - Auto-Type - Oto-Yazım - - - Browser Integration - Tarayıcı Bütünleşmesi - - - SSH Agent - SSH Aracısı - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Yok - - - KeeShare (signed and unsigned sharing) - KeeShare (imzalı ve imzasız paylaşım) - - - KeeShare (only signed sharing) - KeeShare (sadece imzalanmış paylaşım) - - - KeeShare (only unsigned sharing) - KeeShare (sadece imzasız paylaşım) - AgentSettingsWidget @@ -656,14 +588,6 @@ Lütfen kimlik bilgilerini kaydetmek için doğru veritabanını seç.Select custom proxy location Özel proxy konumunu seçin - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Üzgünüz, ancak şu anda Snap yayınları için KeePassXC-Tarayıcı desteklenmiyor. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - KeePassXC-Tarayıcı tarayıcı entegrasyonunun çalışması için gereklidir. <br /> Şunları indirin %1 ve %2. - &Tor Browser &Tor Tarayıcı @@ -685,6 +609,18 @@ Lütfen kimlik bilgilerini kaydetmek için doğru veritabanını seç.An extra HTTP Basic Auth setting HTTP ve Temel Kimlik Doğrulama için izin isteme + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -759,12 +695,20 @@ Moved %2 keys to custom data. KeePassXC: Eski tarayıcı entegrasyon ayarları tespit edildi - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Eski tarayıcı bütünleşmesi ayarları tespit edildi. -Ayarları en son standarda yükseltmek ister misiniz? -Tarayıcı eklentisiyle uyumluluğu korumak için bu gereklidir. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -926,6 +870,10 @@ Tarayıcı eklentisiyle uyumluluğu korumak için bu gereklidir. File cannot be written as it is opened in read-only mode. Dosya salt okunur kipinde açıldığı için yazılamıyor. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1681,6 +1629,10 @@ Güvenli kaydetme devre dışı bırakılsın ve tekrar denensin mi?Database was not modified by merge operation. Veritabanı birleştirme işlemi tarafından değiştirilmedi. + + Shared group... + + EditEntryWidget @@ -2118,6 +2070,22 @@ Güvenli kaydetme devre dışı bırakılsın ve tekrar denensin mi?Select import/export file Aktarma dosyasını seç içe/dışa + + Clear + Temizle + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2592,14 +2560,6 @@ Bu etkilenen eklentilerin bozulmasına neden olabilir. [boş] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3195,6 +3155,22 @@ Satır %2, sütun %3 Synchronize with Şununla eşitle + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3845,10 +3821,6 @@ Bazı hatalar ve küçük sorunlar olabilir, bu sürüm şu an dağıtımda değ <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>Parola, veritabanınızın güvenliğini sağlamak için birincil yöntemdir.</p><p>Güçlü parolalar uzun ve benzersizdir. KeePassXC sizin için bir tane üretebilir.</p> - - Password cannot be empty. - Parola boş olamaz. - Passwords do not match. Parolalar uyuşmuyor. @@ -4885,6 +4857,10 @@ Kullanılabilir komutlar: Database password: Veritabanı parolası: + + Cannot create new group + + QtIOCompressor @@ -5158,9 +5134,8 @@ Kullanılabilir komutlar: Aktarılan sertifika kullanılan sertifika ile aynı değil. Mevcut sertifikayı vermek aktarmak musunuz? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5177,10 +5152,6 @@ Kullanılabilir komutlar: Import from container with certificate Sertifikayı kapsayıcıdan içe aktar - - Do you want to trust %1 with the fingerprint of %2 from %3 - %3' ten %2 parmak iziyle %1 e güveniyor musunuz? - Not this time Bu sefer değil @@ -5257,14 +5228,6 @@ Kullanılabilir komutlar: Could not write export container (%1) Dışa aktarma kapsayıcısı (%1) yazılamadı - - Could not embed signature (%1) - İmza gömülemedi (%1) - - - Could not embed database (%1) - Veritabanı gömülemedi (%1) - Overwriting unsigned share container is not supported - export prevented İmzalanmamış paylaşım kapsayıcısının üzerine yazma desteklenmiyor -dışa aktarma engellendi @@ -5289,6 +5252,34 @@ Kullanılabilir komutlar: Export to %1 %1'e aktar + + Do you want to trust %1 with the fingerprint of %2 from %3? + %3'ten %2 parmak izi ile %1'e güvenmek ister misiniz? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_uk.ts b/share/translations/keepassx_uk.ts index a411ea6b3..fbd14999b 100644 --- a/share/translations/keepassx_uk.ts +++ b/share/translations/keepassx_uk.ts @@ -37,30 +37,6 @@ Copy to clipboard Скопіювати в кишеню - - Revision: %1 - Ревізія: %1 - - - Distribution: %1 - Розподіл: %1 - - - Libraries: - Бібліотеки: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - Операційна система: %1 -Архітектура ЦП: %2 -Ядро: %3 %4 - - - Enabled extensions: - Увімкнені розширення: - Project Maintainers: Супровідники проекту: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. Команда KeePassXC щиро дякує debfx за створення первісної версії KeePassX. - - Version %1 - Версія %1 - - - Build Type: %1 - Тип збірки: %1 - - - Auto-Type - Автозаповнення - - - Browser Integration - Сполучення з переглядачем - - - SSH Agent - Посередник SSH - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - Відсутні - - - KeeShare (signed and unsigned sharing) - KeeShare (підписане і непідписане спільне використання) - - - KeeShare (only signed sharing) - KeeShare (тільки підписане спільне використання) - - - KeeShare (only unsigned sharing) - KeeShare (тільки непідписане спільне використання) - AgentSettingsWidget @@ -656,14 +588,6 @@ Please select the correct database for saving credentials. Select custom proxy location Вибрати власне розташування посередника - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - Вибачте, але KeePassXC-Переглядач поки що не працює у версіях Snap. - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - Для сполучення з переглядачем необхідний KeePassXC-Browser. <br />Завантажте його для %1 та %2. - &Tor Browser Переглядач &Tor @@ -685,6 +609,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting Не запитувати дозвіл для HTTP &Basic Auth + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -759,12 +695,20 @@ Moved %2 keys to custom data. KeePassXC: знайдено застаріле налаштування сполучення з переглядачами - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - Знайдено застаріле налаштування сполучення з переглядачами. -Бажаєте оновити налаштування згідно з найновішими стандартами? -Це необхідно для підтримання сумісності з модулем переглядача. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -926,6 +870,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. Неможливо записати файл, оскільки він відкритий у режимі читання. + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1681,6 +1629,10 @@ Disable safe saves and try again? Database was not modified by merge operation. Об'єднання не змінило сховище. + + Shared group... + + EditEntryWidget @@ -2118,6 +2070,22 @@ Disable safe saves and try again? Select import/export file Вибрати файл імпорту/експорту + + Clear + Очистити + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2593,14 +2561,6 @@ This may cause the affected plugins to malfunction. [порожня] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3195,6 +3155,22 @@ Line %2, column %3 Synchronize with Узгодити з + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3844,10 +3820,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>Пароль є основним засобом для убезпечення Вашого сховища.</p><p>Найкращі паролі мають бути довгими та унікальними. KeePassXC може створити такий для Вас.</p> - - Password cannot be empty. - Пароль не може бути пустим. - Passwords do not match. Паролі не збігаються. @@ -4884,6 +4856,10 @@ Available commands: Database password: Пароль сховища: + + Cannot create new group + + QtIOCompressor @@ -5157,9 +5133,8 @@ Available commands: Експортований сертифікат не відповідає чинному сертифікатові. Бажаєте експортувати чинний сертифікат? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5176,10 +5151,6 @@ Available commands: Import from container with certificate Імпортування з оболонки, що має сертифікат - - Do you want to trust %1 with the fingerprint of %2 from %3 - Довірити %1, що має відбиток %2 з %3 - Not this time Не зараз @@ -5256,14 +5227,6 @@ Available commands: Could not write export container (%1) Неможливо записати експортну оболонку (%1) - - Could not embed signature (%1) - Неможливо вкласти підпис (%1) - - - Could not embed database (%1) - Неможливо вкласти сховище (%1) - Overwriting unsigned share container is not supported - export prevented Перезаписування непідписаної спільної оболонки не підтримане – експортування відвернуте @@ -5288,6 +5251,34 @@ Available commands: Export to %1 Експортування %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_zh_CN.ts b/share/translations/keepassx_zh_CN.ts index 78ad60e69..a50530b00 100644 --- a/share/translations/keepassx_zh_CN.ts +++ b/share/translations/keepassx_zh_CN.ts @@ -37,30 +37,6 @@ Copy to clipboard 复制到剪贴板 - - Revision: %1 - 修订版本:%1 - - - Distribution: %1 - 发行版: %1 - - - Libraries: - 库: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - 操作系统:%1 -CPU 架构:%2 -内核:%3 %4 - - - Enabled extensions: - 已启用的扩展: - Project Maintainers: 项目维护者: @@ -69,50 +45,6 @@ CPU 架构:%2 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. KeePassXC 团队特别感谢 debfx 开发了最初版 KeePassX - - Version %1 - 版本 %1 - - - Build Type: %1 - 构建类型: %1 - - - Auto-Type - 自动输入 - - - Browser Integration - 浏览器配合 - - - SSH Agent - SSH 代理 - - - YubiKey - YubiKey - - - TouchID - TouchID - - - None - - - - KeeShare (signed and unsigned sharing) - KeeShare (签名和未签名共享) - - - KeeShare (only signed sharing) - KeeShare (仅限签名共享) - - - KeeShare (only unsigned sharing) - KeeShare (仅限未签名共享) - AgentSettingsWidget @@ -656,14 +588,6 @@ Please select the correct database for saving credentials. Select custom proxy location 选择自定义代理路径 - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - 非常抱歉,KeePassXC-Browser 当前不支持 Snap 发行包 - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - 浏览器集成需要KeePassXC-Browser才能工作。<br />下载 %1 和 %2。 - &Tor Browser &Tor浏览器 @@ -685,6 +609,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting 不要请求 http 和基本身份验证的许可 + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -759,12 +695,20 @@ Moved %2 keys to custom data. KeePassXC:检测到旧版浏览器集成设置 - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. - 已检测到旧版浏览器集成设置 -是否要将设置升级到最新标准? -这对于保持与浏览器插件的兼容性是必要的。 + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? + @@ -926,6 +870,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. 文件无法写入,因为它以只读模式打开。 + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1680,6 +1628,10 @@ Disable safe saves and try again? Database was not modified by merge operation. 合并操作未修改数据库。 + + Shared group... + + EditEntryWidget @@ -2117,6 +2069,22 @@ Disable safe saves and try again? Select import/export file 选择导入文件 + + Clear + 清除 + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2588,14 +2556,6 @@ This may cause the affected plugins to malfunction. [空] - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3189,6 +3149,22 @@ Line %2, column %3 Synchronize with 与同步 + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3839,10 +3815,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> <p>密码是保护数据库的主要方法。</p><p>良好的密码长且独特。 KeePassXC可以为您生成一个。</p> - - Password cannot be empty. - 密码不能为空。 - Passwords do not match. 密码不匹配。 @@ -4879,6 +4851,10 @@ Available commands: Database password: 数据库密码: + + Cannot create new group + + QtIOCompressor @@ -5152,9 +5128,8 @@ Available commands: 导出的证书与正在使用的证书不同。是否要导出当前证书? - %1.%2 - Template for KeeShare key file - %1.%2 + Signer: + @@ -5171,10 +5146,6 @@ Available commands: Import from container with certificate 从带有证书的容器导入 - - Do you want to trust %1 with the fingerprint of %2 from %3 - 是否要信任 %1 , 来自 %3的%2的指纹 - Not this time 本次取消 @@ -5251,14 +5222,6 @@ Available commands: Could not write export container (%1) 无法写入导出容器 (%1) - - Could not embed signature (%1) - 无法嵌入签名 (%1) - - - Could not embed database (%1) - 无法嵌入数据库 (%1) - Overwriting unsigned share container is not supported - export prevented 不支持覆盖未签名的共享容器-防止导出 @@ -5283,6 +5246,34 @@ Available commands: Export to %1 导出到%1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + 是否要信任 %1, 来自 %3 的 %2 的指纹? {1 ?} {2 ?} + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/share/translations/keepassx_zh_TW.ts b/share/translations/keepassx_zh_TW.ts index ccc98d80a..7c5b5deb0 100644 --- a/share/translations/keepassx_zh_TW.ts +++ b/share/translations/keepassx_zh_TW.ts @@ -37,30 +37,6 @@ Copy to clipboard 複製到剪貼簿 - - Revision: %1 - 修訂:%1 - - - Distribution: %1 - 散佈:%1 - - - Libraries: - 函式庫: - - - Operating system: %1 -CPU architecture: %2 -Kernel: %3 %4 - 作業系統:%1 -處裡器架構:%2 -核心:%3 %4 - - - Enabled extensions: - 已啟用的擴充元件: - Project Maintainers: 專案維護者: @@ -69,50 +45,6 @@ Kernel: %3 %4 Special thanks from the KeePassXC team go to debfx for creating the original KeePassX. KeePassXC 團隊特別鳴謝 debfx 開發了原本的 KeePassX - - Version %1 - 版本 %1 - - - Build Type: %1 - 建置型態: %1 - - - Auto-Type - 自動輸入 - - - Browser Integration - 瀏覽器整合 - - - SSH Agent - SSH 代理 - - - YubiKey - - - - TouchID - - - - None - - - - KeeShare (signed and unsigned sharing) - - - - KeeShare (only signed sharing) - - - - KeeShare (only unsigned sharing) - - AgentSettingsWidget @@ -655,14 +587,6 @@ Please select the correct database for saving credentials. Select custom proxy location 選擇自訂代理位置 - - We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment. - - - - KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. - - &Tor Browser @@ -684,6 +608,18 @@ Please select the correct database for saving credentials. An extra HTTP Basic Auth setting + + Due to Snap sandboxing, you must run a script to enable browser integration.<br />You can obtain this script from %1 + + + + Please see special instructions for browser extension use below + + + + KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3 + + BrowserService @@ -757,9 +693,19 @@ Moved %2 keys to custom data. - Legacy browser integration settings have been detected. -Do you want to upgrade the settings to the latest standard? -This is necessary to maintain compatibility with the browser plugin. + KeePassXC: Create a new group + + + + A request for creating a new group "%1" has been received. +Do you want to create this group? + + + + + Your KeePassXC-Browser settings need to be moved into the database settings. +This is necessary to maintain your current browser connections. +Would you like to migrate your existing settings now? @@ -921,6 +867,10 @@ This is necessary to maintain compatibility with the browser plugin. File cannot be written as it is opened in read-only mode. 無法寫入檔案,因為該檔案以唯獨模式開啟。 + + Key not transformed. This is a bug, please report it to the developers! + + DatabaseOpenDialog @@ -1662,6 +1612,10 @@ Disable safe saves and try again? Database was not modified by merge operation. + + Shared group... + + EditEntryWidget @@ -2099,6 +2053,22 @@ Disable safe saves and try again? Select import/export file + + Clear + 清除 + + + The export container %1 is already referenced. + + + + The import container %1 is already imported. + + + + The container %1 imported and export by different groups. + + EditGroupWidgetMain @@ -2569,14 +2539,6 @@ This may cause the affected plugins to malfunction. - - GroupModel - - %1 - Template for name without annotation - %1 - - HostInstaller @@ -3169,6 +3131,22 @@ Line %2, column %3 Synchronize with + + Disabled share %1 + + + + Import from share %1 + + + + Export to share %1 + + + + Synchronize with share %1 + + KeyComponentWidget @@ -3813,10 +3791,6 @@ Expect some bugs and minor issues, this version is not meant for production use. <p>A password is the primary method for securing your database.</p><p>Good passwords are long and unique. KeePassXC can generate one for you.</p> - - Password cannot be empty. - - Passwords do not match. @@ -4848,6 +4822,10 @@ Available commands: Database password: + + Cannot create new group + + QtIOCompressor @@ -5121,8 +5099,7 @@ Available commands: - %1.%2 - Template for KeeShare key file + Signer: @@ -5140,10 +5117,6 @@ Available commands: Import from container with certificate - - Do you want to trust %1 with the fingerprint of %2 from %3 - - Not this time @@ -5220,14 +5193,6 @@ Available commands: Could not write export container (%1) - - Could not embed signature (%1) - - - - Could not embed database (%1) - - Overwriting unsigned share container is not supported - export prevented @@ -5252,6 +5217,34 @@ Available commands: Export to %1 + + Do you want to trust %1 with the fingerprint of %2 from %3? + + + + Multiple import source path to %1 in %2 + + + + Conflicting export target path %1 in %2 + + + + Could not embed signature: Could not open file to write (%1) + + + + Could not embed signature: Could not write file (%1) + + + + Could not embed database: Could not open file to write (%1) + + + + Could not embed database: Could not write file (%1) + + TotpDialog diff --git a/snapcraft.yaml b/snapcraft.yaml index f7bc1434b..16eb0890d 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -31,9 +31,10 @@ parts: - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_INSTALL_PREFIX=/usr - -DKEEPASSXC_DIST_TYPE=Snap - - -DKEEPASSXC_BUILD_TYPE=PreRelease + - -DKEEPASSXC_BUILD_TYPE=Release - -DWITH_TESTS=OFF - -DWITH_XC_ALL=ON + - -DWITH_XC_KEESHARE_SECURE=ON build-packages: - g++ - libgcrypt20-dev @@ -50,6 +51,7 @@ parts: - libsodium-dev - libargon2-0-dev - libqrencode-dev + - libquazip5-dev stage-packages: - dbus - qttranslations5-l10n # common translations @@ -60,6 +62,9 @@ parts: - libxtst6 - libqt5x11extras5 - libqt5svg5 + - libqrencode3 + - libqt5concurrent5 + - libquazip5-1 - libusb-1.0-0 - qtwayland5 override-build: | @@ -71,3 +76,24 @@ parts: - -opt after: [desktop-qt5] + desktop-qt5: + source: https://github.com/ubuntu/snapcraft-desktop-helpers.git + source-subdir: qt + plugin: make + make-parameters: ["FLAVOR=qt5"] + build-packages: + - qtbase5-dev + - dpkg-dev + stage-packages: + - libxkbcommon0 + - ttf-ubuntu-font-family + - dmz-cursor-theme + - light-themes + - adwaita-icon-theme + - gnome-themes-standard + - shared-mime-info + - libqt5gui5 + - libgdk-pixbuf2.0-0 + - libqt5svg5 # for loading icon themes which are svg + - try: [appmenu-qt5] # not available on core18 + - locales-all diff --git a/src/browser/BrowserAction.cpp b/src/browser/BrowserAction.cpp index 8c96568a7..1a4cbf5ec 100644 --- a/src/browser/BrowserAction.cpp +++ b/src/browser/BrowserAction.cpp @@ -21,11 +21,11 @@ #include "NativeMessagingBase.h" #include "config-keepassx.h" +#include +#include #include #include #include -#include -#include BrowserAction::BrowserAction(BrowserService& browserService) : m_mutex(QMutex::Recursive) @@ -88,6 +88,8 @@ QJsonObject BrowserAction::handleAction(const QJsonObject& json) return handleLockDatabase(json, action); } else if (action.compare("get-database-groups", Qt::CaseSensitive) == 0) { return handleGetDatabaseGroups(json, action); + } else if (action.compare("create-new-group", Qt::CaseSensitive) == 0) { + return handleCreateNewGroup(json, action); } // Action was not recognized @@ -407,6 +409,42 @@ QJsonObject BrowserAction::handleGetDatabaseGroups(const QJsonObject& json, cons return buildResponse(action, message, newNonce); } +QJsonObject BrowserAction::handleCreateNewGroup(const QJsonObject& json, const QString& action) +{ + const QString hash = getDatabaseHash(); + const QString nonce = json.value("nonce").toString(); + const QString encrypted = json.value("message").toString(); + + QMutexLocker locker(&m_mutex); + if (!m_associated) { + return getErrorReply(action, ERROR_KEEPASS_ASSOCIATION_FAILED); + } + + const QJsonObject decrypted = decryptMessage(encrypted, nonce); + if (decrypted.isEmpty()) { + return getErrorReply(action, ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE); + } + + QString command = decrypted.value("action").toString(); + if (command.isEmpty() || command.compare("create-new-group", Qt::CaseSensitive) != 0) { + return getErrorReply(action, ERROR_KEEPASS_INCORRECT_ACTION); + } + + QString group = decrypted.value("groupName").toString(); + const QJsonObject newGroup = m_browserService.createNewGroup(group); + if (newGroup.isEmpty() || newGroup["name"].toString().isEmpty() || newGroup["uuid"].toString().isEmpty()) { + return getErrorReply(action, ERROR_KEEPASS_CANNOT_CREATE_NEW_GROUP); + } + + const QString newNonce = incrementNonce(nonce); + + QJsonObject message = buildMessage(newNonce); + message["name"] = newGroup["name"]; + message["uuid"] = newGroup["uuid"]; + + return buildResponse(action, message, newNonce); +} + QJsonObject BrowserAction::getErrorReply(const QString& action, const int errorCode) const { QJsonObject response; @@ -468,6 +506,8 @@ QString BrowserAction::getErrorMessage(const int errorCode) const return QObject::tr("No logins found"); case ERROR_KEEPASS_NO_GROUPS_FOUND: return QObject::tr("No groups found"); + case ERROR_KEEPASS_CANNOT_CREATE_NEW_GROUP: + return QObject::tr("Cannot create new group"); default: return QObject::tr("Unknown error"); } diff --git a/src/browser/BrowserAction.h b/src/browser/BrowserAction.h index 29736ab4e..535170939 100644 --- a/src/browser/BrowserAction.h +++ b/src/browser/BrowserAction.h @@ -46,7 +46,8 @@ class BrowserAction : public QObject ERROR_KEEPASS_EMPTY_MESSAGE_RECEIVED = 13, ERROR_KEEPASS_NO_URL_PROVIDED = 14, ERROR_KEEPASS_NO_LOGINS_FOUND = 15, - ERROR_KEEPASS_NO_GROUPS_FOUND = 16 + ERROR_KEEPASS_NO_GROUPS_FOUND = 16, + ERROR_KEEPASS_CANNOT_CREATE_NEW_GROUP = 17 }; public: @@ -66,6 +67,7 @@ private: QJsonObject handleSetLogin(const QJsonObject& json, const QString& action); QJsonObject handleLockDatabase(const QJsonObject& json, const QString& action); QJsonObject handleGetDatabaseGroups(const QJsonObject& json, const QString& action); + QJsonObject handleCreateNewGroup(const QJsonObject& json, const QString& action); QJsonObject buildMessage(const QString& nonce) const; QJsonObject buildResponse(const QString& action, const QJsonObject& message, const QString& nonce); diff --git a/src/browser/BrowserOptionDialog.cpp b/src/browser/BrowserOptionDialog.cpp index 78a51d2aa..dd91f1594 100644 --- a/src/browser/BrowserOptionDialog.cpp +++ b/src/browser/BrowserOptionDialog.cpp @@ -32,13 +32,24 @@ BrowserOptionDialog::BrowserOptionDialog(QWidget* parent) { m_ui->setupUi(this); + // clang-format off + QString snapInstructions; +#if defined(KEEPASSXC_DIST_SNAP) + snapInstructions = "

" + + tr("Due to Snap sandboxing, you must run a script to enable browser integration." + "
" + "You can obtain this script from %1") + .arg("https://keepassxc.org"); +#endif + m_ui->extensionLabel->setOpenExternalLinks(true); m_ui->extensionLabel->setText( - tr("KeePassXC-Browser is needed for the browser integration to work.
Download it for %1 and %2.") + tr("KeePassXC-Browser is needed for the browser integration to work.
Download it for %1 and %2. %3") .arg("Firefox", - "Google Chrome / Chromium / Vivaldi")); + "" + "Google Chrome / Chromium / Vivaldi", + snapInstructions)); + // clang-format on m_ui->scriptWarningWidget->setVisible(false); m_ui->scriptWarningWidget->setAutoHideTimeout(-1); @@ -119,11 +130,18 @@ void BrowserOptionDialog::loadSettings() m_ui->supportBrowserProxy->setChecked(true); m_ui->supportBrowserProxy->setEnabled(false); #elif defined(KEEPASSXC_DIST_SNAP) - m_ui->enableBrowserSupport->setChecked(false); - m_ui->enableBrowserSupport->setEnabled(false); - m_ui->browserGlobalWarningWidget->showMessage( - tr("We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment."), - MessageWidget::Warning); + // Disable settings that will not work + m_ui->supportBrowserProxy->setChecked(true); + m_ui->supportBrowserProxy->setEnabled(false); + m_ui->useCustomProxy->setChecked(false); + m_ui->useCustomProxy->setEnabled(false); + m_ui->browsersGroupBox->setVisible(false); + m_ui->browsersGroupBox->setEnabled(false); + m_ui->updateBinaryPath->setChecked(false); + m_ui->updateBinaryPath->setEnabled(false); + // Show notice to user + m_ui->browserGlobalWarningWidget->showMessage(tr("Please see special instructions for browser extension use below"), + MessageWidget::Warning); m_ui->browserGlobalWarningWidget->setCloseButtonVisible(false); m_ui->browserGlobalWarningWidget->setAutoHideTimeout(-1); #endif diff --git a/src/browser/BrowserService.cpp b/src/browser/BrowserService.cpp index 719683e7f..9c06c2487 100644 --- a/src/browser/BrowserService.cpp +++ b/src/browser/BrowserService.cpp @@ -150,7 +150,7 @@ QString BrowserService::getDatabaseRecycleBinUuid() return recycleBin->uuidToHex(); } -QJsonArray BrowserService::addChildrenToGroup(Group* group) +QJsonArray BrowserService::getChildrenFromGroup(Group* group) { QJsonArray groupList; @@ -166,7 +166,7 @@ QJsonArray BrowserService::addChildrenToGroup(Group* group) QJsonObject jsonGroup; jsonGroup["name"] = c->name(); jsonGroup["uuid"] = Tools::uuidToHex(c->uuid()); - jsonGroup["children"] = addChildrenToGroup(c); + jsonGroup["children"] = getChildrenFromGroup(c); groupList.push_back(jsonGroup); } return groupList; @@ -187,7 +187,7 @@ QJsonObject BrowserService::getDatabaseGroups() QJsonObject root; root["name"] = rootGroup->name(); root["uuid"] = Tools::uuidToHex(rootGroup->uuid()); - root["children"] = addChildrenToGroup(rootGroup); + root["children"] = getChildrenFromGroup(rootGroup); QJsonArray groups; groups.push_back(root); @@ -198,6 +198,84 @@ QJsonObject BrowserService::getDatabaseGroups() return result; } +QJsonObject BrowserService::createNewGroup(const QString& groupName) +{ + QJsonObject result; + if (thread() != QThread::currentThread()) { + QMetaObject::invokeMethod(this, + "createNewGroup", + Qt::BlockingQueuedConnection, + Q_RETURN_ARG(QJsonObject, result), + Q_ARG(QString, groupName)); + return result; + } + + auto db = getDatabase(); + if (!db) { + return {}; + } + + Group* rootGroup = db->rootGroup(); + if (!rootGroup) { + return {}; + } + + auto group = rootGroup->findGroupByPath(groupName); + + // Group already exists + if (group) { + result["name"] = group->name(); + result["uuid"] = Tools::uuidToHex(group->uuid()); + return result; + } + + auto dialogResult = MessageBox::warning(nullptr, + tr("KeePassXC: Create a new group"), + tr("A request for creating a new group \"%1\" has been received.\n" + "Do you want to create this group?\n") + .arg(groupName), + MessageBox::Yes | MessageBox::No); + + if (dialogResult != MessageBox::Yes) { + return result; + } + + QString name, uuid; + Group* previousGroup = rootGroup; + auto groups = groupName.split("/"); + + // Returns the group name based on depth + auto getGroupName = [&](int depth) { + QString gName; + for (int i = 0; i < depth + 1; ++i) { + gName.append((i == 0 ? "" : "/") + groups[i]); + } + return gName; + }; + + // Create new group(s) always when the path is not found + for (int i = 0; i < groups.length(); ++i) { + QString gName = getGroupName(i); + auto tempGroup = rootGroup->findGroupByPath(gName); + if (!tempGroup) { + Group* newGroup = new Group(); + newGroup->setName(groups[i]); + newGroup->setUuid(QUuid::createUuid()); + newGroup->setParent(previousGroup); + name = newGroup->name(); + uuid = Tools::uuidToHex(newGroup->uuid()); + previousGroup = newGroup; + continue; + } + + previousGroup = tempGroup; + } + + result["name"] = name; + result["uuid"] = uuid; + return result; +} + QString BrowserService::storeKey(const QString& key) { QString id; @@ -630,7 +708,7 @@ QList BrowserService::sortEntries(QList& pwEntries, const QStrin { QUrl url(entryUrl); if (url.scheme().isEmpty()) { - url.setScheme("http"); + url.setScheme("https"); } const QString submitUrl = url.toString(QUrl::StripTrailingSlash); @@ -996,12 +1074,13 @@ bool BrowserService::checkLegacySettings() return false; } - auto dialogResult = MessageBox::warning(nullptr, - tr("KeePassXC: Legacy browser integration settings detected"), - tr("Legacy browser integration settings have been detected.\n" - "Do you want to upgrade the settings to the latest standard?\n" - "This is necessary to maintain compatibility with the browser plugin."), - MessageBox::Yes | MessageBox::No); + auto dialogResult = + MessageBox::warning(nullptr, + tr("KeePassXC: Legacy browser integration settings detected"), + tr("Your KeePassXC-Browser settings need to be moved into the database settings.\n" + "This is necessary to maintain your current browser connections.\n" + "Would you like to migrate your existing settings now?"), + MessageBox::Yes | MessageBox::No); return dialogResult == MessageBox::Yes; } @@ -1034,6 +1113,8 @@ void BrowserService::raiseWindow(const bool force) m_prevWindowState = WindowState::Minimized; } #ifdef Q_OS_MACOS + Q_UNUSED(force); + if (macUtils()->isHidden()) { m_prevWindowState = WindowState::Hidden; } diff --git a/src/browser/BrowserService.h b/src/browser/BrowserService.h index b002a9b9a..a8f04262f 100644 --- a/src/browser/BrowserService.h +++ b/src/browser/BrowserService.h @@ -45,6 +45,7 @@ public: QString getDatabaseRootUuid(); QString getDatabaseRecycleBinUuid(); QJsonObject getDatabaseGroups(); + QJsonObject createNewGroup(const QString& groupName); QString getKey(const QString& id); void addEntry(const QString& id, const QString& login, @@ -121,7 +122,7 @@ private: QString baseDomain(const QString& url) const; QSharedPointer getDatabase(); QSharedPointer selectedDatabase(); - QJsonArray addChildrenToGroup(Group* group); + QJsonArray getChildrenFromGroup(Group* group); bool moveSettingsToCustomData(Entry* entry, const QString& name) const; int moveKeysToCustomData(Entry* entry, const QSharedPointer& db) const; bool checkLegacySettings(); diff --git a/src/browser/BrowserSettings.cpp b/src/browser/BrowserSettings.cpp index fe3d55527..9aab68f7e 100644 --- a/src/browser/BrowserSettings.cpp +++ b/src/browser/BrowserSettings.cpp @@ -186,7 +186,7 @@ void BrowserSettings::setCustomProxyLocation(const QString& location) bool BrowserSettings::updateBinaryPath() { - return config()->get("Browser/UpdateBinaryPath", false).toBool(); + return config()->get("Browser/UpdateBinaryPath", true).toBool(); } void BrowserSettings::setUpdateBinaryPath(bool enabled) diff --git a/src/browser/NativeMessagingBase.cpp b/src/browser/NativeMessagingBase.cpp index fa88c015f..a6b8d97c0 100644 --- a/src/browser/NativeMessagingBase.cpp +++ b/src/browser/NativeMessagingBase.cpp @@ -65,6 +65,7 @@ void NativeMessagingBase::newNativeMessage() EV_SET(ev, fileno(stdin), EVFILT_READ, EV_ADD, 0, 0, nullptr); if (kevent(fd, ev, 1, nullptr, 0, &ts) == -1) { m_notifier->setEnabled(false); + ::close(fd); return; } @@ -81,6 +82,7 @@ void NativeMessagingBase::newNativeMessage() event.data.fd = 0; if (epoll_ctl(fd, EPOLL_CTL_ADD, 0, &event) != 0) { m_notifier->setEnabled(false); + ::close(fd); return; } @@ -135,7 +137,9 @@ void NativeMessagingBase::sendReply(const QString& reply) QString NativeMessagingBase::getLocalServerPath() const { const QString serverPath = "/kpxc_server"; -#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) +#if defined(KEEPASSXC_DIST_SNAP) + return QProcessEnvironment::systemEnvironment().value("SNAP_COMMON") + serverPath; +#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) // Use XDG_RUNTIME_DIR instead of /tmp if it's available QString path = QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation); return path.isEmpty() ? QStandardPaths::writableLocation(QStandardPaths::TempLocation) + serverPath diff --git a/src/browser/NativeMessagingBase.h b/src/browser/NativeMessagingBase.h index 12e551665..7a099a4ac 100644 --- a/src/browser/NativeMessagingBase.h +++ b/src/browser/NativeMessagingBase.h @@ -53,7 +53,7 @@ protected slots: protected: virtual void readLength() = 0; virtual bool readStdIn(const quint32 length) = 0; - void readNativeMessages(); + virtual void readNativeMessages(); QString jsonToString(const QJsonObject& json) const; void sendReply(const QJsonObject& json); void sendReply(const QString& reply); diff --git a/src/browser/NativeMessagingHost.h b/src/browser/NativeMessagingHost.h index 30a67378a..9ce1dab60 100644 --- a/src/browser/NativeMessagingHost.h +++ b/src/browser/NativeMessagingHost.h @@ -32,7 +32,7 @@ class NativeMessagingHost : public NativeMessagingBase public: explicit NativeMessagingHost(DatabaseTabWidget* parent = nullptr, const bool enabled = false); - ~NativeMessagingHost(); + ~NativeMessagingHost() override; int init(); void run(); void stop(); diff --git a/src/core/Database.cpp b/src/core/Database.cpp index 4d94ccf23..6f035b1d1 100644 --- a/src/core/Database.cpp +++ b/src/core/Database.cpp @@ -275,6 +275,7 @@ bool Database::writeDatabase(QIODevice* device, QString* error) return false; } + QByteArray oldTransformedKey = m_data.transformedMasterKey; KeePass2Writer writer; setEmitModified(false); writer.writeDatabase(device, this); @@ -287,6 +288,15 @@ bool Database::writeDatabase(QIODevice* device, QString* error) return false; } + Q_ASSERT(!m_data.transformedMasterKey.isEmpty()); + Q_ASSERT(m_data.transformedMasterKey != oldTransformedKey); + if (m_data.transformedMasterKey.isEmpty() || m_data.transformedMasterKey == oldTransformedKey) { + if (error) { + *error = tr("Key not transformed. This is a bug, please report it to the developers!"); + } + return false; + } + markAsClean(); return true; } @@ -307,16 +317,18 @@ bool Database::extract(QByteArray& xmlOutput, QString* error) /** * Remove the old backup and replace it with a new one - * backups are named .old.kdbx + * backups are named .old. * * @param filePath Path to the file to backup * @return true on success */ bool Database::backupDatabase(const QString& filePath) { - QString backupFilePath = filePath; - auto re = QRegularExpression("\\.kdbx$|(?& key, bool updateChangedTime, bool updateTransformSalt) +bool Database::setKey(const QSharedPointer& key, + bool updateChangedTime, + bool updateTransformSalt, + bool transformKey) { Q_ASSERT(!m_data.isReadOnly); @@ -532,7 +548,9 @@ bool Database::setKey(const QSharedPointer& key, bool update QByteArray oldTransformedMasterKey = m_data.transformedMasterKey; QByteArray transformedMasterKey; - if (!key->transform(*m_data.kdf, transformedMasterKey)) { + if (!transformKey) { + transformedMasterKey = oldTransformedMasterKey; + } else if (!key->transform(*m_data.kdf, transformedMasterKey)) { return false; } diff --git a/src/core/Database.h b/src/core/Database.h index bc3749869..104d522a3 100644 --- a/src/core/Database.h +++ b/src/core/Database.h @@ -109,7 +109,8 @@ public: QSharedPointer key() const; bool setKey(const QSharedPointer& key, bool updateChangedTime = true, - bool updateTransformSalt = false); + bool updateTransformSalt = false, + bool transformKey = true); QByteArray challengeResponseKey() const; bool challengeMasterSeed(const QByteArray& masterSeed); bool verifyKey(const QSharedPointer& key) const; diff --git a/src/core/Entry.cpp b/src/core/Entry.cpp index 327fdc425..2ad73b055 100644 --- a/src/core/Entry.cpp +++ b/src/core/Entry.cpp @@ -926,7 +926,7 @@ QString Entry::resolveReferencePlaceholderRecursive(const QString& placeholder, Q_ASSERT(m_group); Q_ASSERT(m_group->database()); - const Entry* refEntry = m_group->findEntryBySearchTerm(searchText, searchInType); + const Entry* refEntry = m_group->database()->rootGroup()->findEntryBySearchTerm(searchText, searchInType); if (refEntry) { const QString wantedField = match.captured(EntryAttributes::WantedFieldGroupName); diff --git a/src/core/EntryAttributes.cpp b/src/core/EntryAttributes.cpp index bcc08f0fa..80067c563 100644 --- a/src/core/EntryAttributes.cpp +++ b/src/core/EntryAttributes.cpp @@ -67,6 +67,15 @@ QString EntryAttributes::value(const QString& key) const return m_attributes.value(key); } +QList EntryAttributes::values(const QList& keys) const +{ + QList values; + for (const QString& key : keys) { + values.append(m_attributes.value(key)); + } + return values; +} + bool EntryAttributes::contains(const QString& key) const { return m_attributes.contains(key); diff --git a/src/core/EntryAttributes.h b/src/core/EntryAttributes.h index fdae8a624..2cba13c64 100644 --- a/src/core/EntryAttributes.h +++ b/src/core/EntryAttributes.h @@ -36,6 +36,7 @@ public: bool hasKey(const QString& key) const; QList customKeys() const; QString value(const QString& key) const; + QList values(const QList& keys) const; bool contains(const QString& key) const; bool containsValue(const QString& value) const; bool isProtected(const QString& key) const; diff --git a/src/core/EntrySearcher.cpp b/src/core/EntrySearcher.cpp index a639afd8b..f6c67ad50 100644 --- a/src/core/EntrySearcher.cpp +++ b/src/core/EntrySearcher.cpp @@ -28,31 +28,83 @@ EntrySearcher::EntrySearcher(bool caseSensitive) { } +/** + * Search group, and its children, by parsing the provided search + * string for search terms. + * + * @param searchString search terms + * @param baseGroup group to start search from, cannot be null + * @param forceSearch ignore group search settings + * @return list of entries that match the search terms + */ QList EntrySearcher::search(const QString& searchString, const Group* baseGroup, bool forceSearch) { Q_ASSERT(baseGroup); + parseSearchTerms(searchString); + return repeat(baseGroup, forceSearch); +} + +/** + * Repeat the last search starting from the given group + * + * @param baseGroup group to start search from, cannot be null + * @param forceSearch ignore group search settings + * @return list of entries that match the search terms + */ +QList EntrySearcher::repeat(const Group* baseGroup, bool forceSearch) +{ + Q_ASSERT(baseGroup); + QList results; for (const auto group : baseGroup->groupsRecursive(true)) { if (forceSearch || group->resolveSearchingEnabled()) { - results.append(searchEntries(searchString, group->entries())); + for (auto* entry : group->entries()) { + if (searchEntryImpl(entry)) { + results.append(entry); + } + } } } - return results; } +/** + * Search provided entries by parsing the search string + * for search terms. + * + * @param searchString search terms + * @param entries list of entries to include in the search + * @return list of entries that match the search terms + */ QList EntrySearcher::searchEntries(const QString& searchString, const QList& entries) +{ + parseSearchTerms(searchString); + return repeatEntries(entries); +} + +/** + * Repeat the last search on the given entries + * + * @param entries list of entries to include in the search + * @return list of entries that match the search terms + */ +QList EntrySearcher::repeatEntries(const QList& entries) { QList results; - for (Entry* entry : entries) { - if (searchEntryImpl(searchString, entry)) { + for (auto* entry : entries) { + if (searchEntryImpl(entry)) { results.append(entry); } } return results; } +/** + * Set the next search to be case sensitive or not + * + * @param state + */ void EntrySearcher::setCaseSensitive(bool state) { m_caseSensitive = state; @@ -63,16 +115,15 @@ bool EntrySearcher::isCaseSensitive() return m_caseSensitive; } -bool EntrySearcher::searchEntryImpl(const QString& searchString, Entry* entry) +bool EntrySearcher::searchEntryImpl(Entry* entry) { // Pre-load in case they are needed - auto attributes = QStringList(entry->attributes()->keys()); + auto attributes_keys = entry->attributes()->customKeys(); + auto attributes = QStringList(attributes_keys + entry->attributes()->values(attributes_keys)); auto attachments = QStringList(entry->attachments()->keys()); bool found; - auto searchTerms = parseSearchTerms(searchString); - - for (const auto& term : searchTerms) { + for (const auto& term : m_searchTerms) { switch (term->field) { case Field::Title: found = term->regex.match(entry->resolvePlaceholder(entry->title())).hasMatch(); @@ -112,10 +163,9 @@ bool EntrySearcher::searchEntryImpl(const QString& searchString, Entry* entry) return true; } -QList> EntrySearcher::parseSearchTerms(const QString& searchString) +void EntrySearcher::parseSearchTerms(const QString& searchString) { - auto terms = QList>(); - + m_searchTerms.clear(); auto results = m_termParser.globalMatch(searchString); while (results.hasNext()) { auto result = results.next(); @@ -165,8 +215,6 @@ QList> EntrySearcher::parseSearchTerms } } - terms.append(term); + m_searchTerms.append(term); } - - return terms; } diff --git a/src/core/EntrySearcher.h b/src/core/EntrySearcher.h index d5a9951f9..153a0612e 100644 --- a/src/core/EntrySearcher.h +++ b/src/core/EntrySearcher.h @@ -31,14 +31,15 @@ public: explicit EntrySearcher(bool caseSensitive = false); QList search(const QString& searchString, const Group* baseGroup, bool forceSearch = false); + QList repeat(const Group* baseGroup, bool forceSearch = false); + QList searchEntries(const QString& searchString, const QList& entries); + QList repeatEntries(const QList& entries); void setCaseSensitive(bool state); bool isCaseSensitive(); private: - bool searchEntryImpl(const QString& searchString, Entry* entry); - enum class Field { Undefined, @@ -59,10 +60,12 @@ private: bool exclude; }; - QList> parseSearchTerms(const QString& searchString); + bool searchEntryImpl(Entry* entry); + void parseSearchTerms(const QString& searchString); bool m_caseSensitive; QRegularExpression m_termParser; + QList> m_searchTerms; friend class TestEntrySearcher; }; diff --git a/src/core/FileWatcher.cpp b/src/core/FileWatcher.cpp index d7056f9c7..64e86c3fa 100644 --- a/src/core/FileWatcher.cpp +++ b/src/core/FileWatcher.cpp @@ -123,6 +123,7 @@ BulkFileWatcher::BulkFileWatcher(QObject* parent) connect(&m_fileWatchUnblockTimer, SIGNAL(timeout()), this, SLOT(observeFileChanges())); connect(&m_pendingSignalsTimer, SIGNAL(timeout()), this, SLOT(emitSignals())); m_fileWatchUnblockTimer.setSingleShot(true); + m_pendingSignalsTimer.setSingleShot(true); } void BulkFileWatcher::clear() diff --git a/src/core/OSEventFilter.cpp b/src/core/OSEventFilter.cpp index f6ad6c76a..d5873ee8d 100644 --- a/src/core/OSEventFilter.cpp +++ b/src/core/OSEventFilter.cpp @@ -1,8 +1,30 @@ +/* + * Copyright (C) 2013 Felix Geyer + * Copyright (C) 2018 KeePassXC Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "OSEventFilter.h" #include #include "autotype/AutoType.h" +#include "gui/MainWindow.h" +#ifdef Q_OS_WIN +#include +#endif OSEventFilter::OSEventFilter() { @@ -15,12 +37,18 @@ bool OSEventFilter::nativeEventFilter(const QByteArray& eventType, void* message #if defined(Q_OS_UNIX) if (eventType == QByteArrayLiteral("xcb_generic_event_t")) { #elif defined(Q_OS_WIN) - if (eventType == QByteArrayLiteral("windows_generic_MSG") - || eventType == QByteArrayLiteral("windows_dispatcher_MSG")) { + auto winmsg = static_cast(message); + if (winmsg->message == WM_QUERYENDSESSION) { + *result = 1; + return true; + } else if (winmsg->message == WM_ENDSESSION) { + getMainWindow()->appExit(); + *result = 0; + return true; + } else if (eventType == QByteArrayLiteral("windows_generic_MSG") + || eventType == QByteArrayLiteral("windows_dispatcher_MSG")) { #endif - int retCode = autoType()->callEventFilter(message); - - return retCode == 1; + return autoType()->callEventFilter(message) == 1; } return false; diff --git a/src/core/OSEventFilter.h b/src/core/OSEventFilter.h index a27ade713..10434c0c2 100644 --- a/src/core/OSEventFilter.h +++ b/src/core/OSEventFilter.h @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2013 Felix Geyer + * Copyright (C) 2018 KeePassXC Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #ifndef OSEVENTFILTER_H #define OSEVENTFILTER_H #include diff --git a/src/crypto/kdf/Kdf.cpp b/src/crypto/kdf/Kdf.cpp index 797723193..b4c4427c8 100644 --- a/src/crypto/kdf/Kdf.cpp +++ b/src/crypto/kdf/Kdf.cpp @@ -84,7 +84,8 @@ int Kdf::benchmark(int msec) const } Kdf::BenchmarkThread::BenchmarkThread(int msec, const Kdf* kdf) - : m_msec(msec) + : m_rounds(1) + , m_msec(msec) , m_kdf(kdf) { } diff --git a/src/crypto/ssh/BinaryStream.cpp b/src/crypto/ssh/BinaryStream.cpp index 2af04cee5..3ba4c1a81 100644 --- a/src/crypto/ssh/BinaryStream.cpp +++ b/src/crypto/ssh/BinaryStream.cpp @@ -19,12 +19,6 @@ #include "BinaryStream.h" #include -BinaryStream::BinaryStream(QObject* parent) - : QObject(parent) - , m_timeout(-1) -{ -} - BinaryStream::BinaryStream(QIODevice* device) : QObject(device) , m_timeout(-1) @@ -36,7 +30,10 @@ BinaryStream::BinaryStream(QByteArray* ba, QObject* parent) : QObject(parent) , m_timeout(-1) { - setData(ba); + m_buffer.reset(new QBuffer(ba)); + m_buffer->open(QIODevice::ReadWrite); + + m_device = m_buffer.data(); } BinaryStream::~BinaryStream() @@ -53,19 +50,6 @@ QIODevice* BinaryStream::device() const return m_device; } -void BinaryStream::setDevice(QIODevice* device) -{ - m_device = device; -} - -void BinaryStream::setData(QByteArray* ba) -{ - m_buffer.reset(new QBuffer(ba)); - m_buffer->open(QIODevice::ReadWrite); - - m_device = m_buffer.data(); -} - void BinaryStream::setTimeout(int timeout) { m_timeout = timeout; diff --git a/src/crypto/ssh/BinaryStream.h b/src/crypto/ssh/BinaryStream.h index 8f4155b65..6f95039ec 100644 --- a/src/crypto/ssh/BinaryStream.h +++ b/src/crypto/ssh/BinaryStream.h @@ -26,16 +26,14 @@ class BinaryStream : QObject { Q_OBJECT + Q_DISABLE_COPY(BinaryStream) public: - BinaryStream(QObject* parent = nullptr); - BinaryStream(QIODevice* device); - BinaryStream(QByteArray* ba, QObject* parent = nullptr); - ~BinaryStream(); + explicit BinaryStream(QIODevice* device); + explicit BinaryStream(QByteArray* ba, QObject* parent = nullptr); + ~BinaryStream() override; const QString errorString() const; QIODevice* device() const; - void setDevice(QIODevice* device); - void setData(QByteArray* ba); void setTimeout(int timeout); bool read(QByteArray& ba); diff --git a/src/gui/Application.cpp b/src/gui/Application.cpp index 5ad928fd3..b79f2c30a 100644 --- a/src/gui/Application.cpp +++ b/src/gui/Application.cpp @@ -125,9 +125,8 @@ Application::Application(int& argc, char** argv) break; } default: - qWarning() << QObject::tr("The lock file could not be created. Single-instance mode disabled.") - .toUtf8() - .constData(); + qWarning() + << QObject::tr("The lock file could not be created. Single-instance mode disabled.").toUtf8().constData(); } } diff --git a/src/gui/ApplicationSettingsWidget.cpp b/src/gui/ApplicationSettingsWidget.cpp index ffefe2257..90b851bd9 100644 --- a/src/gui/ApplicationSettingsWidget.cpp +++ b/src/gui/ApplicationSettingsWidget.cpp @@ -176,7 +176,8 @@ void ApplicationSettingsWidget::loadSettings() m_generalUi->minimizeOnCloseCheckBox->setChecked(config()->get("GUI/MinimizeOnClose").toBool()); m_generalUi->systrayMinimizeOnStartup->setChecked(config()->get("GUI/MinimizeOnStartup").toBool()); m_generalUi->checkForUpdatesOnStartupCheckBox->setChecked(config()->get("GUI/CheckForUpdates").toBool()); - m_generalUi->checkForUpdatesIncludeBetasCheckBox->setChecked(config()->get("GUI/CheckForUpdatesIncludeBetas").toBool()); + m_generalUi->checkForUpdatesIncludeBetasCheckBox->setChecked( + config()->get("GUI/CheckForUpdatesIncludeBetas").toBool()); m_generalUi->autoTypeAskCheckBox->setChecked(config()->get("security/autotypeask").toBool()); if (autoType()->isAvailable()) { diff --git a/src/gui/DatabaseOpenWidget.cpp b/src/gui/DatabaseOpenWidget.cpp index 96be7dc1e..155846640 100644 --- a/src/gui/DatabaseOpenWidget.cpp +++ b/src/gui/DatabaseOpenWidget.cpp @@ -251,7 +251,11 @@ QSharedPointer DatabaseOpenWidget::databaseKey() #ifdef WITH_XC_TOUCHID // check if TouchID is available and enabled for unlocking the database - if (m_ui->checkTouchID->isChecked() && TouchID::getInstance().isAvailable() && masterKey->isEmpty()) { + if (m_ui->checkTouchID->isChecked() && TouchID::getInstance().isAvailable() + && m_ui->editPassword->text().isEmpty()) { + // clear empty password from composite key + masterKey->clear(); + // try to get, decrypt and use PasswordKey QSharedPointer passwordKey = TouchID::getInstance().getKey(m_filename); if (passwordKey != NULL) { diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 9d52af784..8728c331f 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -61,8 +61,6 @@ #include "keeshare/KeeShare.h" #include "touchid/TouchID.h" -#include "config-keepassx.h" - #ifdef Q_OS_LINUX #include #endif @@ -80,6 +78,9 @@ DatabaseWidget::DatabaseWidget(QSharedPointer db, QWidget* parent) , m_previewView(new EntryPreviewWidget(this)) , m_previewSplitter(new QSplitter(m_mainWidget)) , m_searchingLabel(new QLabel(this)) +#ifdef WITH_XC_KEESHARE + , m_shareLabel(new QLabel(this)) +#endif , m_csvImportWizard(new CsvImportWizard(this)) , m_editEntryWidget(new EditEntryWidget(this)) , m_editGroupWidget(new EditGroupWidget(this)) @@ -103,6 +104,9 @@ DatabaseWidget::DatabaseWidget(QSharedPointer db, QWidget* parent) auto* vbox = new QVBoxLayout(); vbox->setMargin(0); vbox->addWidget(m_searchingLabel); +#ifdef WITH_XC_KEESHARE + vbox->addWidget(m_shareLabel); +#endif vbox->addWidget(m_previewSplitter); rightHandSideWidget->setLayout(vbox); m_entryView = new EntryView(rightHandSideWidget); @@ -134,6 +138,16 @@ DatabaseWidget::DatabaseWidget(QSharedPointer db, QWidget* parent) "border-radius: 4px;"); m_searchingLabel->setVisible(false); +#ifdef WITH_XC_KEESHARE + m_shareLabel->setText(tr("Shared group...")); + m_shareLabel->setAlignment(Qt::AlignCenter); + m_shareLabel->setStyleSheet("color: rgb(0, 0, 0);" + "background-color: rgb(255, 253, 160);" + "border: 2px solid rgb(190, 190, 190);" + "border-radius: 4px;"); + m_shareLabel->setVisible(false); +#endif + m_previewView->hide(); m_previewSplitter->addWidget(m_entryView); m_previewSplitter->addWidget(m_previewView); @@ -194,6 +208,12 @@ DatabaseWidget::DatabaseWidget(QSharedPointer db, QWidget* parent) } #endif +#ifdef WITH_XC_KEESHARE + // We need to reregister the database to allow exports + // from a newly created database + KeeShare::instance()->connectDatabase(m_db, {}); +#endif + switchToMainView(); } @@ -377,6 +397,9 @@ void DatabaseWidget::replaceDatabase(QSharedPointer db) processAutoOpen(); #if defined(WITH_XC_KEESHARE) KeeShare::instance()->connectDatabase(m_db, oldDb); +#else + // Keep the instance active till the end of this function + Q_UNUSED(oldDb); #endif } @@ -765,9 +788,9 @@ void DatabaseWidget::switchToMainView(bool previousDialogAccepted) setCurrentWidget(m_mainWidget); - if (sender() == m_entryView) { + if (sender() == m_entryView || sender() == m_editEntryWidget) { onEntryChanged(m_entryView->currentEntry()); - } else if (sender() == m_groupView) { + } else if (sender() == m_groupView || sender() == m_editGroupWidget) { onGroupChanged(m_groupView->currentGroup()); } } @@ -1089,6 +1112,7 @@ void DatabaseWidget::search(const QString& searchtext) } m_searchingLabel->setVisible(true); + m_shareLabel->setVisible(false); emit searchModeActivated(); } @@ -1117,6 +1141,16 @@ void DatabaseWidget::onGroupChanged(Group* group) } m_previewView->setGroup(group); + +#ifdef WITH_XC_KEESHARE + auto shareLabel = KeeShare::sharingLabel(group); + if (!shareLabel.isEmpty()) { + m_shareLabel->setText(shareLabel); + m_shareLabel->setVisible(true); + } else { + m_shareLabel->setVisible(false); + } +#endif } void DatabaseWidget::onDatabaseModified() @@ -1140,6 +1174,7 @@ void DatabaseWidget::endSearch() // Show the normal entry view of the current group m_entryView->displayGroup(currentGroup()); + onGroupChanged(currentGroup()); emit listModeActivated(); } diff --git a/src/gui/DatabaseWidget.h b/src/gui/DatabaseWidget.h index f8c6a26fe..9c2788995 100644 --- a/src/gui/DatabaseWidget.h +++ b/src/gui/DatabaseWidget.h @@ -29,6 +29,8 @@ #include "gui/csvImport/CsvImportWizard.h" #include "gui/entry/EntryModel.h" +#include "config-keepassx.h" + class DatabaseOpenWidget; class KeePass1OpenWidget; class DatabaseSettingsDialog; @@ -233,6 +235,9 @@ private: QPointer m_previewView; QPointer m_previewSplitter; QPointer m_searchingLabel; +#ifdef WITH_XC_KEESHARE + QPointer m_shareLabel; +#endif QPointer m_csvImportWizard; QPointer m_editEntryWidget; QPointer m_editGroupWidget; diff --git a/src/gui/EditWidget.cpp b/src/gui/EditWidget.cpp index 6a5765933..be7ea01df 100644 --- a/src/gui/EditWidget.cpp +++ b/src/gui/EditWidget.cpp @@ -59,6 +59,7 @@ void EditWidget::addPage(const QString& labelText, const QIcon& icon, QWidget* w */ auto* scrollArea = new QScrollArea(m_ui->stackedWidget); scrollArea->setFrameShape(QFrame::NoFrame); + scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollArea->setWidget(widget); scrollArea->setWidgetResizable(true); m_ui->stackedWidget->addWidget(scrollArea); diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index 990e480ee..242ae4542 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -30,6 +30,7 @@ #include "gui/MessageBox.h" #ifdef WITH_XC_NETWORKING +#include #include #include #endif @@ -65,7 +66,6 @@ EditWidgetIcons::EditWidgetIcons(QWidget* parent) connect(m_ui->deleteButton, SIGNAL(clicked()), SLOT(removeCustomIcon())); connect(m_ui->faviconButton, SIGNAL(clicked()), SLOT(downloadFavicon())); - connect(m_ui->defaultIconsRadio, SIGNAL(toggled(bool)), this, SIGNAL(widgetUpdated())); connect(m_ui->defaultIconsRadio, SIGNAL(toggled(bool)), this, SIGNAL(widgetUpdated())); connect(m_ui->defaultIconsView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SIGNAL(widgetUpdated())); @@ -196,13 +196,27 @@ void EditWidgetIcons::downloadFavicon() m_urlsToTry.clear(); QString fullyQualifiedDomain = m_url.host(); - QString secondLevelDomain = getSecondLevelDomain(m_url); - // Attempt to simply load the favicon.ico file - if (fullyQualifiedDomain != secondLevelDomain) { - m_urlsToTry.append(QUrl(m_url.scheme() + "://" + fullyQualifiedDomain + "/favicon.ico")); + m_urlsToTry.append(QUrl(m_url.scheme() + "://" + fullyQualifiedDomain + "/favicon.ico")); + + // Determine if host portion of URL is an IP address by resolving it and + // searching for a match with the returned address(es). + bool hostIsIp = false; + QList hostAddressess = QHostInfo::fromName(fullyQualifiedDomain).addresses(); + for (auto addr : hostAddressess) { + if (addr.toString() == fullyQualifiedDomain) { + hostIsIp = true; + } + } + + if (!hostIsIp) { + QString secondLevelDomain = getSecondLevelDomain(m_url); + + // Attempt to simply load the favicon.ico file + if (fullyQualifiedDomain != secondLevelDomain) { + m_urlsToTry.append(QUrl(m_url.scheme() + "://" + secondLevelDomain + "/favicon.ico")); + } } - m_urlsToTry.append(QUrl(m_url.scheme() + "://" + secondLevelDomain + "/favicon.ico")); // Try to use alternative fallback URL, if enabled if (config()->get("security/IconDownloadFallback", false).toBool()) { @@ -210,6 +224,15 @@ void EditWidgetIcons::downloadFavicon() fallbackUrl.setPath("/ip3/" + QUrl::toPercentEncoding(fullyQualifiedDomain) + ".ico"); m_urlsToTry.append(fallbackUrl); + + if (!hostIsIp) { + QString secondLevelDomain = getSecondLevelDomain(m_url); + + if (fullyQualifiedDomain != secondLevelDomain) { + fallbackUrl.setPath("/ip3/" + QUrl::toPercentEncoding(secondLevelDomain) + ".ico"); + m_urlsToTry.append(fallbackUrl); + } + } } startFetchFavicon(m_urlsToTry.takeFirst()); @@ -277,7 +300,7 @@ void EditWidgetIcons::fetchFinished() #endif } -void EditWidgetIcons::fetchCanceled() +void EditWidgetIcons::abortRequests() { #ifdef WITH_XC_NETWORKING if (m_reply) { diff --git a/src/gui/EditWidgetIcons.h b/src/gui/EditWidgetIcons.h index a01b920f0..dcff02f56 100644 --- a/src/gui/EditWidgetIcons.h +++ b/src/gui/EditWidgetIcons.h @@ -19,7 +19,6 @@ #ifndef KEEPASSX_EDITWIDGETICONS_H #define KEEPASSX_EDITWIDGETICONS_H -#include #include #include #include @@ -66,6 +65,7 @@ public: public slots: void setUrl(const QString& url); + void abortRequests(); signals: void messageEditEntry(QString, MessageWidget::MessageType); @@ -77,7 +77,6 @@ private slots: void startFetchFavicon(const QUrl& url); void fetchFinished(); void fetchReadyRead(); - void fetchCanceled(); void addCustomIconFromFile(); bool addCustomIcon(const QImage& icon); void removeCustomIcon(); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index b3a5a9aad..6e3c96af0 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -42,9 +42,9 @@ #include "keys/PasswordKey.h" #ifdef WITH_XC_NETWORKING -#include "updatecheck/UpdateChecker.h" #include "gui/MessageBox.h" #include "gui/UpdateCheckDialog.h" +#include "updatecheck/UpdateChecker.h" #endif #ifdef WITH_XC_SSHAGENT @@ -76,7 +76,7 @@ class BrowserPlugin : public ISettingsPage { public: - BrowserPlugin(DatabaseTabWidget* tabWidget) + explicit BrowserPlugin(DatabaseTabWidget* tabWidget) { m_nativeMessagingHost = QSharedPointer(new NativeMessagingHost(tabWidget, browserSettings()->isEnabled())); @@ -374,7 +374,9 @@ MainWindow::MainWindow() #ifdef WITH_XC_NETWORKING connect(m_ui->actionCheckForUpdates, SIGNAL(triggered()), SLOT(showUpdateCheckDialog())); - connect(UpdateChecker::instance(), SIGNAL(updateCheckFinished(bool, QString, bool)), SLOT(hasUpdateAvailable(bool, QString, bool))); + connect(UpdateChecker::instance(), + SIGNAL(updateCheckFinished(bool, QString, bool)), + SLOT(hasUpdateAvailable(bool, QString, bool))); QTimer::singleShot(3000, this, SLOT(showUpdateCheckStartup())); #else m_ui->actionCheckForUpdates->setVisible(false); @@ -687,12 +689,13 @@ void MainWindow::showUpdateCheckStartup() { #ifdef WITH_XC_NETWORKING if (!config()->get("UpdateCheckMessageShown", false).toBool()) { - auto result = MessageBox::question(this, - tr("Check for updates on startup?"), - tr("Would you like KeePassXC to check for updates on startup?") + "\n\n" + - tr("You can always check for updates manually from the application menu."), - MessageBox::Yes | MessageBox::No, - MessageBox::Yes); + auto result = + MessageBox::question(this, + tr("Check for updates on startup?"), + tr("Would you like KeePassXC to check for updates on startup?") + "\n\n" + + tr("You can always check for updates manually from the application menu."), + MessageBox::Yes | MessageBox::No, + MessageBox::Yes); config()->set("GUI/CheckForUpdates", (result == MessageBox::Yes)); config()->set("UpdateCheckMessageShown", true); @@ -713,6 +716,10 @@ void MainWindow::hasUpdateAvailable(bool hasUpdate, const QString& version, bool updateCheckDialog->showUpdateCheckResponse(hasUpdate, version); updateCheckDialog->show(); } +#else + Q_UNUSED(hasUpdate) + Q_UNUSED(version) + Q_UNUSED(isManuallyRequested) #endif } diff --git a/src/gui/SearchWidget.cpp b/src/gui/SearchWidget.cpp index c657dc1bd..6e9b66929 100644 --- a/src/gui/SearchWidget.cpp +++ b/src/gui/SearchWidget.cpp @@ -120,6 +120,7 @@ bool SearchWidget::eventFilter(QObject* obj, QEvent* event) void SearchWidget::connectSignals(SignalMultiplexer& mx) { + // Connects basically only to the current DatabaseWidget, but allows to switch between instances! mx.connect(this, SIGNAL(search(QString)), SLOT(search(QString))); mx.connect(this, SIGNAL(caseSensitiveChanged(bool)), SLOT(setSearchCaseSensitive(bool))); mx.connect(this, SIGNAL(limitGroupChanged(bool)), SLOT(setSearchLimitGroup(bool))); diff --git a/src/gui/UpdateCheckDialog.cpp b/src/gui/UpdateCheckDialog.cpp index 7b0eff53e..2f6d1fc48 100644 --- a/src/gui/UpdateCheckDialog.cpp +++ b/src/gui/UpdateCheckDialog.cpp @@ -16,9 +16,9 @@ */ #include "UpdateCheckDialog.h" +#include "core/FilePath.h" #include "ui_UpdateCheckDialog.h" #include "updatecheck/UpdateChecker.h" -#include "core/FilePath.h" UpdateCheckDialog::UpdateCheckDialog(QWidget* parent) : QDialog(parent) @@ -31,35 +31,34 @@ UpdateCheckDialog::UpdateCheckDialog(QWidget* parent) m_ui->iconLabel->setPixmap(filePath()->applicationIcon().pixmap(48)); connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(close())); - connect(UpdateChecker::instance(), SIGNAL(updateCheckFinished(bool, QString, bool)), SLOT(showUpdateCheckResponse(bool, QString))); + connect(UpdateChecker::instance(), + SIGNAL(updateCheckFinished(bool, QString, bool)), + SLOT(showUpdateCheckResponse(bool, QString))); } -void UpdateCheckDialog::showUpdateCheckResponse(bool status, const QString& version) { +void UpdateCheckDialog::showUpdateCheckResponse(bool status, const QString& version) +{ m_ui->progressBar->setVisible(false); m_ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Close")); if (version == QString("error")) { setWindowTitle(tr("Update Error!")); - m_ui->statusLabel->setText( - "" + tr("Update Error!") + "

" + - tr("An error occurred in retrieving update information.") + "
" + - tr("Please try again later.")); + m_ui->statusLabel->setText("" + tr("Update Error!") + "

" + + tr("An error occurred in retrieving update information.") + "
" + + tr("Please try again later.")); return; } if (status) { setWindowTitle(tr("Software Update")); - m_ui->statusLabel->setText( - "" + tr("A new version of KeePassXC is available!") + "

" + - tr("KeePassXC %1 is now available — you have %2.").arg(version, KEEPASSXC_VERSION) + "

" + - "" + - tr("Download it at keepassxc.org") + - ""); + m_ui->statusLabel->setText("" + tr("A new version of KeePassXC is available!") + "

" + + tr("KeePassXC %1 is now available — you have %2.").arg(version, KEEPASSXC_VERSION) + + "

" + "" + + tr("Download it at keepassxc.org") + ""); } else { setWindowTitle(tr("You're up-to-date!")); - m_ui->statusLabel->setText(tr( - "KeePassXC %1 is currently the newest version available").arg(KEEPASSXC_VERSION)); + m_ui->statusLabel->setText(tr("KeePassXC %1 is currently the newest version available").arg(KEEPASSXC_VERSION)); } } diff --git a/src/gui/UpdateCheckDialog.h b/src/gui/UpdateCheckDialog.h index b601f32db..16e8bcce8 100644 --- a/src/gui/UpdateCheckDialog.h +++ b/src/gui/UpdateCheckDialog.h @@ -18,13 +18,13 @@ #ifndef KEEPASSXC_UPDATECHECKDIALOG_H #define KEEPASSXC_UPDATECHECKDIALOG_H -#include -#include -#include -#include "gui/MessageBox.h" #include "config-keepassx.h" #include "core/Global.h" +#include "gui/MessageBox.h" #include "updatecheck/UpdateChecker.h" +#include +#include +#include namespace Ui { @@ -33,7 +33,7 @@ namespace Ui class UpdateCheckDialog : public QDialog { -Q_OBJECT + Q_OBJECT public: explicit UpdateCheckDialog(QWidget* parent = nullptr); @@ -46,5 +46,4 @@ private: QScopedPointer m_ui; }; - -#endif //KEEPASSXC_UPDATECHECKDIALOG_H +#endif // KEEPASSXC_UPDATECHECKDIALOG_H diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp index b536dfc71..e5bd08a10 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp @@ -81,7 +81,7 @@ void DatabaseSettingsWidgetEncryption::initialize() isDirty = true; } if (!m_db->key()) { - m_db->setKey(QSharedPointer::create()); + m_db->setKey(QSharedPointer::create(), true, false, false); m_db->setCipher(KeePass2::CIPHER_AES256); isDirty = true; } @@ -127,8 +127,7 @@ void DatabaseSettingsWidgetEncryption::setupAlgorithmComboBox() { m_ui->algorithmComboBox->clear(); for (auto& cipher : asConst(KeePass2::CIPHERS)) { - m_ui->algorithmComboBox->addItem(cipher.second.toUtf8(), - cipher.first.toByteArray()); + m_ui->algorithmComboBox->addItem(cipher.second.toUtf8(), cipher.first.toByteArray()); } int cipherIndex = m_ui->algorithmComboBox->findData(m_db->cipher().toByteArray()); if (cipherIndex > -1) { @@ -142,8 +141,7 @@ void DatabaseSettingsWidgetEncryption::setupKdfComboBox() bool block = m_ui->kdfComboBox->blockSignals(true); m_ui->kdfComboBox->clear(); for (auto& kdf : asConst(KeePass2::KDFS)) { - m_ui->kdfComboBox->addItem(kdf.second.toUtf8(), - kdf.first.toByteArray()); + m_ui->kdfComboBox->addItem(kdf.second.toUtf8(), kdf.first.toByteArray()); } m_ui->kdfComboBox->blockSignals(block); } diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.cpp b/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.cpp index a95f5b322..d1a64b529 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.cpp @@ -136,34 +136,34 @@ bool DatabaseSettingsWidgetMasterKey::save() auto newKey = QSharedPointer::create(); - QSharedPointer passwordKey; - QSharedPointer fileKey; - QSharedPointer ykCrKey; + QSharedPointer oldPasswordKey; + QSharedPointer oldFileKey; + QSharedPointer oldChallengeResponse; for (const auto& key : m_db->key()->keys()) { if (key->uuid() == PasswordKey::UUID) { - passwordKey = key; + oldPasswordKey = key; } else if (key->uuid() == FileKey::UUID) { - fileKey = key; + oldFileKey = key; } } for (const auto& key : m_db->key()->challengeResponseKeys()) { if (key->uuid() == YkChallengeResponseKey::UUID) { - ykCrKey = key; + oldChallengeResponse = key; } } - if (!addToCompositeKey(m_passwordEditWidget, newKey, passwordKey)) { + if (!addToCompositeKey(m_passwordEditWidget, newKey, oldPasswordKey)) { return false; } - if (!addToCompositeKey(m_keyFileEditWidget, newKey, fileKey)) { + if (!addToCompositeKey(m_keyFileEditWidget, newKey, oldFileKey)) { return false; } #ifdef WITH_XC_YUBIKEY - if (!addToCompositeKey(m_yubiKeyEditWidget, newKey, ykCrKey)) { + if (!addToCompositeKey(m_yubiKeyEditWidget, newKey, oldChallengeResponse)) { return false; } #endif @@ -177,7 +177,7 @@ bool DatabaseSettingsWidgetMasterKey::save() return false; } - if (m_passwordEditWidget->visiblePage() == KeyComponentWidget::AddNew) { + if (m_passwordEditWidget->isEmpty()) { auto answer = MessageBox::warning(this, tr("No password set"), tr("WARNING! You have not set a password. Using a database without " @@ -190,9 +190,13 @@ bool DatabaseSettingsWidgetMasterKey::save() } } - m_db->setKey(newKey); + m_db->setKey(newKey, true, false, false); emit editFinished(true); + if (m_isDirty) { + m_db->markAsModified(); + } + return true; } diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index c85dbdfa0..e57bc97d6 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -142,6 +142,7 @@ void EditEntryWidget::setupMain() connect(m_mainUi->togglePasswordGeneratorButton, SIGNAL(toggled(bool)), SLOT(togglePasswordGeneratorButton(bool))); #ifdef WITH_XC_NETWORKING connect(m_mainUi->fetchFaviconButton, SIGNAL(clicked()), m_iconsWidget, SLOT(downloadFavicon())); + connect(m_mainUi->urlEdit, SIGNAL(textChanged(QString)), m_iconsWidget, SLOT(setUrl(QString))); #endif connect(m_mainUi->expireCheck, SIGNAL(toggled(bool)), m_mainUi->expireDatePicker, SLOT(setEnabled(bool))); connect(m_mainUi->notesEnabled, SIGNAL(toggled(bool)), this, SLOT(toggleHideNotes(bool))); @@ -193,6 +194,8 @@ void EditEntryWidget::setupAdvanced() void EditEntryWidget::setupIcon() { addPage(tr("Icon"), FilePath::instance()->icon("apps", "preferences-desktop-icons"), m_iconsWidget); + connect(this, SIGNAL(accepted()), m_iconsWidget, SLOT(abortRequests())); + connect(this, SIGNAL(rejected()), m_iconsWidget, SLOT(abortRequests())); } void EditEntryWidget::setupAutoType() @@ -764,7 +767,6 @@ void EditEntryWidget::setForms(Entry* entry, bool restore) iconStruct.uuid = entry->iconUuid(); iconStruct.number = entry->iconNumber(); m_iconsWidget->load(entry->uuid(), m_db, iconStruct, entry->webUrl()); - connect(m_mainUi->urlEdit, SIGNAL(textChanged(QString)), m_iconsWidget, SLOT(setUrl(QString))); m_autoTypeUi->enableButton->setChecked(entry->autoTypeEnabled()); if (entry->defaultAutoTypeSequence().isEmpty()) { diff --git a/src/gui/group/EditGroupWidget.cpp b/src/gui/group/EditGroupWidget.cpp index 41351d3d9..6c869cf28 100644 --- a/src/gui/group/EditGroupWidget.cpp +++ b/src/gui/group/EditGroupWidget.cpp @@ -36,9 +36,9 @@ public: { } - void set(Group* temporaryGroup) const + void set(Group* temporaryGroup, QSharedPointer database) const { - editPage->set(widget, temporaryGroup); + editPage->set(widget, temporaryGroup, database); } void assign() const @@ -133,7 +133,7 @@ void EditGroupWidget::loadGroup(Group* group, bool create, const QSharedPointer< m_editWidgetProperties->setCustomData(m_temporaryGroup->customData()); for (const ExtraPage& page : asConst(m_extraPages)) { - page.set(m_temporaryGroup.data()); + page.set(m_temporaryGroup.data(), m_db); } setCurrentPage(0); diff --git a/src/gui/group/EditGroupWidget.h b/src/gui/group/EditGroupWidget.h index 4de117724..fd744503c 100644 --- a/src/gui/group/EditGroupWidget.h +++ b/src/gui/group/EditGroupWidget.h @@ -43,7 +43,7 @@ public: virtual QString name() = 0; virtual QIcon icon() = 0; virtual QWidget* createWidget() = 0; - virtual void set(QWidget* widget, Group* tempoaryGroup) = 0; + virtual void set(QWidget* widget, Group* tempoaryGroup, QSharedPointer database) = 0; virtual void assign(QWidget* widget) = 0; }; diff --git a/src/gui/group/GroupModel.cpp b/src/gui/group/GroupModel.cpp index 165eaa4a0..dae9f759a 100644 --- a/src/gui/group/GroupModel.cpp +++ b/src/gui/group/GroupModel.cpp @@ -124,7 +124,7 @@ QVariant GroupModel::data(const QModelIndex& index, int role) const Group* group = groupFromIndex(index); if (role == Qt::DisplayRole) { - QString nameTemplate = tr("%1", "Template for name without annotation"); + QString nameTemplate = "%1"; #if defined(WITH_XC_KEESHARE) nameTemplate = KeeShare::indicatorSuffix(group, nameTemplate); #endif diff --git a/src/gui/masterkey/PasswordEditWidget.cpp b/src/gui/masterkey/PasswordEditWidget.cpp index d9d293c43..6f85bb198 100644 --- a/src/gui/masterkey/PasswordEditWidget.cpp +++ b/src/gui/masterkey/PasswordEditWidget.cpp @@ -40,7 +40,10 @@ PasswordEditWidget::~PasswordEditWidget() bool PasswordEditWidget::addToCompositeKey(QSharedPointer key) { - key->addKey(QSharedPointer::create(m_compUi->enterPasswordEdit->text())); + QString pw = m_compUi->enterPasswordEdit->text(); + if (!pw.isEmpty()) { + key->addKey(QSharedPointer::create(pw)); + } return true; } @@ -60,6 +63,11 @@ bool PasswordEditWidget::isPasswordVisible() const return m_compUi->togglePasswordButton->isChecked(); } +bool PasswordEditWidget::isEmpty() const +{ + return m_compUi->enterPasswordEdit->text().isEmpty(); +} + QWidget* PasswordEditWidget::componentEditWidget() { m_compEditWidget = new QWidget(); @@ -86,11 +94,6 @@ void PasswordEditWidget::initComponentEditWidget(QWidget* widget) bool PasswordEditWidget::validate(QString& errorMessage) const { - if (m_compUi->enterPasswordEdit->text().isEmpty()) { - errorMessage = tr("Password cannot be empty."); - return false; - } - if (m_compUi->enterPasswordEdit->text() != m_compUi->repeatPasswordEdit->text()) { errorMessage = tr("Passwords do not match."); return false; diff --git a/src/gui/masterkey/PasswordEditWidget.h b/src/gui/masterkey/PasswordEditWidget.h index eefe8855e..9f3eb75ce 100644 --- a/src/gui/masterkey/PasswordEditWidget.h +++ b/src/gui/masterkey/PasswordEditWidget.h @@ -38,6 +38,7 @@ public: bool addToCompositeKey(QSharedPointer key) override; void setPasswordVisible(bool visible); bool isPasswordVisible() const; + bool isEmpty() const; bool validate(QString& errorMessage) const override; protected: diff --git a/src/keeshare/KeeShare.cpp b/src/keeshare/KeeShare.cpp index 751429558..08c7b4f17 100644 --- a/src/keeshare/KeeShare.cpp +++ b/src/keeshare/KeeShare.cpp @@ -93,7 +93,7 @@ void KeeShare::setOwn(const KeeShareSettings::Own& own) bool KeeShare::isShared(const Group* group) { - return group->customData()->contains(KeeShare_Reference); + return group && group->customData()->contains(KeeShare_Reference); } KeeShareSettings::Reference KeeShare::referenceOf(const Group* group) @@ -142,6 +142,40 @@ bool KeeShare::isEnabled(const Group* group) return (reference.isImporting() && active.in) || (reference.isExporting() && active.out); } +const Group* KeeShare::resolveSharedGroup(const Group* group) +{ + while (group && group != group->database()->rootGroup()) { + if (isShared(group)) { + return group; + } + group = group->parentGroup(); + } + + return nullptr; +} + +QString KeeShare::sharingLabel(const Group* group) +{ + auto* share = resolveSharedGroup(group); + if (!share) { + return {}; + } + + const auto reference = referenceOf(share); + switch (reference.type) { + case KeeShareSettings::Inactive: + return tr("Disabled share %1").arg(reference.path); + case KeeShareSettings::ImportFrom: + return tr("Import from share %1").arg(reference.path); + case KeeShareSettings::ExportTo: + return tr("Export to share %1").arg(reference.path); + case KeeShareSettings::SynchronizeWith: + return tr("Synchronize with share %1").arg(reference.path); + } + + return {}; +} + QPixmap KeeShare::indicatorBadge(const Group* group, QPixmap pixmap) { if (!isShared(group)) { diff --git a/src/keeshare/KeeShare.h b/src/keeshare/KeeShare.h index 33c887a71..86829ea1c 100644 --- a/src/keeshare/KeeShare.h +++ b/src/keeshare/KeeShare.h @@ -43,6 +43,9 @@ public: static bool isShared(const Group* group); static bool isEnabled(const Group* group); + static const Group* resolveSharedGroup(const Group* group); + static QString sharingLabel(const Group* group); + static KeeShareSettings::Own own(); static KeeShareSettings::Active active(); static KeeShareSettings::Foreign foreign(); diff --git a/src/keeshare/SettingsWidgetKeeShare.cpp b/src/keeshare/SettingsWidgetKeeShare.cpp index efba0eb95..c58e6dc90 100644 --- a/src/keeshare/SettingsWidgetKeeShare.cpp +++ b/src/keeshare/SettingsWidgetKeeShare.cpp @@ -183,7 +183,7 @@ void SettingsWidgetKeeShare::exportCertificate() } const auto filetype = tr("key.share", "Filetype for KeeShare key"); const auto filters = QString("%1 (*." + filetype + ");;%2 (*)").arg(tr("KeeShare key file"), tr("All files")); - QString filename = tr("%1.%2", "Template for KeeShare key file").arg(m_own.certificate.signer).arg(filetype); + QString filename = QString("%1.%2").arg(m_own.certificate.signer).arg(filetype); filename = fileDialog()->getSaveFileName( this, tr("Select path"), defaultDirPath, filters, nullptr, QFileDialog::Options(0), filetype, filename); if (filename.isEmpty()) { diff --git a/src/keeshare/SettingsWidgetKeeShare.ui b/src/keeshare/SettingsWidgetKeeShare.ui index 0e7f4c99b..93bd0fa10 100644 --- a/src/keeshare/SettingsWidgetKeeShare.ui +++ b/src/keeshare/SettingsWidgetKeeShare.ui @@ -6,8 +6,8 @@ 0 0 - 327 - 434 + 378 + 508 @@ -82,7 +82,7 @@ - Signer + Signer: diff --git a/src/keeshare/ShareObserver.cpp b/src/keeshare/ShareObserver.cpp index 89352c8ab..63d8358c2 100644 --- a/src/keeshare/ShareObserver.cpp +++ b/src/keeshare/ShareObserver.cpp @@ -25,6 +25,7 @@ #include "core/Entry.h" #include "core/FilePath.h" #include "core/FileWatcher.h" +#include "core/Global.h" #include "core/Group.h" #include "core/Merger.h" #include "core/Metadata.h" @@ -191,7 +192,7 @@ void ShareObserver::reinitialize() const auto active = KeeShare::active(); QList updated; - QList groups = m_db->rootGroup()->groupsRecursive(true); + const QList groups = m_db->rootGroup()->groupsRecursive(true); for (Group* group : groups) { Update couple{group, m_groupToReference.value(group), KeeShare::referenceOf(group)}; if (couple.oldReference == couple.newReference) { @@ -214,7 +215,9 @@ void ShareObserver::reinitialize() QStringList success; QStringList warning; QStringList error; - for (const auto& update : updated) { + QMap imported; + QMap exported; + for (const auto& update : asConst(updated)) { if (!update.oldReference.path.isEmpty()) { m_fileWatcher->removePath(update.oldReference.path); } @@ -222,8 +225,12 @@ void ShareObserver::reinitialize() if (!update.newReference.path.isEmpty() && update.newReference.type != KeeShareSettings::Inactive) { m_fileWatcher->addPath(update.newReference.path); } + if (update.newReference.isExporting()) { + exported[update.newReference.path] << update.group->name(); + } if (update.newReference.isImporting()) { + imported[update.newReference.path] << update.group->name(); const auto result = this->importFromReferenceContainer(update.newReference.path); if (!result.isValid()) { // tolerable result - blocked import or missing source @@ -241,6 +248,16 @@ void ShareObserver::reinitialize() } } } + for (auto it = imported.cbegin(); it != imported.cend(); ++it) { + if (it.value().count() > 1) { + warning << tr("Multiple import source path to %1 in %2").arg(it.key(), it.value().join(", ")); + } + } + for (auto it = exported.cbegin(); it != exported.cend(); ++it) { + if (it.value().count() > 1) { + error << tr("Conflicting export target path %1 in %2").arg(it.key(), it.value().join(", ")); + } + } notifyAbout(success, warning, error); } @@ -659,8 +676,10 @@ ShareObserver::Result ShareObserver::exportIntoReferenceSignedContainer(const Ke QuaZipFile file(&zip); const auto signatureOpened = file.open(QIODevice::WriteOnly, QuaZipNewInfo(KeeShare_Signature)); if (!signatureOpened) { - ::qWarning("Embedding signature failed: %d", zip.getZipError()); - return {reference.path, Result::Error, tr("Could not embed signature (%1)").arg(file.getZipError())}; + ::qWarning("Embedding signature failed: Could not open file to write (%d)", zip.getZipError()); + return {reference.path, + Result::Error, + tr("Could not embed signature: Could not open file to write (%1)").arg(file.getZipError())}; } QTextStream stream(&file); KeeShareSettings::Sign sign; @@ -672,8 +691,10 @@ ShareObserver::Result ShareObserver::exportIntoReferenceSignedContainer(const Ke stream << KeeShareSettings::Sign::serialize(sign); stream.flush(); if (file.getZipError() != ZIP_OK) { - ::qWarning("Embedding signature failed: %d", zip.getZipError()); - return {reference.path, Result::Error, tr("Could not embed signature (%1)").arg(file.getZipError())}; + ::qWarning("Embedding signature failed: Could not write file (%d)", zip.getZipError()); + return {reference.path, + Result::Error, + tr("Could not embed signature: Could not write file (%1)").arg(file.getZipError())}; } file.close(); } @@ -681,14 +702,18 @@ ShareObserver::Result ShareObserver::exportIntoReferenceSignedContainer(const Ke QuaZipFile file(&zip); const auto dbOpened = file.open(QIODevice::WriteOnly, QuaZipNewInfo(KeeShare_Container)); if (!dbOpened) { - ::qWarning("Embedding database failed: %d", zip.getZipError()); - return {reference.path, Result::Error, tr("Could not embed database (%1)").arg(file.getZipError())}; - } - if (file.getZipError() != ZIP_OK) { - ::qWarning("Embedding database failed: %d", zip.getZipError()); - return {reference.path, Result::Error, tr("Could not embed database (%1)").arg(file.getZipError())}; + ::qWarning("Embedding database failed: Could not open file to write (%d)", zip.getZipError()); + return {reference.path, + Result::Error, + tr("Could not embed database: Could not open file to write (%1)").arg(file.getZipError())}; } file.write(bytes); + if (file.getZipError() != ZIP_OK) { + ::qWarning("Embedding database failed: Could not write file (%d)", zip.getZipError()); + return {reference.path, + Result::Error, + tr("Could not embed database: Could not write file (%1)").arg(file.getZipError())}; + } file.close(); } zip.close(); @@ -725,28 +750,55 @@ ShareObserver::Result ShareObserver::exportIntoReferenceUnsignedContainer(const QList ShareObserver::exportIntoReferenceContainers() { QList results; + struct Reference + { + KeeShareSettings::Reference config; + const Group* group; + }; + + QMap> references; const auto groups = m_db->rootGroup()->groupsRecursive(true); for (const auto* group : groups) { const auto reference = KeeShare::referenceOf(group); if (!reference.isExporting()) { continue; } + references[reference.path] << Reference{reference, group}; + } - m_fileWatcher->ignoreFileChanges(reference.path); - QScopedPointer targetDb(exportIntoContainer(reference, group)); - QFileInfo info(reference.path); + for (auto it = references.cbegin(); it != references.cend(); ++it) { + if (it.value().count() != 1) { + const auto path = it.value().first().config.path; + QStringList groups; + for (const auto& reference : it.value()) { + groups << reference.group->name(); + } + results << Result{ + path, Result::Error, tr("Conflicting export target path %1 in %2").arg(path, groups.join(", "))}; + } + } + if (!results.isEmpty()) { + // We need to block export due to config + return results; + } + + for (auto it = references.cbegin(); it != references.cend(); ++it) { + const auto& reference = it.value().first(); + m_fileWatcher->ignoreFileChanges(reference.config.path); + QScopedPointer targetDb(exportIntoContainer(reference.config, reference.group)); + QFileInfo info(reference.config.path); if (isOfExportType(info, KeeShare::signedContainerFileType())) { - results << exportIntoReferenceSignedContainer(reference, targetDb.data()); + results << exportIntoReferenceSignedContainer(reference.config, targetDb.data()); m_fileWatcher->observeFileChanges(true); continue; } if (isOfExportType(info, KeeShare::unsignedContainerFileType())) { - results << exportIntoReferenceUnsignedContainer(reference, targetDb.data()); + results << exportIntoReferenceUnsignedContainer(reference.config, targetDb.data()); m_fileWatcher->observeFileChanges(true); continue; } Q_ASSERT(false); - results << Result{reference.path, Result::Error, tr("Unexpected export error occurred")}; + results << Result{reference.config.path, Result::Error, tr("Unexpected export error occurred")}; } return results; } @@ -759,6 +811,7 @@ void ShareObserver::handleDatabaseSaved() QStringList error; QStringList warning; QStringList success; + const auto results = exportIntoReferenceContainers(); for (const Result& result : results) { if (!result.isValid()) { @@ -787,7 +840,7 @@ ShareObserver::Result::Result(const QString& path, ShareObserver::Result::Type t bool ShareObserver::Result::isValid() const { - return !path.isEmpty() || !message.isEmpty() || !message.isEmpty() || !message.isEmpty(); + return !path.isEmpty() || !message.isEmpty(); } bool ShareObserver::Result::isError() const diff --git a/src/keeshare/group/EditGroupPageKeeShare.cpp b/src/keeshare/group/EditGroupPageKeeShare.cpp index 6d2eabb92..dbc3e1186 100644 --- a/src/keeshare/group/EditGroupPageKeeShare.cpp +++ b/src/keeshare/group/EditGroupPageKeeShare.cpp @@ -42,10 +42,10 @@ QWidget* EditGroupPageKeeShare::createWidget() return new EditGroupWidgetKeeShare(); } -void EditGroupPageKeeShare::set(QWidget* widget, Group* temporaryGroup) +void EditGroupPageKeeShare::set(QWidget* widget, Group* temporaryGroup, QSharedPointer database) { EditGroupWidgetKeeShare* settingsWidget = reinterpret_cast(widget); - settingsWidget->setGroup(temporaryGroup); + settingsWidget->setGroup(temporaryGroup, database); } void EditGroupPageKeeShare::assign(QWidget* widget) diff --git a/src/keeshare/group/EditGroupPageKeeShare.h b/src/keeshare/group/EditGroupPageKeeShare.h index 786c43435..a712d93da 100644 --- a/src/keeshare/group/EditGroupPageKeeShare.h +++ b/src/keeshare/group/EditGroupPageKeeShare.h @@ -30,7 +30,7 @@ public: QString name() override; QIcon icon() override; QWidget* createWidget() override; - void set(QWidget* widget, Group* temporaryGroup) override; + void set(QWidget* widget, Group* temporaryGroup, QSharedPointer database) override; void assign(QWidget* widget) override; }; diff --git a/src/keeshare/group/EditGroupWidgetKeeShare.cpp b/src/keeshare/group/EditGroupWidgetKeeShare.cpp index 253bb9819..49e640639 100644 --- a/src/keeshare/group/EditGroupWidgetKeeShare.cpp +++ b/src/keeshare/group/EditGroupWidgetKeeShare.cpp @@ -54,6 +54,7 @@ EditGroupWidgetKeeShare::EditGroupWidgetKeeShare(QWidget* parent) connect(m_ui->pathEdit, SIGNAL(editingFinished()), SLOT(selectPath())); connect(m_ui->pathSelectionButton, SIGNAL(pressed()), SLOT(launchPathSelectionDialog())); connect(m_ui->typeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(selectType())); + connect(m_ui->clearButton, SIGNAL(clicked(bool)), SLOT(clearInputs())); connect(KeeShare::instance(), SIGNAL(activeChanged()), SLOT(showSharingState())); @@ -84,12 +85,13 @@ EditGroupWidgetKeeShare::~EditGroupWidgetKeeShare() { } -void EditGroupWidgetKeeShare::setGroup(Group* temporaryGroup) +void EditGroupWidgetKeeShare::setGroup(Group* temporaryGroup, QSharedPointer database) { if (m_temporaryGroup) { m_temporaryGroup->disconnect(this); } + m_database = database; m_temporaryGroup = temporaryGroup; if (m_temporaryGroup) { @@ -127,9 +129,43 @@ void EditGroupWidgetKeeShare::showSharingState() .arg(supportedExtensions.join(", ")), MessageWidget::Warning); return; - } else { - m_ui->messageWidget->hide(); } + + const auto groups = m_database->rootGroup()->groupsRecursive(true); + bool conflictExport = false; + bool multipleImport = false; + bool cycleImportExport = false; + for (const auto* group : groups) { + if (group->uuid() == m_temporaryGroup->uuid()) { + continue; + } + const auto other = KeeShare::referenceOf(group); + if (other.path != reference.path) { + continue; + } + multipleImport |= other.isImporting() && reference.isImporting(); + conflictExport |= other.isExporting() && reference.isExporting(); + cycleImportExport |= + (other.isImporting() && reference.isExporting()) || (other.isExporting() && reference.isImporting()); + } + if (conflictExport) { + m_ui->messageWidget->showMessage(tr("The export container %1 is already referenced.").arg(reference.path), + MessageWidget::Error); + return; + } + if (multipleImport) { + m_ui->messageWidget->showMessage(tr("The import container %1 is already imported.").arg(reference.path), + MessageWidget::Warning); + return; + } + if (cycleImportExport) { + m_ui->messageWidget->showMessage( + tr("The container %1 imported and export by different groups.").arg(reference.path), + MessageWidget::Warning); + return; + } + + m_ui->messageWidget->hide(); } const auto active = KeeShare::active(); if (!active.in && !active.out) { @@ -166,6 +202,17 @@ void EditGroupWidgetKeeShare::update() m_ui->togglePasswordButton->setChecked(false); } +void EditGroupWidgetKeeShare::clearInputs() +{ + if (m_temporaryGroup) { + KeeShare::setReferenceTo(m_temporaryGroup, KeeShareSettings::Reference()); + } + m_ui->passwordEdit->clear(); + m_ui->pathEdit->clear(); + m_ui->typeComboBox->setCurrentIndex(KeeShareSettings::Inactive); + m_ui->passwordGenerator->setVisible(false); +} + void EditGroupWidgetKeeShare::togglePasswordGeneratorButton(bool checked) { m_ui->passwordGenerator->regeneratePassword(); diff --git a/src/keeshare/group/EditGroupWidgetKeeShare.h b/src/keeshare/group/EditGroupWidgetKeeShare.h index 140f13c86..b4e169b5a 100644 --- a/src/keeshare/group/EditGroupWidgetKeeShare.h +++ b/src/keeshare/group/EditGroupWidgetKeeShare.h @@ -37,13 +37,14 @@ public: explicit EditGroupWidgetKeeShare(QWidget* parent = nullptr); ~EditGroupWidgetKeeShare(); - void setGroup(Group* temporaryGroup); + void setGroup(Group* temporaryGroup, QSharedPointer database); private slots: void showSharingState(); private slots: void update(); + void clearInputs(); void selectType(); void selectPassword(); void launchPathSelectionDialog(); @@ -54,6 +55,7 @@ private slots: private: QScopedPointer m_ui; QPointer m_temporaryGroup; + QSharedPointer m_database; }; #endif // KEEPASSXC_EDITGROUPWIDGETKEESHARE_H diff --git a/src/keeshare/group/EditGroupWidgetKeeShare.ui b/src/keeshare/group/EditGroupWidgetKeeShare.ui index 02361f92d..30e34962f 100644 --- a/src/keeshare/group/EditGroupWidgetKeeShare.ui +++ b/src/keeshare/group/EditGroupWidgetKeeShare.ui @@ -97,6 +97,13 @@ + + + + Clear + + + diff --git a/src/main.cpp b/src/main.cpp index a88deb3b3..a546c0491 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -67,19 +67,13 @@ int main(int argc, char** argv) Bootstrap::bootstrapApplication(); QCommandLineParser parser; - parser.setApplicationDescription( - QObject::tr("KeePassXC - cross-platform password manager")); + parser.setApplicationDescription(QObject::tr("KeePassXC - cross-platform password manager")); parser.addPositionalArgument( - "filename", - QObject::tr("filenames of the password databases to open (*.kdbx)"), - "[filename(s)]"); + "filename", QObject::tr("filenames of the password databases to open (*.kdbx)"), "[filename(s)]"); - QCommandLineOption configOption( - "config", QObject::tr("path to a custom config file"), "config"); - QCommandLineOption keyfileOption( - "keyfile", QObject::tr("key file of the database"), "keyfile"); - QCommandLineOption pwstdinOption("pw-stdin", - QObject::tr("read password of the database from stdin")); + QCommandLineOption configOption("config", QObject::tr("path to a custom config file"), "config"); + QCommandLineOption keyfileOption("keyfile", QObject::tr("key file of the database"), "keyfile"); + QCommandLineOption pwstdinOption("pw-stdin", QObject::tr("read password of the database from stdin")); // This is needed under Windows where clients send --parent-window parameter with Native Messaging connect method QCommandLineOption parentWindowOption(QStringList() << "pw" << "parent-window", @@ -106,9 +100,7 @@ int main(int argc, char** argv) if (!fileNames.isEmpty()) { app.sendFileNamesToRunningInstance(fileNames); } - qWarning() << QObject::tr("Another instance of KeePassXC is already running.") - .toUtf8() - .constData(); + qWarning() << QObject::tr("Another instance of KeePassXC is already running.").toUtf8().constData(); return 0; } diff --git a/src/proxy/NativeMessagingHost.cpp b/src/proxy/NativeMessagingHost.cpp index 60f5d79ed..3c401e4c9 100644 --- a/src/proxy/NativeMessagingHost.cpp +++ b/src/proxy/NativeMessagingHost.cpp @@ -19,7 +19,7 @@ #include #ifdef Q_OS_WIN -#include +#include #endif NativeMessagingHost::NativeMessagingHost() @@ -36,14 +36,12 @@ NativeMessagingHost::NativeMessagingHost() } #ifdef Q_OS_WIN m_running.store(true); - m_future = - QtConcurrent::run(this, static_cast(&NativeMessagingHost::readNativeMessages)); + m_future = QtConcurrent::run(this, &NativeMessagingHost::readNativeMessages); #endif connect(m_localSocket, SIGNAL(readyRead()), this, SLOT(newLocalMessage())); connect(m_localSocket, SIGNAL(disconnected()), this, SLOT(deleteSocket())); connect(m_localSocket, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)), - this, SLOT(socketStateChanged(QLocalSocket::LocalSocketState))); } diff --git a/src/proxy/NativeMessagingHost.h b/src/proxy/NativeMessagingHost.h index 083e12d48..5bedd9de5 100644 --- a/src/proxy/NativeMessagingHost.h +++ b/src/proxy/NativeMessagingHost.h @@ -25,7 +25,7 @@ class NativeMessagingHost : public NativeMessagingBase Q_OBJECT public: NativeMessagingHost(); - ~NativeMessagingHost(); + ~NativeMessagingHost() override; public slots: void newLocalMessage(); @@ -33,12 +33,14 @@ public slots: void socketStateChanged(QLocalSocket::LocalSocketState socketState); private: - void readNativeMessages(); - void readLength(); - bool readStdIn(const quint32 length); + void readNativeMessages() override; + void readLength() override; + bool readStdIn(const quint32 length) override; private: QLocalSocket* m_localSocket; + + Q_DISABLE_COPY(NativeMessagingHost) }; #endif // NATIVEMESSAGINGHOST_H diff --git a/src/proxy/keepassxc-proxy.cpp b/src/proxy/keepassxc-proxy.cpp index 0d0fbfb23..ea472b2c3 100644 --- a/src/proxy/keepassxc-proxy.cpp +++ b/src/proxy/keepassxc-proxy.cpp @@ -55,13 +55,29 @@ void catchUnixSignals(std::initializer_list quitSignals) sigaction(sig, &sa, nullptr); } } +#else +#include + +BOOL WINAPI ConsoleHandler(DWORD dwType) +{ + switch (dwType) { + case CTRL_C_EVENT: + case CTRL_SHUTDOWN_EVENT: + case CTRL_LOGOFF_EVENT: + QCoreApplication::quit(); + break; + } + return TRUE; +} #endif int main(int argc, char* argv[]) { QCoreApplication a(argc, argv); -#if defined(Q_OS_UNIX) || defined(Q_OS_LINUX) +#ifndef Q_OS_WIN catchUnixSignals({SIGQUIT, SIGINT, SIGTERM, SIGHUP}); +#else + SetConsoleCtrlHandler(static_cast(ConsoleHandler), TRUE); #endif NativeMessagingHost host; return a.exec(); diff --git a/src/streams/SymmetricCipherStream.cpp b/src/streams/SymmetricCipherStream.cpp index f6957622d..b930d8023 100644 --- a/src/streams/SymmetricCipherStream.cpp +++ b/src/streams/SymmetricCipherStream.cpp @@ -28,6 +28,7 @@ SymmetricCipherStream::SymmetricCipherStream(QIODevice* baseDevice, , m_error(false) , m_isInitialized(false) , m_dataWritten(false) + , m_streamCipher(false) { } diff --git a/src/updatecheck/UpdateChecker.cpp b/src/updatecheck/UpdateChecker.cpp index ff10821bb..4272410b6 100644 --- a/src/updatecheck/UpdateChecker.cpp +++ b/src/updatecheck/UpdateChecker.cpp @@ -16,11 +16,11 @@ */ #include "UpdateChecker.h" -#include "core/Config.h" #include "config-keepassx.h" +#include "core/Config.h" #include -#include #include +#include UpdateChecker* UpdateChecker::m_instance(nullptr); @@ -28,6 +28,7 @@ UpdateChecker::UpdateChecker(QObject* parent) : QObject(parent) , m_netMgr(new QNetworkAccessManager(this)) , m_reply(nullptr) + , m_isManuallyRequested(false) { } diff --git a/src/updatecheck/UpdateChecker.h b/src/updatecheck/UpdateChecker.h index aa1262bd5..ac6471d64 100644 --- a/src/updatecheck/UpdateChecker.h +++ b/src/updatecheck/UpdateChecker.h @@ -17,8 +17,8 @@ #ifndef KEEPASSXC_UPDATECHECK_H #define KEEPASSXC_UPDATECHECK_H -#include #include +#include class QNetworkAccessManager; class QNetworkReply; @@ -57,4 +57,4 @@ inline UpdateChecker* updateCheck() return UpdateChecker::instance(); } -#endif //KEEPASSXC_UPDATECHECK_H +#endif // KEEPASSXC_UPDATECHECK_H diff --git a/tests/TestEntrySearcher.cpp b/tests/TestEntrySearcher.cpp index 8128dd36e..e949b97b8 100644 --- a/tests/TestEntrySearcher.cpp +++ b/tests/TestEntrySearcher.cpp @@ -177,8 +177,8 @@ void TestEntrySearcher::testAllAttributesAreSearched() void TestEntrySearcher::testSearchTermParser() { // Test standard search terms - auto terms = - m_entrySearcher.parseSearchTerms("-test \"quoted \\\"string\\\"\" user:user pass:\"test me\" noquote "); + m_entrySearcher.parseSearchTerms("-test \"quoted \\\"string\\\"\" user:user pass:\"test me\" noquote "); + auto terms = m_entrySearcher.m_searchTerms; QCOMPARE(terms.length(), 5); @@ -200,7 +200,8 @@ void TestEntrySearcher::testSearchTermParser() QCOMPARE(terms[4]->word, QString("noquote")); // Test wildcard and regex search terms - terms = m_entrySearcher.parseSearchTerms("+url:*.google.com *user:\\d+\\w{2}"); + m_entrySearcher.parseSearchTerms("+url:*.google.com *user:\\d+\\w{2}"); + terms = m_entrySearcher.m_searchTerms; QCOMPARE(terms.length(), 2); diff --git a/tests/TestGroup.cpp b/tests/TestGroup.cpp index 9abbd31d1..3e4568c35 100644 --- a/tests/TestGroup.cpp +++ b/tests/TestGroup.cpp @@ -811,7 +811,6 @@ void TestGroup::testCopyDataFrom() group3->setName("TestGroup3"); group3->customData()->set("testKey", "value"); - QSignalSpy spyGroupModified(group.data(), SIGNAL(groupModified())); QSignalSpy spyGroupDataChanged(group.data(), SIGNAL(groupDataChanged(Group*))); diff --git a/tests/TestUpdateCheck.cpp b/tests/TestUpdateCheck.cpp index 3bde72950..8cba43b1d 100644 --- a/tests/TestUpdateCheck.cpp +++ b/tests/TestUpdateCheck.cpp @@ -17,8 +17,8 @@ #include "TestUpdateCheck.h" #include "TestGlobal.h" -#include "updatecheck/UpdateChecker.h" #include "crypto/Crypto.h" +#include "updatecheck/UpdateChecker.h" QTEST_GUILESS_MAIN(TestUpdateCheck) @@ -29,7 +29,7 @@ void TestUpdateCheck::initTestCase() void TestUpdateCheck::testCompareVersion() { - // Remote Version , Installed Version + // Remote Version , Installed Version QCOMPARE(UpdateChecker::compareVersions(QString("2.4.0"), QString("2.3.4")), true); QCOMPARE(UpdateChecker::compareVersions(QString("2.3.0"), QString("2.4.0")), false); QCOMPARE(UpdateChecker::compareVersions(QString("2.3.0"), QString("2.3.0")), false); diff --git a/tests/TestUpdateCheck.h b/tests/TestUpdateCheck.h index 57abd998d..3051aa4f4 100644 --- a/tests/TestUpdateCheck.h +++ b/tests/TestUpdateCheck.h @@ -22,7 +22,7 @@ class TestUpdateCheck : public QObject { -Q_OBJECT + Q_OBJECT private slots: void initTestCase(); diff --git a/utils/keepassxc-snap-helper.sh b/utils/keepassxc-snap-helper.sh new file mode 100755 index 000000000..4b2ce94d6 --- /dev/null +++ b/utils/keepassxc-snap-helper.sh @@ -0,0 +1,142 @@ +#!/usr/bin/env bash +# +# KeePassXC Browser Extension Native Messaging Installer Tool +# Copyright (C) 2017 KeePassXC team +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 or (at your option) +# version 3 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set -e + +DEBUG=false + +JSON_BASE=$(cat << EOF +{ + "name": "org.keepassxc.keepassxc_browser", + "description": "KeePassXC integration with native messaging support", + "path": "/snap/bin/keepassxc.proxy", + "type": "stdio", + __EXT__ +} +EOF +) + +JSON_FIREFOX=$(cat << EOF +"allowed_extensions": [ + "keepassxc-browser@keepassxc.org" + ] +EOF +) + +JSON_CHROME=$(cat << EOF +"allowed_origins": [ + "chrome-extension://iopaggbpplllidnfmcghoonnokmjoicf/", + "chrome-extension://oboonakemofpalcgghocfoadofidjkkk/" + ] +EOF +) + +JSON_OUT="" +BASE_DIR="." +INSTALL_DIR="" +INSTALL_FILE="org.keepassxc.keepassxc_browser.json" + +buildJson() { + if [[ ! -z $1 ]]; then + # Insert Firefox data + JSON_OUT="${JSON_BASE/__EXT__/$JSON_FIREFOX}" + else + # Insert Chrome data + JSON_OUT="${JSON_BASE/__EXT__/$JSON_CHROME}" + fi +} + +askBrowserSnap() { + if (whiptail --title "Snap Choice" --defaultno \ + --yesno "Is this browser installed as a snap (usually NO)?" 8 60); then + # BASE_DIR="$1" + whiptail --title "Snap Choice" --msgbox "Sorry, browsers installed as snaps are not supported at this time" 8 50 + exit 0 + fi +} + +setupFirefox() { + askBrowserSnap "./snap/firefox/common" + buildJson "firefox" + INSTALL_DIR="${BASE_DIR}/.mozilla/native-messaging-hosts" +} + +setupChrome() { + buildJson + INSTALL_DIR="${BASE_DIR}/.config/google-chrome/NativeMessagingHosts" +} + +setupChromium() { + askBrowserSnap "./snap/chromium/current" + buildJson + INSTALL_DIR="${BASE_DIR}/.config/chromium/NativeMessagingHosts" +} + +setupVivaldi() { + buildJson + INSTALL_DIR="${BASE_DIR}/.config/vivaldi/NativeMessagingHosts" +} + +setupTorBrowser() { + buildJson "firefox" + INSTALL_DIR="${BASE_DIR}/.tor-browser/app/Browser/TorBrowser/Data/Browser/.mozilla/native-messaging-hosts" +} + +# -------------------------------- +# Start of script +# -------------------------------- + +BROWSER=$(whiptail \ + --title "Browser Selection" \ + --menu "Choose a browser to integrate with KeePassXC:" \ + 15 60 5 \ + "1" "Firefox" \ + "2" "Chrome" \ + "3" "Chromium" \ + "4" "Vivaldi" \ + "5" "Tor Browser" \ + 3>&1 1>&2 2>&3) + +clear + +exitstatus=$? +if [ $exitstatus = 0 ]; then + # Configure settings for the chosen browser + case "$BROWSER" in + 1) setupFirefox ;; + 2) setupChrome ;; + 3) setupChromium ;; + 4) setupVivaldi ;; + 5) setupTorBrowser ;; + esac + + # Install the JSON file + cd ~ + mkdir -p "$INSTALL_DIR" + echo "$JSON_OUT" > ${INSTALL_DIR}/${INSTALL_FILE} + + $DEBUG && echo "Installed to: ${INSTALL_DIR}/${INSTALL_FILE}" + + whiptail \ + --title "Installation Complete" \ + --msgbox "You will need to restart your browser in order to connect to KeePassXC" \ + 8 50 +else + whiptail --title "Installation Canceled" --msgbox "No changes were made to your system" 8 50 +fi +