Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan White <support@dmapps.us>2018-05-08 06:20:10 +0300
committerJonathan White <support@dmapps.us>2018-05-08 06:20:10 +0300
commit2bb72eba0292ad44016b496d84907a9aa7968684 (patch)
treee57f66cff4f6207698a9b1df807f628fa14c97c1
parent2fcaeeaec88827632bf2e0407adc34bdcd19fc5e (diff)
parent902584855b7784b29429c85a6d640444717d525d (diff)
Release 2.3.22.3.2
- Enable high entropy ASLR on Windows [#1747] - Enhance favicon fetching [#1786] - Fix crash on Windows due to autotype [#1691] - Fix dark tray icon changing all icons [#1680] - Fix --pw-stdin not using getPassword function [#1686] - Fix placeholders being resolved in notes [#1907] - Enable auto-type start delay to be configurable [#1908] - Browser: Fix native messaging reply size [#1719] - Browser: Increase maximum buffer size [#1720] - Browser: Enhance usability and functionality [#1810, #1822, #1830, #1884, #1906] - SSH Agent: Parse aes-256-cbc/ctr keys [#1682] - SSH Agent: Enhance usability and functionality [#1677, #1679, #1681, #1787]
-rw-r--r--CHANGELOG16
-rw-r--r--CMakeLists.txt6
-rw-r--r--README.md2
-rw-r--r--share/linux/org.keepassxc.KeePassXC.appdata.xml18
-rw-r--r--share/translations/keepassx_bn.ts4102
-rw-r--r--share/translations/keepassx_ca.ts64
-rw-r--r--share/translations/keepassx_en.ts45
-rw-r--r--share/translations/keepassx_en_GB.ts4096
-rw-r--r--share/translations/keepassx_es.ts402
-rw-r--r--share/translations/keepassx_fi.ts4
-rw-r--r--share/translations/keepassx_id.ts46
-rw-r--r--share/translations/keepassx_nb.ts1124
-rw-r--r--share/translations/keepassx_nl_NL.ts14
-rw-r--r--share/translations/keepassx_pl.ts2
-rw-r--r--share/translations/keepassx_pt_BR.ts26
-rw-r--r--share/translations/keepassx_ro.ts58
-rw-r--r--share/translations/keepassx_uk.ts135
-rw-r--r--share/translations/keepassx_zh_CN.ts24
-rw-r--r--snapcraft.yaml2
-rw-r--r--src/CMakeLists.txt5
-rw-r--r--src/autotype/AutoType.cpp63
-rw-r--r--src/autotype/AutoType.h3
-rw-r--r--src/autotype/AutoTypePlatformPlugin.h1
-rw-r--r--src/autotype/mac/AutoTypeMac.cpp5
-rw-r--r--src/autotype/mac/AutoTypeMac.h1
-rw-r--r--src/autotype/test/AutoTypeTest.cpp5
-rw-r--r--src/autotype/test/AutoTypeTest.h1
-rw-r--r--src/autotype/windows/AutoTypeWindows.cpp5
-rw-r--r--src/autotype/windows/AutoTypeWindows.h1
-rw-r--r--src/autotype/xcb/AutoTypeXCB.cpp6
-rw-r--r--src/autotype/xcb/AutoTypeXCB.h1
-rwxr-xr-xsrc/browser/BrowserAction.cpp15
-rwxr-xr-xsrc/browser/BrowserOptionDialog.cpp1
-rw-r--r--src/browser/BrowserService.cpp71
-rw-r--r--src/browser/BrowserService.h8
-rwxr-xr-xsrc/browser/BrowserSettings.h4
-rw-r--r--src/browser/NativeMessagingBase.cpp12
-rw-r--r--src/browser/NativeMessagingBase.h9
-rwxr-xr-xsrc/browser/NativeMessagingHost.cpp21
-rwxr-xr-xsrc/browser/NativeMessagingHost.h2
-rw-r--r--src/core/Config.cpp1
-rw-r--r--src/core/FilePath.cpp10
-rw-r--r--src/core/FilePath.h1
-rw-r--r--src/gui/DatabaseOpenWidget.cpp3
-rw-r--r--src/gui/DetailsWidget.cpp2
-rw-r--r--src/gui/EditWidgetIcons.cpp203
-rw-r--r--src/gui/EditWidgetIcons.h33
-rw-r--r--src/gui/MainWindow.cpp14
-rw-r--r--src/gui/SettingsWidget.cpp2
-rw-r--r--src/gui/SettingsWidgetGeneral.ui49
-rw-r--r--src/gui/entry/EditEntryWidget.cpp47
-rw-r--r--src/gui/entry/EditEntryWidget.h1
-rw-r--r--src/gui/entry/EntryModel.cpp2
-rw-r--r--src/main.cpp30
-rwxr-xr-xsrc/proxy/CMakeLists.txt3
-rwxr-xr-xsrc/proxy/NativeMessagingHost.cpp13
-rw-r--r--src/sshagent/OpenSSHKey.cpp24
-rw-r--r--src/sshagent/SSHAgent.cpp23
-rw-r--r--src/sshagent/blf.h12
-rw-r--r--src/sshagent/blowfish.c4
-rw-r--r--src/sshagent/includes.h20
-rw-r--r--tests/TestOpenSSHKey.cpp162
-rw-r--r--tests/TestOpenSSHKey.h8
-rw-r--r--tests/gui/TestGui.cpp28
-rw-r--r--tests/gui/TestGui.h1
65 files changed, 9936 insertions, 1186 deletions
diff --git a/CHANGELOG b/CHANGELOG
index fa3700e5d..4e344b748 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,19 @@
+2.3.2 (2018-05-07)
+=========================
+
+- Enable high entropy ASLR on Windows [#1747]
+- Enhance favicon fetching [#1786]
+- Fix crash on Windows due to autotype [#1691]
+- Fix dark tray icon changing all icons [#1680]
+- Fix --pw-stdin not using getPassword function [#1686]
+- Fix placeholders being resolved in notes [#1907]
+- Enable auto-type start delay to be configurable [#1908]
+- Browser: Fix native messaging reply size [#1719]
+- Browser: Increase maximum buffer size [#1720]
+- Browser: Enhance usability and functionality [#1810, #1822, #1830, #1884, #1906]
+- SSH Agent: Parse aes-256-cbc/ctr keys [#1682]
+- SSH Agent: Enhance usability and functionality [#1677, #1679, #1681, #1787]
+
2.3.1 (2018-03-06)
=========================
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4c8929aef..2e545d1a6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -70,7 +70,7 @@ set(CMAKE_AUTOUIC ON)
set(KEEPASSXC_VERSION_MAJOR "2")
set(KEEPASSXC_VERSION_MINOR "3")
-set(KEEPASSXC_VERSION_PATCH "1")
+set(KEEPASSXC_VERSION_PATCH "2")
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION_MAJOR}.${KEEPASSXC_VERSION_MINOR}.${KEEPASSXC_VERSION_PATCH}")
set(KEEPASSXC_BUILD_TYPE "Snapshot" CACHE STRING "Set KeePassXC build type to distinguish between stable releases and snapshots")
@@ -245,8 +245,8 @@ if(MINGW)
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
# Enable DEP and ASLR
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
- set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase -Wl,--high-entropy-va")
+ set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase -Wl,--high-entropy-va")
endif()
endif()
diff --git a/README.md b/README.md
index 9f81795c5..b09a5d208 100644
--- a/README.md
+++ b/README.md
@@ -33,7 +33,7 @@ so please check out your distribution's package list to see if KeePassXC is avai
[Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepasshttp-connector/) and
[Google Chrome or Chromium](https://chrome.google.com/webstore/detail/keepasshttp-connector/dafgdjggglmmknipkhngniifhplpcldb), and
[passafari](https://github.com/mmichaa/passafari.safariextension/) in Safari. [[See note about KeePassHTTP]](#Note_about_KeePassHTTP)
-- Browser integration with KeePassXC-Browser using [native messaging](https://developer.chrome.com/extensions/nativeMessaging) for [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/) and [Google Chrome or Chromium](https://chrome.google.com/webstore/detail/keepassxc-browser/iopaggbpplllidnfmcghoonnokmjoicf)
+- Browser integration with KeePassXC-Browser using [native messaging](https://developer.chrome.com/extensions/nativeMessaging) for [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/) and [Google Chrome or Chromium](https://chrome.google.com/webstore/detail/keepassxc-browser/oboonakemofpalcgghocfoadofidjkkk)
- Many bug fixes
For a full list of features and changes, read the [CHANGELOG](CHANGELOG) document.
diff --git a/share/linux/org.keepassxc.KeePassXC.appdata.xml b/share/linux/org.keepassxc.KeePassXC.appdata.xml
index f5796e4ea..ba7f8e6fc 100644
--- a/share/linux/org.keepassxc.KeePassXC.appdata.xml
+++ b/share/linux/org.keepassxc.KeePassXC.appdata.xml
@@ -50,6 +50,24 @@
</screenshots>
<releases>
+ <release version="2.3.2" date="2018-05-07">
+ <description>
+ <ul>
+ <li>Enable high entropy ASLR on Windows [#1747]</li>
+ <li>Enhance favicon fetching [#1786]</li>
+ <li>Fix crash on Windows due to autotype [#1691]</li>
+ <li>Fix dark tray icon changing all icons [#1680]</li>
+ <li>Fix --pw-stdin not using getPassword function [#1686]</li>
+ <li>Fix placeholders being resolved in notes [#1907]</li>
+ <li>Enable auto-type start delay to be configurable [#1908]</li>
+ <li>Browser: Fix native messaging reply size [#1719]</li>
+ <li>Browser: Increase maximum buffer size [#1720]</li>
+ <li>Browser: Enhance usability and functionality [#1810, #1822, #1830, #1884, #1906]</li>
+ <li>SSH Agent: Parse aes-256-cbc/ctr keys [#1682]</li>
+ <li>SSH Agent: Enhance usability and functionality [#1677, #1679, #1681, #1787]</li>
+ </ul>
+ </description>
+ </release>
<release version="2.3.1" date="2018-03-06">
<description>
<ul>
diff --git a/share/translations/keepassx_bn.ts b/share/translations/keepassx_bn.ts
new file mode 100644
index 000000000..344e6864f
--- /dev/null
+++ b/share/translations/keepassx_bn.ts
@@ -0,0 +1,4102 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="bn" version="2.1">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <source>About KeePassXC</source>
+ <translation>KeePassXC সম্পর্কে</translation>
+ </message>
+ <message>
+ <source>About</source>
+ <translation>সম্পর্কে</translation>
+ </message>
+ <message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>বাগ রিপোর্ট করুন: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt; https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>GNU General Public License (GPL) সংস্করণ ২ বা (আপনার ইচ্ছানুসারে) সংস্করণ ৩ এর অধীনে KeePassXC বিনামূল্যে বিতরন করা হয়।</translation>
+ </message>
+ <message>
+ <source>Contributors</source>
+ <translation>অবদানকারী</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt; গিটহাবে আবদনকারীদের দেখুন&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>Debug Info</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>যখন আপনি একটি বাগ রিপোর্ট করুন নিচের তথ্যগুলো অন্তর্ভুক্ত করুন:</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>ক্লিপবোর্ডে কপি করুন</translation>
+ </message>
+ <message>
+ <source>Version %1
+</source>
+ <translation>সংস্করণ %1
+</translation>
+ </message>
+ <message>
+ <source>Revision: %1</source>
+ <translation>পরিমার্জনা %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>বিতরণ: %1</translation>
+ </message>
+ <message>
+ <source>Libraries:</source>
+ <translation>লাইব্রেরীসমূহ:</translation>
+ </message>
+ <message>
+ <source>Operating system: %1
+CPU architecture: %2
+Kernel: %3 %4</source>
+ <translation>অপারেটিং সিস্টেম: %1
+সিপিইউ আর্কিটেক্সার: %2
+কার্নেল: %3 %4</translation>
+ </message>
+ <message>
+ <source>Enabled extensions:</source>
+ <translation>সক্রিয় এক্সটেনশনগুলি:</translation>
+ </message>
+ <message>
+ <source>Project Maintainers:</source>
+ <translation>প্রকল্প রক্ষণাবেক্ষণকারী:</translation>
+ </message>
+ <message>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>KeePassXC টিম থেকে বিশেষ ধন্যবাদ debfx-কে মূল KeePassX তৈরি করার জন্য ।</translation>
+ </message>
+ <message>
+ <source>Build Type: %1
+</source>
+ <translation>বিল্ড প্রকার: %1
+</translation>
+ </message>
+</context>
+<context>
+ <name>AccessControlDialog</name>
+ <message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP অ্যাক্সেস নিশ্চিত করুন</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>এই সিদ্ধান্ত মনে রাখুন</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>অনুমতি দিন</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>নাকচ করুন</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 নিম্নলিখিত আইটেম (গুলি) এর জন্য পাসওয়ার্ড অ্যাক্সেসের অনুরোধ জানিয়েছে
+আপনি প্রবেশাধিকার অনুমতি দিতে চান তা নির্বাচন করুন।</translation>
+ </message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
+ <message>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>SSH এজেন্ট সক্ষম করুন (পুনর্সূচনা প্রয়োজন)</translation>
+ </message>
+</context>
+<context>
+ <name>AutoType</name>
+ <message>
+ <source>Couldn&apos;t find an entry that matches the window title:</source>
+ <translation>উইন্ডো শিরোনামের সাথে সম্পর্কিক একটিও এন্ট্রি খুঁজে পাওয়া যায়নি:</translation>
+ </message>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>অটো-টাইপ- KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>অটো-টাইপ</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>আপনার অটো টাইপ বিবৃতি সিনট্যাক্স সঠিক নয়!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>এই অটো-টাইপ কমান্ডের মধ্যে একটি খুব দীর্ঘ বিলম্ব রয়েছে। আপনি কি সত্যিই এগিয়ে যেতে চান?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>এই অটো-টাইপ কমান্ডটি খুব ধীর গতির কী প্রেস রয়েছে। আপনি কি সত্যিই এগিয়ে যেতে চান?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>এই অটো-টাইপ কমান্ডটি আর্গুমেন্টগুলির মধ্যে রয়েছে যা প্রায়শই পুনরাবৃত্তি হয়। আপনি কি সত্যিই এগিয়ে যেতে চান?</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeAssociationsModel</name>
+ <message>
+ <source>Window</source>
+ <translation>উইন্ডো</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>অনুক্রম</translation>
+ </message>
+ <message>
+ <source>Default sequence</source>
+ <translation>সচারচর অনুক্রম</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>দল</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>শিরোনাম</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ব্যবহারকরীর নাম</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>অনুক্রম</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeSelectDialog</name>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>অটো-টাইপ- KeePassXC</translation>
+ </message>
+ <message>
+ <source>Select entry to Auto-Type:</source>
+ <translation>অটো-টাইপের জন্য এন্ট্রি নির্বাচন করুন</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC- ব্রাউজার অ্যাক্সেস নিশ্চিত করুন</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>এই সিদ্ধান্ত মনে রাখুন</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>অনুমতি দিন</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>নাকচ করুন</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 নিম্নলিখিত আইটেম (গুলি) এর জন্য পাসওয়ার্ড অ্যাক্সেসের অনুরোধ জানিয়েছে
+আপনি প্রবেশাধিকার অনুমতি দিতে চান তা নির্বাচন করুন।</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>সংলাপ</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>KeePassXC- ব্রাউজারের সাথে আপনার ডেটাবেস অ্যাক্সেস করার জন্য এটি প্রয়োজনীয়</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>ব্রাউজারের সাথে KeepassXC ইন্টিগ্রেশন সচল করুন</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>সাধারন</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>এইসব ব্রাউজারের সাথে ইন্টিগ্রেশন সচল করুন:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;গুগল ক্রোম</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;ফায়ারফক্স</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;ক্রোমিয়াম</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;ভিভালডি</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>প্রমাণপ্রত্রাদি অনুরোধ করা হলে একটি &amp;বিজ্ঞপ্তি দেখান</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>ডাটাবেস লক থাকলে আনলক করার অনুরোধ জানান</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>শুধুমাত্র (http://, https://, ...) সম্বলিত এন্ট্রিগুলো এসেছে।</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>ইউআরএল সূচি মিলান (e.g., https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>একটি নির্দিষ্ট URL জন্য সম্ভাব্য সর্ব্বোত্তম ফলাফলটি দেখাবে পুরো ডোমেইনের জন্য সকল এন্ট্রি না দেখিয়ে।</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>সম্ভাব্য সর্ব্বোত্তম ফলাফলটি দেখাবে</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>সম্ভাব্য সর্ব্বোত্তম ফলাফলটি শিরোনাম অনুসারে সাজান</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>সম্ভাব্য সর্ব্বোত্তম ফলাফলটি ব্যবহারকারী অনুসারে সাজান</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>সকল ব্রাউজারে সংযোগ বিচ্ছিন্ন করুন</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>মনে রাখা সকল অনুমতি ভুলে যান</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>উন্নততর</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>তথে প্রবেশ করার পূর্বে কখনোই জিজ্ঞাসা করবেন না</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>তথ্য হালনাগাদ করার পূর্বে কখনোই জিজ্ঞাসা করবেন না</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>শুধুমাত্র নির্বাচিত ডাটাবেসকে ক্লায়েন্টের সাথে সংযুক্ত করা উচিত।</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>এই ধরনের তথ্য সকল চালু থাকা ডাটেবেসে খূঁজে দেখুন</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>স্বয়ংক্রিয়ভাবে তৈরি করা বা স্ট্রিং ফিল্ড আপডেট করা সমর্থন করে না।</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&quot;KPH: &quot; দিয়ে শুরু হয়েছে এমন উন্নত স্ট্রিং ফিল্ডগুলি দেখান</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>KeePassXC অথবা keepassxc-proxy বাইনারী পাথ হালনাগাদ রাখুন লোকাল মেসেজিং স্ক্রিপ্ট হিসেবে চালুর সময়</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation>স্টার্ট-আপের সময় ন্যাটিভ ম্যাসেজিং ফাইল আপডেট করুন</translation>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>KeePassXC এবং ব্রাউজার এক্সটেনশন এর মধ্যে প্রক্সি এ্যাপ সমর্থন করে।</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>KeePassXC এবং ব্রাউজার এক্সটেনশন এর মধ্যে প্রক্সি ব্যবহার করুন</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>আপনি যদি ম্যানুয়ালী প্রক্সি যোগ করে থাকেন তবে তার স্থান ব্যাবহার করুন</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>পরিবর্তিত প্রক্সি স্থান ব্যবহার করুন</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>ব্রাউজ...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;সতর্কতা:&lt;/b&gt; নিম্নোক্ত বিকল্পগুলি বিপজ্জনক হতে পারে।</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation>এক্সিকিউটেবল ফাইল (*.exe)।। সব ফাইল (*. *)</translation>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>স্বনির্বাচিত প্রক্সি অবস্থান নির্বাচন করুন</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>আমরা দুঃখিত, কিন্তু এই মুহূর্তে স্নাপ রিলিজ KeePassXC ব্রাউজার সমর্থন করে না।</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: নতুন কী (key) যুক্ত করার আবেদন</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>আপনি উপরের কী যুক্ত করার অনুরোধ গ্রহণ করেছে।
+
+যদি আপনি এটি আপনার KeePassXC ডাটাবেস প্রবেশের সম্মতি দিতে চান, তা শনাক্ত করা যায় এমন একটি অনন্য নাম দিন।</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>সংরক্ষণ করুন এবং প্রবেশে সম্মতি দিন</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: বর্তমান কী উপরিলিখন করবেন?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>শেয়ারকৃত এনক্রিপশন কী &quot;%1&quot; নামটি ইতিমধ্যেই বিদ্যমান।
+এটির ওপর দিয়েই লিখতে চান?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: হালনাগাদ এন্ট্রি</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>%1 - %2 এর মধ্যে তথ্য হালনাগাদ করতে চান?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: ডাটাবেস তালাবদ্ধ !</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>সক্রিয় ডাটাবেজ বন্ধ রয়েছে।
+নির্বাচিত ডাটাবেস আনলক করুন বা খোলা আছে এমন অন্য একটি পছন্দ করুন।</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: সেটিংস সমূহ সুপ্রাপ্য নয়।</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: কোন কী পাওয়া যায়নি</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation>কোন শেয়ারকৃত এনক্রিপশন কী KeePassXC সেটিংসে পাওয়া যায়নি।</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: কী ডাটাবেস থেকে অপসারণ করা হয়েছে</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>সঞ্চিত অনুমতিসমূহ অপসারণ করা হচ্ছে...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>বাতিল</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: অনুমতিসমূহ অপসারণ করা হয়েছে</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: অনুমতিসহ কোন এন্ট্রি পাওয়া যায়নি।</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>সক্রিয় ডাটাবেজ প্রবেশের অনুমতিসহ কোর এন্ট্রি নেই।</translation>
+ </message>
+</context>
+<context>
+ <name>ChangeMasterKeyWidget</name>
+ <message>
+ <source>Password</source>
+ <translation>পাসওয়ার্ড</translation>
+ </message>
+ <message>
+ <source>Enter password:</source>
+ <translation>পাসওয়ার্ড প্রবেশ করান:</translation>
+ </message>
+ <message>
+ <source>Repeat password:</source>
+ <translation>পুনরায় পাসওয়ার্ড দিন:</translation>
+ </message>
+ <message>
+ <source>&amp;Key file</source>
+ <translation>কী ফাইল</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>ব্রাউজ করুন</translation>
+ </message>
+ <message>
+ <source>Create</source>
+ <translation>তৈরি করুন</translation>
+ </message>
+ <message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>চ্যালেঞ্জ প্রতিক্রিয়া</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>রিফ্রেশ</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>কী ফাইলগুলো</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>সকল ফাইল</translation>
+ </message>
+ <message>
+ <source>Create Key File...</source>
+ <translation>কী ফাইল তৈরি করুন...</translation>
+ </message>
+ <message>
+ <source>Unable to create Key File : </source>
+ <translation>কী ফাইল তৈরি করা যায়নি: </translation>
+ </message>
+ <message>
+ <source>Select a key file</source>
+ <translation>কী ফাইল নির্বাচন করুন</translation>
+ </message>
+ <message>
+ <source>Empty password</source>
+ <translation>পাসাওয়ার্ড খালি আছে</translation>
+ </message>
+ <message>
+ <source>Do you really want to use an empty string as password?</source>
+ <translation>আপনি কি খালি স্ট্রিং পাসওয়ার্ড হিসেবে ব্যবহার করতে চান?</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>ভিন্ন ভিন্ন পাসওয়ার্ড সরবরাহ করা হয়েছে।</translation>
+ </message>
+ <message>
+ <source>Failed to set %1 as the Key file:
+%2</source>
+ <translation>কী ফাইল হিসেবে %1 সেট করতে ব্যর্থ হয়েছে:
+ %2</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation>পূর্ববর্তী কী ফাইল ফরম্যাট</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>আপনি পূর্ববর্তী কী ফাইল ফরম্যাট ব্যবহার করেছেন
+ যা ভবিষ্যতে অসমর্থিত হতে পারে ।
+নতুন কী (key) ফাইল তৈরি করুন।</translation>
+ </message>
+ <message>
+ <source>Changing master key failed: no YubiKey inserted.</source>
+ <translation>মাস্টার কী পরিবর্তন হয়নি: কোন YubiKey বসানো হয়নি।</translation>
+ </message>
+</context>
+<context>
+ <name>CloneDialog</name>
+ <message>
+ <source>Clone Options</source>
+ <translation>ক্লোন বিকল্পসমূহ</translation>
+ </message>
+ <message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>&apos; - Clone&apos; শিরোনামে যোগ করুন</translation>
+ </message>
+ <message>
+ <source>Replace username and password with references</source>
+ <translation>ব্যবহারকারীর নাম এবং পাসওয়ার্ড তথ্যসূত্র দ্বারা প্রতিস্থাপন করুন</translation>
+ </message>
+ <message>
+ <source>Copy history</source>
+ <translation>ইতিহাস অনুলিপি করুন</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWidget</name>
+ <message>
+ <source>Import CSV fields</source>
+ <translation>CSV আমদানি করুন</translation>
+ </message>
+ <message>
+ <source>filename</source>
+ <translation>ফাইলের নাম</translation>
+ </message>
+ <message>
+ <source>size, rows, columns</source>
+ <translation>আকার, সারি, কলাম</translation>
+ </message>
+ <message>
+ <source>Encoding</source>
+ <translation>এনকোডিং</translation>
+ </message>
+ <message>
+ <source>Codec</source>
+ <translation>কোডেক</translation>
+ </message>
+ <message>
+ <source>Text is qualified by</source>
+ <translation>লেখা যোগ্য হয়েছে</translation>
+ </message>
+ <message>
+ <source>Fields are separated by</source>
+ <translation>ক্ষেত্র আলাদা করা হয়</translation>
+ </message>
+ <message>
+ <source>Comments start with</source>
+ <translation>মন্তব্য দিয়ে শুরু</translation>
+ </message>
+ <message>
+ <source>First record has field names</source>
+ <translation>প্রথম রেকর্ড রয়েছে ফিল্ডের নাম</translation>
+ </message>
+ <message>
+ <source>Number of headers line to discard</source>
+ <translation>হেডার লাইন সংখ্যা বাতিল করতে হবে</translation>
+ </message>
+ <message>
+ <source>Consider &apos;\&apos; an escape character</source>
+ <translation>&apos; \&apos; কে পালানোর চরিত্র বিবেচনা করুন </translation>
+ </message>
+ <message>
+ <source>Preview</source>
+ <translation>প্রাক্-দর্শন</translation>
+ </message>
+ <message>
+ <source>Column layout</source>
+ <translation>কলাম বিন্যাস</translation>
+ </message>
+ <message>
+ <source>Not present in CSV file</source>
+ <translation>CSV ফাইলে উপস্থিত নয়</translation>
+ </message>
+ <message>
+ <source>Empty fieldname </source>
+ <translation>খালি ফিল্ডনেম</translation>
+ </message>
+ <message>
+ <source>column </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Imported from CSV file</source>
+ <translation>CSV ফাইল থেকে আমদানি করা।</translation>
+ </message>
+ <message>
+ <source>Original data: </source>
+ <translation>অরিজিনাল তথ্য: </translation>
+ </message>
+ <message>
+ <source>Error(s) detected in CSV file !</source>
+ <translation>ত্রুটি (গুলি) CSV ফাইলে শনাক্ত করা হয়েছে।</translation>
+ </message>
+ <message>
+ <source> more messages skipped]</source>
+ <translation> একাধিক বার্তা এড়িয়ে গেছে।</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>ত্রুটি</translation>
+ </message>
+ <message>
+ <source>CSV import: writer has errors:
+</source>
+ <translation>CSV আমদানি: লেখক ভুল করেছেন।
+</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWizard</name>
+ <message>
+ <source>Error</source>
+ <translation>ত্রুটি</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>মাস্টার কী গণনা করতে অক্ষম</translation>
+ </message>
+</context>
+<context>
+ <name>CsvParserModel</name>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseOpenWidget</name>
+ <message>
+ <source>Enter master key</source>
+ <translation>মাস্টার কী প্রবেশ করান</translation>
+ </message>
+ <message>
+ <source>Key File:</source>
+ <translation>কী ফাইল:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>পাসওয়ার্ড:</translation>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>ব্রাউজ করুন</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>রিফ্রেশ</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>চ্যালেঞ্জের জবাব:</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>ডাটাবেজ খুলে দিতে অক্ষম।</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>কী ফাইলটি খোলা যাচ্ছে না</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation>পূর্ববর্তী কী ফাইল ফরম্যাট</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation>আপনি পূর্ববর্তী কী ফাইল ফরম্যাট ব্যবহার করেছেন
+ যা ভবিষ্যতে অসমর্থিত হতে পারে ।
+নতুন কী (key) ফাইল তৈরি করুন।</translation>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>আবার এই সতর্কীকরণ দেখাবেন না</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>সকল ফাইল</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>কী ফাইলগুলো</translation>
+ </message>
+ <message>
+ <source>Select key file</source>
+ <translation>কী ফাইল নির্বাচন করুন</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseRepairWidget</name>
+ <message>
+ <source>Repair database</source>
+ <translation>ডাটাবেস মেরামত</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>ত্রুটি</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>কী ফাইলটি খোলা যাচ্ছে না</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>ডাটাবেজ খুলে দিতে অক্ষম।</translation>
+ </message>
+ <message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>ডাটাবেজ ভালোভাবে খুলেছে। কিছুই করার নেই।</translation>
+ </message>
+ <message>
+ <source>Success</source>
+ <translation>সফল</translation>
+ </message>
+ <message>
+ <source>The database has been successfully repaired
+You can now save it.</source>
+ <translation>ডাটাবেজ সফলভাবে মেরামত করা হয়েছে
+এখন আপনি তা সংরক্ষণ করতে পারবেন।</translation>
+ </message>
+ <message>
+ <source>Unable to repair the database.</source>
+ <translation>ডাটাবেস মেরামত করতে পারছে না।</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidget</name>
+ <message>
+ <source>General</source>
+ <translation>সাধারন</translation>
+ </message>
+ <message>
+ <source>Encryption</source>
+ <translation>এনক্রিপশন</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>খুব বেশি রাউন্ড গণনা</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation>Argon2 সাথে খুব বেশি সংখ্যক রূপান্তর কী রাউন্ডের ব্যবহার করছেন।
+
+আপনি এই সংখ্যা রাখতে চাইলে, ডাটাবেস খোলার জন্য সময় নেবে কয়েক ঘন্টা বা দিন (বা তারও বেশি) ।</translation>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>বোঝা যায়, নাম্বার রাখুন</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>বাতিল</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>রাউন্ড খুব কম সংখ্যক</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation>আপনি খুব কম সংখ্যক রূপান্তর কী রাউন্ডের AES-KDF এর সাথে ব্যবহার করছে।
+
+যদি আপনি এই নাম্বার রাখেন, আপনার ডাটাবেজ খুব সহজেই ক্রাক হতে পারে!</translation>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation>KDF অপরিবর্তিত</translation>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>নতুন KDF প্যারামিটার দিয়ে কী পরিবর্তন করতে ব্যর্থ হয়েছে। KDF অপরিবর্তিত।</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation>এনক্রিপশন এ্যালগরিদম:</translation>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation>AES: 256 Bit (default)</translation>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation>Twofish: 256 Bit</translation>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation>কী ডেরিভেশন ফাংশন:</translation>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation>রাউন্ড রূপান্তর করো:</translation>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation>বেঞ্চমার্ক 1 সেকেন্ড দেরি</translation>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation>মেমোরি ব্যবহার:</translation>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation>সমান্তরালভাবে:</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation>ডাটাবেস মেটা ডাটা</translation>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>ডাটাবেজ নাম:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>ডাটাবেস বিবরণ:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>পূর্ব-নির্ধারিত ব্যবহারকারীর নাম:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation>ইতিহাস সেটিংস</translation>
+ </message>
+ <message>
+ <source>Max. history items:</source>
+ <translation>সর্বাধিত ঐতিহাসিক বিষয়:</translation>
+ </message>
+ <message>
+ <source>Max. history size:</source>
+ <translation>সর্বাধিত ঐতিহাসিক আকার:</translation>
+ </message>
+ <message>
+ <source> MiB</source>
+ <translation> MiB</translation>
+ </message>
+ <message>
+ <source>Use recycle bin</source>
+ <translation>রিসাইকেল বিন ব্যবহার করুন </translation>
+ </message>
+ <message>
+ <source>Additional Database Settings</source>
+ <translation>অতিরিক্ত ডাটাবেস সেটিংস</translation>
+ </message>
+ <message>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>সংকোচন সক্রিয় করুন (প্রস্তাবিত)</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseTabWidget</name>
+ <message>
+ <source>Root</source>
+ <comment>Root group</comment>
+ <translation>রুট</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 ডাটাবেস</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>সকল ফাইল</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>উন্মুক্ত ডাটাবেস</translation>
+ </message>
+ <message>
+ <source>File not found!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>ডাটাবেজ খুলে দিতে অক্ষম।</translation>
+ </message>
+ <message>
+ <source>File opened in read only mode.</source>
+ <translation>ফাইলটি শুধুমাত্র পঠন পরিমণ্ডলে খোলা।</translation>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>CSV ফাইল খুলুন</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation>CSV ফাইল</translation>
+ </message>
+ <message>
+ <source>All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge database</source>
+ <translation>ডাটাবেস একত্রীকরণ</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>খোলা KeePass 1 তথ্যভাণ্ডার</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 তথ্যভাণ্ডার</translation>
+ </message>
+ <message>
+ <source>Close?</source>
+ <translation>বন্ধ করুন?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; সম্পাদনা মোডে আছে।
+পরিবর্তনগুলি পরিত্যাগ করা হবে, আর যাই হোক বন্ধ?</translation>
+ </message>
+ <message>
+ <source>Save changes?</source>
+ <translation>পরিবর্তন সংরক্ষণ করব?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; was modified.
+Save changes?</source>
+ <translation>&apos;%1&apos; পরিবর্তিত হয়েছে।
+পরিবর্তন সংরক্ষণ করব?</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>এই ডাটাবেসে লেখা ব্যর্থ হয়েছে।</translation>
+ </message>
+ <message>
+ <source>Passwords</source>
+ <translation>পাসওয়ার্ডসমূহ</translation>
+ </message>
+ <message>
+ <source>Save database as</source>
+ <translation>ডাটাবেজ হিসেবে সংরক্ষণ করুন</translation>
+ </message>
+ <message>
+ <source>Export database to CSV file</source>
+ <translation>ডাটাবেস CSV ফাইল হিসেবে রপ্তানি করুন</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation> CSV ফাইলে লেখা ব্যর্থ হয়েছে।</translation>
+ </message>
+ <message>
+ <source>New database</source>
+ <translation>নতুন ডাটাবেস</translation>
+ </message>
+ <message>
+ <source>locked</source>
+ <translation>আটকানো</translation>
+ </message>
+ <message>
+ <source>Lock database</source>
+ <translation>তালাবদ্ধ ডাকাবেস</translation>
+ </message>
+ <message>
+ <source>Can't lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This database has been modified.
+Do you want to save the database before locking it?
+Otherwise your changes are lost.</source>
+ <translation>এই ডাটাবেজ সংশোধন করা হয়েছে।
+লক করার আগে ডাটাবেস সংরক্ষণ করতে চান?
+তা না হলে আপনার করা কোন পরিবর্তন সংরক্ষিত হবেনা।</translation>
+ </message>
+ <message>
+ <source>Disable safe saves?</source>
+ <translation>নিরাপদ সংরক্ষণ অক্ষম?</translation>
+ </message>
+ <message>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC একাধিক বার ডাটাবেস সংরক্ষণ করতে ব্যর্থ হয়েছে। ফাইল সিংক্রোনাইজ সেবা ফাইলটি লক ধরে রাখলে এমনটি হতে পারে।
+নিরাপদ সংরক্ষণ অক্ষম করুন এবং আবার চেষ্টা করুন।</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseWidget</name>
+ <message>
+ <source>Searching...</source>
+ <translation>সন্ধান করা হচ্ছে...</translation>
+ </message>
+ <message>
+ <source>Change master key</source>
+ <translation>মাস্টার কী পরিবর্তন করুন</translation>
+ </message>
+ <message>
+ <source>Delete entry?</source>
+ <translation>এন্ট্রি মুছে ফেলতে চান?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
+ <translation>আপনি কি সত্যিই এন্ট্রি &quot;%1&quot; মুছে ফেলতে চান?</translation>
+ </message>
+ <message>
+ <source>Delete entries?</source>
+ <translation>এন্ট্রিসমূহ মুছে ফেলতে চান?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete %1 entries for good?</source>
+ <translation>আপনি সত্যিই %1 এন্ট্রিসমূহ মুছে ফেলতে চান?</translation>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>এন্ট্রি রিসাইকেল বিনে সরাবে?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>আপনি কি &quot;%1&quot; এন্ট্রিটি রিসাইকেল বিনে সরাতে চান?</translation>
+ </message>
+ <message>
+ <source>Move entries to recycle bin?</source>
+ <translation>রিসাইকেল বিনে এন্ট্রিসমূহ সরাবেন?</translation>
+ </message>
+ <message numerus="yes">
+ <source>Do you really want to move %n entry(s) to the recycle bin?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Execute command?</source>
+ <translation>কমান্ড চালাও?</translation>
+ </message>
+ <message>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation>আপনি কি নিচের কমান্ড সঞ্চালন করতে চান? &lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
+ </message>
+ <message>
+ <source>Remember my choice</source>
+ <translation>আমার পছন্দ মনে রাখুন</translation>
+ </message>
+ <message>
+ <source>Delete group?</source>
+ <translation>দল মুছে ফেলতে চান?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>আপনি কি গ্রুপ &apos;%1&apos; মুছে ফেলতে চান?</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>মাস্টার কী গণনা করতে অক্ষম</translation>
+ </message>
+ <message>
+ <source>No current database.</source>
+ <translation>কোন বর্তমান ডাকাবেস নেই।</translation>
+ </message>
+ <message>
+ <source>No source database, nothing to do.</source>
+ <translation>কোন উৎস ডাটাবেস নেই, কিছুই করা যাবেনা।</translation>
+ </message>
+ <message>
+ <source>Search Results (%1)</source>
+ <translation>অনুসন্ধানের ফলাফল (%1)</translation>
+ </message>
+ <message>
+ <source>No Results</source>
+ <translation>কোনো ফলাফল নেই</translation>
+ </message>
+ <message>
+ <source>File has changed</source>
+ <translation>ফাইলটি পরিবর্তিত হয়েছে</translation>
+ </message>
+ <message>
+ <source>The database file has changed. Do you want to load the changes?</source>
+ <translation>এই ডাটাবেস ফাইল পরিবর্তন করা হয়েছে। আপনি যে পরিবর্তনগুলো লোড করতে চান?</translation>
+ </message>
+ <message>
+ <source>Merge Request</source>
+ <translation>একত্রিত করার অনুরোধ করুন</translation>
+ </message>
+ <message>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>এই ডাটাবেস ফাইল পরিবর্তন হয়েছে এবং আপনার পরিবর্তন অসংরক্ষিত রয়েছে।
+আপনি কি আপনার পরিবর্তন একত্রিত করতে চান?</translation>
+ </message>
+ <message>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <translation>এই ডাটাবেস টি সয়ংক্রিয়ভাবে পূনরায় খোলার সময় নতুন ডাটাবেস খুলতে ব্যর্থ হয়েছে</translation>
+ </message>
+ <message>
+ <source>Empty recycle bin?</source>
+ <translation>রিসাইকেল বিন খালি করুন?</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <translation>আপনি কি নিশ্চিত যে ,আপনি রিসাইকেল বিন থেকে সবকিছু স্থায়ীভাবে মুছে ফেলতে চান?</translation>
+ </message>
+</context>
+<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation>TOTP টোকেন তৈরি করুন</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>বন্ধ করুন</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>সাধারন</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>পাসওয়ার্ড</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation>মেয়াদ শেষে</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ব্যবহারকরীর নাম</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation>অটোটাইপ</translation>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation>সন্ধান করা হচ্ছে</translation>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation>বৈশিষ্ট্যাবলী</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>সংযুক্তিসমূহ</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>নোটসমূহ</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>উইন্ডো</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>অনুক্রম</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>সন্ধান</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>পরিস্কার</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>কখনো না</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[সংরক্ষিত]</translation>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation>নিষ্ক্রিয়</translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation>সক্রিয়</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidget</name>
+ <message>
+ <source>Entry</source>
+ <translation>এন্ট্রি</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>উন্নততর</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>আইকন</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>অটো-টাইপ</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>বৈশিষ্ট্য</translation>
+ </message>
+ <message>
+ <source>History</source>
+ <translation>ইতিহাস</translation>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH এজেন্ট</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation>(এনক্রিপ্টেড)</translation>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>ব্যক্তিগত কী নির্বাচন করো</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>একটি প্রাইভেট কী&apos;র জন্য ফাইলটি খুবই বড়</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>গোপনীয় কী খুলতে ব্যর্থ</translation>
+ </message>
+ <message>
+ <source>Entry history</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add entry</source>
+ <translation>এন্ট্রি যোগ করো</translation>
+ </message>
+ <message>
+ <source>Edit entry</source>
+ <translation>এন্ট্রি সম্পাদন করো</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>ভিন্ন ভিন্ন পাসওয়ার্ড সরবরাহ করা হয়েছে।</translation>
+ </message>
+ <message>
+ <source>New attribute</source>
+ <translation>নতুন বৈশিষ্ট্য</translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>মূছে ফেলা নিশ্চিত করুন</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>আপনি কি নিশ্চিত আপনি এই বৈশিষ্ট্য অপসারণ করতে চান?</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation>[সংরক্ষিত]</translation>
+ </message>
+ <message>
+ <source>Press reveal to view or edit</source>
+ <translation>দেখতে বা সম্পাদনা করতে রিভেল টিপুন</translation>
+ </message>
+ <message>
+ <source>Tomorrow</source>
+ <translation>আগামীকাল</translation>
+ </message>
+ <message numerus="yes">
+ <source>%n week(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n month(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>1 year</source>
+ <translation>১ বছর</translation>
+ </message>
+ <message>
+ <source>Apply generated password?</source>
+ <translation>জেনারেট করা পাসওয়ার্ড প্রয়োগ করবেন?</translation>
+ </message>
+ <message>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>জেনারেট করা পাসওয়ার্ড এন্ট্রির সাথে প্রয়োগ করতে চান?</translation>
+ </message>
+ <message>
+ <source>Entry updated successfully.</source>
+ <translation>এন্ট্রি সফলভাবে আপডেট করা হয়েছে।</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAdvanced</name>
+ <message>
+ <source>Additional attributes</source>
+ <translation>অতিরিক্ত বৈশিষ্ট্য</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>যোগ করুন</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>অপসারণ করুন</translation>
+ </message>
+ <message>
+ <source>Edit Name</source>
+ <translation>নাম পরিবর্তন করুন</translation>
+ </message>
+ <message>
+ <source>Protect</source>
+ <translation>রক্ষা করুন</translation>
+ </message>
+ <message>
+ <source>Reveal</source>
+ <translation>রিভেল</translation>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>সংযুক্তিসমূহ</translation>
+ </message>
+ <message>
+ <source>Foreground Color:</source>
+ <translation>পুরোভূমির রং:</translation>
+ </message>
+ <message>
+ <source>Background Color:</source>
+ <translation>পটভূমির রং:</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
+ <message>
+ <source>Enable Auto-Type for this entry</source>
+ <translation>এই এন্ট্রির জন্য অটো-টাইপ সক্রিয় করুন</translation>
+ </message>
+ <message>
+ <source>Inherit default Auto-Type sequence from the &amp;group</source>
+ <translation>দল থেকে পূর্ব-নির্ধারিত অটো-টাইপ ধারাবাহিকতা বজায়</translation>
+ </message>
+ <message>
+ <source>&amp;Use custom Auto-Type sequence:</source>
+ <translation>পছন্দসই অটো-টাইপ ক্রম ব্যবহার করুন:</translation>
+ </message>
+ <message>
+ <source>Window Associations</source>
+ <translation>উইণ্ডো সমিতিসমূহ</translation>
+ </message>
+ <message>
+ <source>+</source>
+ <translation>+</translation>
+ </message>
+ <message>
+ <source>-</source>
+ <translation>-</translation>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation>উইন্ডো শিরোনাম:</translation>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation>এই এসোসিয়েশনের জন্য নির্দিষ্ট ক্রম ব্যবহার করুন:</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetHistory</name>
+ <message>
+ <source>Show</source>
+ <translation>প্রদর্শন</translation>
+ </message>
+ <message>
+ <source>Restore</source>
+ <translation>পুনর্বহাল করুন</translation>
+ </message>
+ <message>
+ <source>Delete</source>
+ <translation>মুছে ফেলুন</translation>
+ </message>
+ <message>
+ <source>Delete all</source>
+ <translation>সব মুছে ফেলুন</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetMain</name>
+ <message>
+ <source>URL:</source>
+ <translation>ইউআরএল:</translation>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>পাসওয়ার্ড:</translation>
+ </message>
+ <message>
+ <source>Repeat:</source>
+ <translation>পূনরায়:</translation>
+ </message>
+ <message>
+ <source>Title:</source>
+ <translation>শিরোনাম:</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>নোটসমূহ</translation>
+ </message>
+ <message>
+ <source>Presets</source>
+ <translation>পূর্বনির্ধারিত</translation>
+ </message>
+ <message>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>নোট বিভাগ দেখার জন্য চেকবক্স টিক দিন।</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation>ব্যবহারকারীর নাম:</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>মেয়াদ উত্তীর্ণ হয়ে যাবে</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation>ফরম</translation>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation>পরে এজেন্ট থেকে কী অপসারণ করুন</translation>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation> সেকেন্ড</translation>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation>আঙ্গুলের ছাপ</translation>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>ডাটাবেজ বন্ধ/লক করা হয় তখন এজেন্টের কাছ থেকে কী অপসারণ করুন</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>পাবলিক কী</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>এজেন্টের কাছে কী যোগ করুন যখন ডাটাবেস খোলা/মুক্ত থাকে</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation>মন্তব্য</translation>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation>ডিক্রাইপ্ট</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation>n/a</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>ক্লিপবোর্ডে কপি করুন</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>ব্যক্তিগত কী</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>বাইরের ফাইল</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>ব্রাউজ...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>সংযুক্তি</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>এজেন্টের সাথে যুক্ত করুন</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>এজেন্টের কাছ থেকে অপসারণ করুন</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidget</name>
+ <message>
+ <source>Group</source>
+ <translation>দল</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>আইকন</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>বৈশিষ্ট্য</translation>
+ </message>
+ <message>
+ <source>Add group</source>
+ <translation>দলযোগ করুন</translation>
+ </message>
+ <message>
+ <source>Edit group</source>
+ <translation>দল সম্পাদন করুন</translation>
+ </message>
+ <message>
+ <source>Enable</source>
+ <translation>সক্রিয় করুন</translation>
+ </message>
+ <message>
+ <source>Disable</source>
+ <translation>নিষ্ক্রিয়</translation>
+ </message>
+ <message>
+ <source>Inherit from parent group (%1)</source>
+ <translation>মূল দল (%1) এর মত</translation>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidgetMain</name>
+ <message>
+ <source>Name</source>
+ <translation>নাম</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>নোটসমূহ</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>মেয়াদ উত্তীর্ণ হয়ে যাবে</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>সন্ধান</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>অটো-টাইপ</translation>
+ </message>
+ <message>
+ <source>&amp;Use default Auto-Type sequence of parent group</source>
+ <translation>মূল দলে পূর্বনির্ধারিত অটো-টাইপ ধারা ব্যবহার করুন</translation>
+ </message>
+ <message>
+ <source>Set default Auto-Type se&amp;quence</source>
+ <translation>ডিফল্ট অটো-টাইপ ধারা</translation>
+ </message>
+</context>
+<context>
+ <name>EditWidgetIcons</name>
+ <message>
+ <source>&amp;Use default icon</source>
+ <translation>ডিফল্ট আইকন ব্যবহার করুন</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>ইচ্ছামত আইকন ব্যবহার করুন</translation>
+ </message>
+ <message>
+ <source>Add custom icon</source>
+ <translation>নিজস্ব আইকন যোগ করুন</translation>
+ </message>
+ <message>
+ <source>Delete custom icon</source>
+ <translation>স্বনির্বাচিত আইকন মুছে ফেলুন</translation>
+ </message>
+ <message>
+ <source>Download favicon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Favicon আনতে অক্ষম হয়েছে।</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation>ইঙ্গিত: আপনি গুগল কে ফল-ব্যাক হিসেবে সক্রিয় করতে পারেন টুলস &gt; সেটিংস &gt; নিরাপত্তা</translation>
+ </message>
+ <message>
+ <source>Images</source>
+ <translation>ছবি</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>সকল ফাইল</translation>
+ </message>
+ <message>
+ <source>Select Image</source>
+ <translation>ছবি নির্বাচন করুন</translation>
+ </message>
+ <message>
+ <source>Can&apos;t read icon</source>
+ <translation>আইকন দেখা যায়নি</translation>
+ </message>
+ <message>
+ <source>Custom icon already exists</source>
+ <translation>স্বনির্বাচিত আইকন ইতোমধ্যে বিদ্যমান</translation>
+ </message>
+ <message>
+ <source>Confirm Delete</source>
+ <translation>মুছে ফেলা নিশ্চিত করুন</translation>
+ </message>
+ <message>
+ <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
+ <translation>এই আইকন %1 এন্ট্রি দ্বারা ব্যবহৃত হচ্ছে, এবং ডিফল্ট আইকন দ্বারা প্রতিস্থাপিত হবে। আপনি কি নিশ্চিত যে আপনি এটা মুছে ফেলতে চান?</translation>
+ </message>
+</context>
+<context>
+ <name>EditWidgetProperties</name>
+ <message>
+ <source>Created:</source>
+ <translation>সৃষ্টি করেছে:</translation>
+ </message>
+ <message>
+ <source>Modified:</source>
+ <translation>সংশোধিত:</translation>
+ </message>
+ <message>
+ <source>Accessed:</source>
+ <translation>দেখা হয়েছে:</translation>
+ </message>
+ <message>
+ <source>Uuid:</source>
+ <translation>Uuid:</translation>
+ </message>
+ <message>
+ <source>Plugin Data</source>
+ <translation>প্লাগ-ইন তথ্য</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>অপসারণ করুন</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>প্লাগ-ইন তথ্য মুছে ফেলতে চান?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>আপনি কি নির্বাচিত প্লাগ-ইন তথ্য মুছে ফেলতে চান?
+এর কারনে আক্রান্ত প্লাগ ইন খারাপ হতে পারে।</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation>কী</translation>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation>মান</translation>
+ </message>
+</context>
+<context>
+ <name>Entry</name>
+ <message>
+ <source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation> -ক্লোন</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>নাম</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation>মাপ</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation>ফরম</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>যোগ করুন</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>অপসারণ করুন</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>খুলুন</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>সংরক্ষণ করুন</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>ফাইল নির্বাচন করুন</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation>মূছে ফেলা নিশ্চিত করুন</translation>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>সংযুক্তিসমূহ সংরক্ষণ করুন</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>ডিরেক্টরি তৈরি করা যায়নি:
+ %1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>আপনি কি বিদ্যমান ফাইল &quot;%1&quot; সঙ্গে সংযুক্তি উপরিলিখন করতে চান?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>উপরিলিখন নিশ্চিত করুন</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>সংযুক্তি সংরক্ষণ করা যায়নি:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>সংযুক্তি খুলতে ব্যর্থ:
+ %1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>সংযুক্তিসমূহ খুলতে ব্যর্থ:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>ফাইল খোলা যায়নি:
+%1</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttributesModel</name>
+ <message>
+ <source>Name</source>
+ <translation>নাম</translation>
+ </message>
+</context>
+<context>
+ <name>EntryHistoryModel</name>
+ <message>
+ <source>Last modified</source>
+ <translation>শেষ বার পরিমার্জিত</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>শিরোনাম</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ব্যবহারকরীর নাম</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+</context>
+<context>
+ <name>EntryModel</name>
+ <message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation>প্রসঙ্গ: </translation>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>দল</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>শিরোনাম</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ব্যবহারকরীর নাম</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>কখনো না</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>পাসওয়ার্ড</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>নোটসমূহ</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>মেয়াদ উত্তীর্ণ হয়ে যাবে</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>সৃষ্টি করেছেন</translation>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation>পরিবর্তন করা হয়েছে</translation>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>সংযুক্তিসমূহ</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation>পছন্দসই প্রদর্শন‌</translation>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation>ব্যবহারকারীর নাম লুকান</translation>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation>পাসওয়ার্ড লুকান</translation>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>উইন্ডোতে মানানসই</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation>স্বাভাবিক অবস্থায় ফেরত</translation>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation>সংযুক্তিসমূহ (আইকন)</translation>
+ </message>
+</context>
+<context>
+ <name>Group</name>
+ <message>
+ <source>Recycle Bin</source>
+ <translation>রিসাইকেল বিন</translation>
+ </message>
+</context>
+<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>HttpPasswordGeneratorWidget</name>
+ <message>
+ <source>Length:</source>
+ <translation>দৈর্ঘ্য:</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>অক্ষরের ধরণ</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>বড় হাতের অক্ষর</translation>
+ </message>
+ <message>
+ <source>A-Z</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>ছোট হাতের অক্ষর</translation>
+ </message>
+ <message>
+ <source>a-z</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>নম্বরগুলি</translation>
+ </message>
+ <message>
+ <source>0-9</source>
+ <translation>0-9</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>বিশেষ অক্ষরসমূহ</translation>
+ </message>
+ <message>
+ <source>/*_&amp; ...</source>
+ <translation>/*_&amp; ...</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Ensure that the password contains characters from every group</source>
+ <translation>পাসওয়ার্ড টি প্রত্যেক অক্ষর দলের সমন্বয় নিশ্চিত করুন</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>বর্ধিত ASCII</translation>
+ </message>
+</context>
+<context>
+ <name>KMessageWidget</name>
+ <message>
+ <source>&amp;Close</source>
+ <translation>বন্ধ করুন</translation>
+ </message>
+ <message>
+ <source>Close message</source>
+ <translation>বার্তা বন্ধ করুন</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>মাস্টার কী গণনা করতে অক্ষম</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>চ্যালেঞ্জের জবাব ইস্যু করতে ব্যর্থ।</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>ভুল কী বা ডাটাবেস ফাইল নষ্ট হয়েছে।</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>চ্যালেঞ্জের জবাব ইস্যু করতে ব্যর্থ।</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>মাস্টার কী গণনা করতে অক্ষম</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation>ডাটাবেসের শিরোনাম নেই</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>মাস্টার কী গণনা করতে অক্ষম</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation>শিরোনামের চেকসাম আকার সঠিক নয়</translation>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation>হেডারের SHA256 মিলছে না</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>ভুল কী বা ডাটাবেস ফাইল নষ্ট হয়েছে। (HMAC অমিল)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>অপরিচিত সংকেতায়ন</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation>হেডারের আইডি আকার সঠিক নয়</translation>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>হেডার তথ্য দৈর্ঘ্য সঠিক নয়</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>মাস্টার কী গণনা করতে অক্ষম</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KeePass1OpenWidget</name>
+ <message>
+ <source>Import KeePass1 database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>ডাটাবেজ খুলে দিতে অক্ষম।</translation>
+ </message>
+</context>
+<context>
+ <name>KeePass1Reader</name>
+ <message>
+ <source>Unable to read keyfile.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported encryption algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass database version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Root</source>
+ <translation>রুট</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>মাস্টার কী গণনা করতে অক্ষম</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>ভুল কী বা ডাটাবেস ফাইল নষ্ট হয়েছে।</translation>
+ </message>
+ <message>
+ <source>Key transformation failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing group id or level</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KeePass2</name>
+ <message>
+ <source>AES: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Main</name>
+ <message>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Recent databases</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Import</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>E&amp;ntries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy att&amp;ribute to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Time-based one-time password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Tools</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;About</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Open database...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Save database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Close database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;New database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge from KeePassX database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Add new entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;View/Edit entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Delete entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Add new group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Edit group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Delete group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sa&amp;ve database as...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Change &amp;master key...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Database settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Clone entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy &amp;username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cop&amp;y password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Perform Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Open URL</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Lock databases</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;URL</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Notes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy notes to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Export to CSV file...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Import KeePass 1 database...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Import CSV file...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;pair database...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Quit KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 ডাটাবেস</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>সকল ফাইল</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>উন্মুক্ত ডাটাবেস</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>এই ডাটাবেসে লেখা ব্যর্থ হয়েছে।</translation>
+ </message>
+ <message>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
+ <message>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>PEM boundary mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Base64 decoding failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file way too small.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file magic header id invalid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to read public key.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No private key payload to decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Trying to run KDF without cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing public key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing private key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>সংলাপ</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>সাধারন</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>একটি নির্দিষ্ট URL জন্য সম্ভাব্য সর্ব্বোত্তম ফলাফলটি দেখাবে পুরো ডোমেইনের জন্য সকল এন্ট্রি না দেখিয়ে।</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>ডাটাবেস লক থাকলে আনলক করার অনুরোধ জানান</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL schemes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>উন্নততর</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>শুধুমাত্র নির্বাচিত ডাটাবেসকে ক্লায়েন্টের সাথে সংযুক্ত করা উচিত।</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>স্বয়ংক্রিয়ভাবে তৈরি করা বা স্ট্রিং ফিল্ড আপডেট করা সমর্থন করে না।</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&quot;KPH: &quot; দিয়ে শুরু হয়েছে এমন উন্নত স্ট্রিং ফিল্ডগুলি দেখান</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;সতর্কতা:&lt;/b&gt; নিম্নোক্ত বিকল্পগুলি বিপজ্জনক হতে পারে।</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordGeneratorWidget</name>
+ <message>
+ <source>%p%</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation>পাসওয়ার্ড:</translation>
+ </message>
+ <message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>পাসওয়ার্ড</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>অক্ষরের ধরণ</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation>বড় হাতের অক্ষর</translation>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation>ছোট হাতের অক্ষর</translation>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation>নম্বরগুলি</translation>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation>বিশেষ অক্ষরসমূহ</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>বর্ধিত ASCII</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Pick characters from every group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Length:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passphrase</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word Count:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>কপি</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>বন্ধ করুন</translation>
+ </message>
+ <message>
+ <source>Apply</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entropy: %1 bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password Quality: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Poor</source>
+ <comment>Password quality</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Weak</source>
+ <comment>Password quality</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Good</source>
+ <comment>Password quality</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Excellent</source>
+ <comment>Password quality</comment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>Database not opened</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database hash not available</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Client public key not received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot decrypt message</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Action cancelled or denied</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>ডাটাবেসের পাথ</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>path</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>NULL device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>error reading from device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>file empty !
+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>malformed string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>missing closing quote</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>দল</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>শিরোনাম</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>ব্যবহারকরীর নাম</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>পাসওয়ার্ড</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>নোটসমূহ</translation>
+ </message>
+ <message>
+ <source>Last Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation>সৃষ্টি করেছেন</translation>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browser Integration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Press</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passive</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH এজেন্ট</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor</name>
+ <message>
+ <source>Internal zlib error when compressing: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error writing to underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error opening underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error reading data from underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error when decompressing: </source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor::open</name>
+ <message>
+ <source>The gzip format not supported in this version of zlib.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error: </source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SearchWidget</name>
+ <message>
+ <source>Search...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>সন্ধান</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>পরিস্কার</translation>
+ </message>
+ <message>
+ <source>Case Sensitive</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Limit search to selected group</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Service</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: নতুন কী (key) যুক্ত করার আবেদন</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: বর্তমান কী উপরিলিখন করবেন?</translation>
+ </message>
+ <message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: হালনাগাদ এন্ট্রি</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>%1 - %2 এর মধ্যে তথ্য হালনাগাদ করতে চান?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: ডাটাবেস তালাবদ্ধ !</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>সক্রিয় ডাটাবেজ বন্ধ রয়েছে।
+নির্বাচিত ডাটাবেস আনলক করুন বা খোলা আছে এমন অন্য একটি পছন্দ করুন।</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: কী ডাটাবেস থেকে অপসারণ করা হয়েছে</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: কোন কী পাওয়া যায়নি</translation>
+ </message>
+ <message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: সেটিংস সমূহ সুপ্রাপ্য নয়।</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>বাতিল</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: অনুমতিসমূহ অপসারণ করা হয়েছে</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: অনুমতিসহ কোন এন্ট্রি পাওয়া যায়নি।</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>সক্রিয় ডাটাবেজ প্রবেশের অনুমতিসহ কোর এন্ট্রি নেই।</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <source>Application Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>সাধারন</translation>
+ </message>
+ <message>
+ <source>Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetGeneral</name>
+ <message>
+ <source>Basic Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember last databases</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically save on exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically save after every change</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Minimize when copying to clipboard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Minimize window at application startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use group icon on entry creation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show a system tray icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide window to system tray when minimized</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide window to system tray instead of app exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Dark system tray icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Language</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>অটো-টাইপ</translation>
+ </message>
+ <message>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always ask before performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Global Auto-Type shortcut</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation>এমএস</translation>
+ </message>
+ <message>
+ <source>Startup</source>
+ <translation>সূচনা</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>ফাইল ব্যবস্থাপনা</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>নিরাপদে ডাটাবেস সংরক্ষণ করুন (ড্রডবক্স, এবং অন্যান্যর সাথে অসংগত হতে পারে)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation>সংরক্ষণ করার আগে ডাটাবেস ব্যাকআপ করুন</translation>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation>এন্ট্রি ব্যবস্থাপনা</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>সাধারন</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetSecurity</name>
+ <message>
+ <source>Timeouts</source>
+ <translation>সময় শেষ</translation>
+ </message>
+ <message>
+ <source>Clear clipboard after</source>
+ <translation>ক্লিপবোর্ড পরিস্কার হবে</translation>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation>সে.</translation>
+ </message>
+ <message>
+ <source>Lock databases after inactivity of</source>
+ <translation>অব্যবহৃত থাকলে ডাটাবেস লক হবে</translation>
+ </message>
+ <message>
+ <source>Convenience</source>
+ <translation>সাচ্ছন্দ্য</translation>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>ডাটাবেস লক হবে লিড বন্ধ করলে বা সেশন লক করলে</translation>
+ </message>
+ <message>
+ <source>Lock databases after minimizing the window</source>
+ <translation>উইন্ডো মিনিমাইজ করলে ডাটাবেস লক হবে</translation>
+ </message>
+ <message>
+ <source>Don&apos;t require password repeat when it is visible</source>
+ <translation>আবার যখন দৃশ্যমান হবে তখন পাসওয়ার্ড লাগবেনা</translation>
+ </message>
+ <message>
+ <source>Show passwords in cleartext by default</source>
+ <translation>ডিফল্টভাবে পাসওয়ার্ড সাধারন লেখায় দেখান</translation>
+ </message>
+ <message>
+ <source>Hide passwords in the preview panel</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide entry notes by default</source>
+ <translation>ডিফল্টভাবে এন্ট্রি নোট লুকান</translation>
+ </message>
+ <message>
+ <source>Privacy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use Google as fallback for downloading website icons</source>
+ <translation>গুগল ব্যবহার করুন ওয়েবসাইটের আইকন ডাউনলোড করার জন্য</translation>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation>অটো-টাইপের পরে পূনরায় লক করুন আগের লক করা ডাটাবেস</translation>
+ </message>
+</context>
+<context>
+ <name>SetupTotpDialog</name>
+ <message>
+ <source>Setup TOTP</source>
+ <translation>TOTP সেট করুন</translation>
+ </message>
+ <message>
+ <source>Key:</source>
+ <translation>কী:</translation>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>ডিফল্ট RFC 6238 টোকেন সেটিংসমূহ</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>স্টেম টোকেন সেটিংসমূহ</translation>
+ </message>
+ <message>
+ <source>Use custom settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Note: Change these settings only if you know what you are doing.</source>
+ <translation>দ্রষ্টব্য: এই সেটিংস পরিবর্তন করুন শুধুমাত্র যদি আপনি জানেন যে আপনি কি করছেন।</translation>
+ </message>
+ <message>
+ <source>Time step:</source>
+ <translation>সময় ধাপ:</translation>
+ </message>
+ <message>
+ <source>8 digits</source>
+ <translation>8 (আট) ডিজিট</translation>
+ </message>
+ <message>
+ <source>6 digits</source>
+ <translation>৬ ডিজিট</translation>
+ </message>
+ <message>
+ <source>Code size:</source>
+ <translation>কোড সাইজ:</translation>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation>সে.</translation>
+ </message>
+</context>
+<context>
+ <name>TotpDialog</name>
+ <message>
+ <source>Timed Password</source>
+ <translation>সময়ানুসারে পাসওয়ার্ড</translation>
+ </message>
+ <message>
+ <source>000000</source>
+ <translation>০০০০০০</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>কপি</translation>
+ </message>
+ <message>
+ <source>Expires in</source>
+ <translation>মেয়াদ শেষ</translation>
+ </message>
+ <message>
+ <source>seconds</source>
+ <translation>সেকেন্ড</translation>
+ </message>
+</context>
+<context>
+ <name>UnlockDatabaseWidget</name>
+ <message>
+ <source>Unlock database</source>
+ <translation>ডাটাবেস আনলক করুন</translation>
+ </message>
+</context>
+<context>
+ <name>WelcomeWidget</name>
+ <message>
+ <source>Start storing your passwords securely in a KeePassXC database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Create new database</source>
+ <translation>একটি নতুন ডাটাবেস তৈরী করুন</translation>
+ </message>
+ <message>
+ <source>Open existing database</source>
+ <translation>পূর্বের একটি ডাটাবেস খুলুন</translation>
+ </message>
+ <message>
+ <source>Import from KeePass 1</source>
+ <translation>KeePass 1 থেকে আমদানি করুন</translation>
+ </message>
+ <message>
+ <source>Import from CSV</source>
+ <translation>CSV থেকে আমদানি করুন</translation>
+ </message>
+ <message>
+ <source>Recent databases</source>
+ <translation>সাম্প্রতিক ডাটাবেস</translation>
+ </message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>KeePassXC %1 -তে আপনাকে স্বাগতম</translation>
+ </message>
+</context>
+<context>
+ <name>main</name>
+ <message>
+ <source>Remove an entry from the database.</source>
+ <translation>ডাটাবেস থেকে একটি এন্ট্রি মুছে ফেলুন</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>ডাটাবেসের পাথ</translation>
+ </message>
+ <message>
+ <source>Path of the entry to remove.</source>
+ <translation>যে এন্ট্রি মুছে ফেলতে চান তার পাথ</translation>
+ </message>
+ <message>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation>KeePassXC - ক্রস প্ল্যাটফর্ম পাসওয়ার্ড ম্যানেজার</translation>
+ </message>
+ <message>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation>পাসওয়ার্ড দিয়ে যে ডাটাবেস (*.kdbx) খুলতে চান তার ফাইলনেম</translation>
+ </message>
+ <message>
+ <source>path to a custom config file</source>
+ <translation>একটি কাস্টম কনফিগ ফাইল পাথ</translation>
+ </message>
+ <message>
+ <source>key file of the database</source>
+ <translation>ডাটাবেসের কী ফাইল</translation>
+ </message>
+ <message>
+ <source>read password of the database from stdin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parent window handle</source>
+ <translation>মূল উইন্ডো হ্যান্ডেল</translation>
+ </message>
+</context>
+</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_ca.ts b/share/translations/keepassx_ca.ts
index 6442dc8bf..a09811133 100644
--- a/share/translations/keepassx_ca.ts
+++ b/share/translations/keepassx_ca.ts
@@ -73,12 +73,13 @@ Nucli: %3 %4</translation>
</message>
<message>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
- <translation type="unfinished"/>
+ <translation>Agraïments de l&apos;equip de KeePassXC a debfx per crear el KeePassX original.</translation>
</message>
<message>
<source>Build Type: %1
</source>
- <translation type="unfinished"/>
+ <translation>Tipus de construcció: %1
+</translation>
</message>
</context>
<context>
@@ -110,7 +111,7 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
<name>AgentSettingsWidget</name>
<message>
<source>Enable SSH Agent (requires restart)</source>
- <translation type="unfinished"/>
+ <translation>Habilita l&apos;agent SSH (requereix reiniciar-se)</translation>
</message>
</context>
<context>
@@ -129,7 +130,7 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
</message>
<message>
<source>The Syntax of your Auto-Type statement is incorrect!</source>
- <translation type="unfinished"/>
+ <translation>La sintaxi de l&apos;Auto-Type no és correcte!</translation>
</message>
<message>
<source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
@@ -193,7 +194,7 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
<name>BrowserAccessControlDialog</name>
<message>
<source>KeePassXC-Browser Confirm Access</source>
- <translation type="unfinished"/>
+ <translation>Confirma l&apos;accés al navegador KeePassXC</translation>
</message>
<message>
<source>Remember this decision</source>
@@ -222,11 +223,11 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
</message>
<message>
<source>This is required for accessing your databases with KeePassXC-Browser</source>
- <translation type="unfinished"/>
+ <translation>Requerit per l&apos;accés a les teues bases de dades amb el navegador KeePassXC</translation>
</message>
<message>
<source>Enable KeepassXC browser integration</source>
- <translation type="unfinished"/>
+ <translation>Habilita la integració de KeePassXC amb el navegador</translation>
</message>
<message>
<source>General</source>
@@ -234,7 +235,7 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
</message>
<message>
<source>Enable integration for these browsers:</source>
- <translation type="unfinished"/>
+ <translation>Habilita la integració amb els següents navegadors:</translation>
</message>
<message>
<source>&amp;Google Chrome</source>
@@ -255,7 +256,7 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
<message>
<source>Show a &amp;notification when credentials are requested</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>Mostra una &amp;notificació quan es demanen credencials</translation>
</message>
<message>
<source>Re&amp;quest to unlock the database if it is locked</source>
@@ -263,11 +264,11 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
</message>
<message>
<source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
- <translation type="unfinished"/>
+ <translation>Només es retornen les entrades amb el mateix patró (http://, https://, ...)</translation>
</message>
<message>
<source>&amp;Match URL scheme (e.g., https://...)</source>
- <translation type="unfinished"/>
+ <translation>Torna les coincidències a&amp;mb patrons URL (e.g., https://...)</translation>
</message>
<message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
@@ -275,25 +276,25 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
</message>
<message>
<source>&amp;Return only best-matching credentials</source>
- <translation type="unfinished"/>
+ <translation>&amp;Retorna només les millors coincidències de les credencials</translation>
</message>
<message>
<source>Sort &amp;matching credentials by title</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>Ordena les entrades coincidents per títol (ctrl + &amp;m)</translation>
</message>
<message>
<source>Sort matching credentials by &amp;username</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>Ordena les entrades coincidents per nom d&apos;&amp;usuari</translation>
</message>
<message>
<source>&amp;Disconnect all browsers</source>
- <translation type="unfinished"/>
+ <translation>&amp;Desconnecta tots els navegadors</translation>
</message>
<message>
<source>Forget all remembered &amp;permissions</source>
- <translation type="unfinished"/>
+ <translation>Oblida tots els &amp;permisos recordats</translation>
</message>
<message>
<source>Advanced</source>
@@ -302,12 +303,12 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
<message>
<source>Never &amp;ask before accessing credentials</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>No torn&amp;ar a preguntar abans d&apos;accedir a les credencials</translation>
</message>
<message>
<source>Never ask before &amp;updating credentials</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>No preguntar abans d&apos;act&amp;ualitzar les credencials</translation>
</message>
<message>
<source>Only the selected database has to be connected with a client.</source>
@@ -316,7 +317,7 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
<message>
<source>Searc&amp;h in all opened databases for matching credentials</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>Cerca en totes les bases de dades obertes, entrades coincidents (crtl + &amp;h)</translation>
</message>
<message>
<source>Automatically creating or updating string fields is not supported.</source>
@@ -354,19 +355,19 @@ Seleccioneu si voleu permetre l&apos;accés.</translation>
<message>
<source>Browse...</source>
<extracomment>Button for opening file dialog</extracomment>
- <translation type="unfinished"/>
+ <translation>Navega...</translation>
</message>
<message>
<source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
- <translation type="unfinished"/>
+ <translation>&lt;b&gt;Atenció:&lt;/b&gt; Canviar les següents opcions és perillós!</translation>
</message>
<message>
<source>Executable Files (*.exe);;All Files (*.*)</source>
- <translation type="unfinished"/>
+ <translation>Arxius executables (*.exe);;Tots els arxius (*.*)</translation>
</message>
<message>
<source>Executable Files (*)</source>
- <translation type="unfinished"/>
+ <translation>Arxius executables (*)</translation>
</message>
<message>
<source>Select custom proxy location</source>
@@ -392,7 +393,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>Save and allow access</source>
- <translation type="unfinished"/>
+ <translation>Desa i autoritza l&apos;accés</translation>
</message>
<message>
<source>KeePassXC: Overwrite existing key?</source>
@@ -401,7 +402,8 @@ give it a unique name to identify and accept it.</source>
<message>
<source>A shared encryption key with the name &quot;%1&quot; already exists.
Do you want to overwrite it?</source>
- <translation type="unfinished"/>
+ <translation>Ja existeix una clau de xifratge compartida amb el nom &quot;%1&quot;.
+Voleu sobreescriure-la?</translation>
</message>
<message>
<source>KeePassXC: Update Entry</source>
@@ -427,7 +429,7 @@ Per favor, desbloqueu la base de dades seleccionada o escolliu-ne una altra.</t
</message>
<message>
<source>The active database does not contain a settings entry.</source>
- <translation type="unfinished"/>
+ <translation>La base de dades activa no conté cap entrada de configuració.</translation>
</message>
<message>
<source>KeePassXC: No keys found</source>
@@ -435,7 +437,7 @@ Per favor, desbloqueu la base de dades seleccionada o escolliu-ne una altra.</t
</message>
<message>
<source>No shared encryption keys found in KeePassXC Settings.</source>
- <translation type="unfinished"/>
+ <translation>No s&apos;han trobat claus de xifratge compartides en la configuració de KeePassHttp.</translation>
</message>
<message>
<source>KeePassXC: Removed keys from database</source>
@@ -443,11 +445,11 @@ Per favor, desbloqueu la base de dades seleccionada o escolliu-ne una altra.</t
</message>
<message numerus="yes">
<source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Reeixidament eliminat %n encriptació clau (s) de configuració KeePassXC.</numerusform><numerusform>Eliminada(es) correctament %n clau(s) de xifratge de la configuració de KeePassXC.</numerusform></translation>
</message>
<message>
<source>Removing stored permissions…</source>
- <translation type="unfinished"/>
+ <translation>Eliminant permisos emmagatzemats...</translation>
</message>
<message>
<source>Abort</source>
@@ -1565,7 +1567,7 @@ Do you want to merge your changes?</source>
<message>
<source>Browse...</source>
<extracomment>Button for opening file dialog</extracomment>
- <translation type="unfinished"/>
+ <translation>Navega...</translation>
</message>
<message>
<source>Attachment</source>
@@ -3078,7 +3080,7 @@ This version is not meant for production use.</source>
</message>
<message>
<source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
- <translation type="unfinished"/>
+ <translation>&lt;b&gt;Atenció:&lt;/b&gt; Canviar les següents opcions és perillós!</translation>
</message>
<message>
<source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
diff --git a/share/translations/keepassx_en.ts b/share/translations/keepassx_en.ts
index 9c07f6e99..2666d8e91 100644
--- a/share/translations/keepassx_en.ts
+++ b/share/translations/keepassx_en.ts
@@ -2623,6 +2623,10 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
<source>KeePassXC - Error</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Database password: </source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MainWindow</name>
@@ -3646,15 +3650,27 @@ Available commands:
<translation type="unfinished"></translation>
</message>
<message>
- <source>Agent refused this identity.</source>
+ <source>No agent running, cannot remove identity.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>No agent running, cannot remove identity.</source>
+ <source>Agent does not have this identity.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Agent does not have this identity.</source>
+ <source>Agent refused this identity. Possible reasons include:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The key has already been added.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Restricted lifetime is not supported by the agent (check options).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>A confirmation request is not supported by the agent (check options).</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -3888,10 +3904,6 @@ Please unlock the selected database or choose another one which is unlocked.</so
<translation type="unfinished"></translation>
</message>
<message>
- <source>Auto-Type delay</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source> ms</source>
<comment>Milliseconds</comment>
<translation type="unfinished"></translation>
@@ -3920,6 +3932,14 @@ Please unlock the selected database or choose another one which is unlocked.</so
<source>General</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Auto-Type typing delay</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Auto-Type start delay</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SettingsWidgetSecurity</name>
@@ -4060,6 +4080,17 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
</context>
<context>
+ <name>UrlFetchProgressDialog</name>
+ <message>
+ <source>Download Progress</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Downloading %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>WelcomeWidget</name>
<message>
<source>Start storing your passwords securely in a KeePassXC database</source>
diff --git a/share/translations/keepassx_en_GB.ts b/share/translations/keepassx_en_GB.ts
new file mode 100644
index 000000000..735921bbf
--- /dev/null
+++ b/share/translations/keepassx_en_GB.ts
@@ -0,0 +1,4096 @@
+<?xml version="1.0" ?><!DOCTYPE TS><TS language="en_GB" version="2.1">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <source>About KeePassXC</source>
+ <translation>About KeePassXC
+</translation>
+ </message>
+ <message>
+ <source>About</source>
+ <translation>About</translation>
+ </message>
+ <message>
+ <source>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</source>
+ <translation>Report bugs at: &lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/issues&quot; style=&quot;text-decoration: underline;&quot;&gt;https://github.com&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
+ <translation>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</translation>
+ </message>
+ <message>
+ <source>Contributors</source>
+ <translation>Contributors</translation>
+ </message>
+ <message>
+ <source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</translation>
+ </message>
+ <message>
+ <source>Debug Info</source>
+ <translation>Debug Info</translation>
+ </message>
+ <message>
+ <source>Include the following information whenever you report a bug:</source>
+ <translation>Include the following information whenever you report a bug:</translation>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copy to clipboard</translation>
+ </message>
+ <message>
+ <source>Version %1
+</source>
+ <translation>Version %1
+</translation>
+ </message>
+ <message>
+ <source>Revision: %1</source>
+ <translation>Revision: %1</translation>
+ </message>
+ <message>
+ <source>Distribution: %1</source>
+ <translation>Distribution: %1</translation>
+ </message>
+ <message>
+ <source>Libraries:</source>
+ <translation>Libraries:</translation>
+ </message>
+ <message>
+ <source>Operating system: %1
+CPU architecture: %2
+Kernel: %3 %4</source>
+ <translation>Operating system: %1
+CPU architecture: %2
+Kernel: %3 %4</translation>
+ </message>
+ <message>
+ <source>Enabled extensions:</source>
+ <translation>Enabled extensions:</translation>
+ </message>
+ <message>
+ <source>Project Maintainers:</source>
+ <translation>Project Maintainers:</translation>
+ </message>
+ <message>
+ <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
+ <translation>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</translation>
+ </message>
+ <message>
+ <source>Build Type: %1
+</source>
+ <translation>Build Type: %1
+</translation>
+ </message>
+</context>
+<context>
+ <name>AccessControlDialog</name>
+ <message>
+ <source>KeePassXC HTTP Confirm Access</source>
+ <translation>KeePassXC HTTP Confirm Access</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Remember this decision</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Allow</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Deny</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</translation>
+ </message>
+</context>
+<context>
+ <name>AgentSettingsWidget</name>
+ <message>
+ <source>Enable SSH Agent (requires restart)</source>
+ <translation>Enable SSH Agent (requires restart)</translation>
+ </message>
+</context>
+<context>
+ <name>AutoType</name>
+ <message>
+ <source>Couldn&apos;t find an entry that matches the window title:</source>
+ <translation>Couldn&apos;t find an entry that matches the window title:</translation>
+ </message>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Type - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>The Syntax of your Auto-Type statement is incorrect!</source>
+ <translation>The Syntax of your Auto-Type statement is incorrect!</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
+ <translation>This Auto-Type command contains a very long delay. Do you really want to proceed?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
+ <translation>This Auto-Type command contains very slow key presses. Do you really want to proceed?</translation>
+ </message>
+ <message>
+ <source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
+ <translation>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeAssociationsModel</name>
+ <message>
+ <source>Window</source>
+ <translation>Window</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequence</translation>
+ </message>
+ <message>
+ <source>Default sequence</source>
+ <translation>Default sequence</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeMatchModel</name>
+ <message>
+ <source>Group</source>
+ <translation>Group</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Username</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequence</translation>
+ </message>
+</context>
+<context>
+ <name>AutoTypeSelectDialog</name>
+ <message>
+ <source>Auto-Type - KeePassXC</source>
+ <translation>Auto-Type - KeePassXC</translation>
+ </message>
+ <message>
+ <source>Select entry to Auto-Type:</source>
+ <translation>Select entry to Auto-Type:</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserAccessControlDialog</name>
+ <message>
+ <source>KeePassXC-Browser Confirm Access</source>
+ <translation>KeePassXC-Browser Confirm Access</translation>
+ </message>
+ <message>
+ <source>Remember this decision</source>
+ <translation>Remember this decision</translation>
+ </message>
+ <message>
+ <source>Allow</source>
+ <translation>Allow</translation>
+ </message>
+ <message>
+ <source>Deny</source>
+ <translation>Deny</translation>
+ </message>
+ <message>
+ <source>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</source>
+ <translation>%1 has requested access to passwords for the following item(s).
+Please select whether you want to allow access.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserOptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases with KeePassXC-Browser</source>
+ <translation>This is required for accessing your databases with KeePassXC-Browser</translation>
+ </message>
+ <message>
+ <source>Enable KeepassXC browser integration</source>
+ <translation>Enable KeePassXC browser integration</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Enable integration for these browsers:</source>
+ <translation>Enable integration for these browsers:</translation>
+ </message>
+ <message>
+ <source>&amp;Google Chrome</source>
+ <translation>&amp;Google Chrome</translation>
+ </message>
+ <message>
+ <source>&amp;Firefox</source>
+ <translation>&amp;Firefox</translation>
+ </message>
+ <message>
+ <source>&amp;Chromium</source>
+ <translation>&amp;Chromium</translation>
+ </message>
+ <message>
+ <source>&amp;Vivaldi</source>
+ <translation>&amp;Vivaldi</translation>
+ </message>
+ <message>
+ <source>Show a &amp;notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Show a &amp;notification when credentials are requested</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Re&amp;quest to unlock the database if it is locked</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
+ <translation>Only entries with the same scheme (http://, https://, ...) are returned.</translation>
+ </message>
+ <message>
+ <source>&amp;Match URL scheme (e.g., https://...)</source>
+ <translation>&amp;Match URL scheme (e.g., https://...)</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Only returns the best matches for a specific URL instead of all entries for the whole domain.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best-matching credentials</source>
+ <translation>&amp;Return only best-matching credentials</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching credentials by title</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sort &amp;matching credentials by title</translation>
+ </message>
+ <message>
+ <source>Sort matching credentials by &amp;username</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sort matching credentials by &amp;username</translation>
+ </message>
+ <message>
+ <source>&amp;Disconnect all browsers</source>
+ <translation>&amp;Disconnect all browsers</translation>
+ </message>
+ <message>
+ <source>Forget all remembered &amp;permissions</source>
+ <translation>Forget all remembered &amp;permissions</translation>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Advanced</translation>
+ </message>
+ <message>
+ <source>Never &amp;ask before accessing credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Never &amp;ask before accessing credentials</translation>
+ </message>
+ <message>
+ <source>Never ask before &amp;updating credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Never ask before &amp;updating credentials</translation>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Only the selected database has to be connected with a client.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching credentials</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Searc&amp;h in all opened databases for matching credentials</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatically creating or updating string fields is not supported.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Return advanced string fields which start with &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
+ <translation>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</translation>
+ </message>
+ <message>
+ <source>Update &amp;native messaging manifest files at startup</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Support a proxy application between KeePassXC and browser extension.</source>
+ <translation>Support a proxy application between KeePassXC and browser extension.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;proxy application between KeePassXC and browser extension</source>
+ <translation>Use a &amp;proxy application between KeePassXC and browser extension</translation>
+ </message>
+ <message>
+ <source>Use a custom proxy location if you installed a proxy manually.</source>
+ <translation>Use a custom proxy location if you installed a proxy manually.</translation>
+ </message>
+ <message>
+ <source>Use a &amp;custom proxy location</source>
+ <comment>Meant is the proxy for KeePassXC-Browser</comment>
+ <translation>Use a &amp;custom proxy location</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Browse...</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</translation>
+ </message>
+ <message>
+ <source>Executable Files (*.exe);;All Files (*.*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Executable Files (*)</source>
+ <translation>Executable Files (*)</translation>
+ </message>
+ <message>
+ <source>Select custom proxy location</source>
+ <translation>Select custom proxy location</translation>
+ </message>
+ <message>
+ <source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
+ <translation>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</translation>
+ </message>
+</context>
+<context>
+ <name>BrowserService</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: New key association request</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</source>
+ <translation>You have received an association request for the above key.
+
+If you would like to allow it access to your KeePassXC database,
+give it a unique name to identify and accept it.</translation>
+ </message>
+ <message>
+ <source>Save and allow access</source>
+ <translation>Save and allow access</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Overwrite existing key?</translation>
+ </message>
+ <message>
+ <source>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>A shared encryption key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Update Entry</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Do you want to update the information in %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Database locked!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Settings not available!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain a settings entry.</source>
+ <translation>The active database does not contain a settings entry.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: No keys found</translation>
+ </message>
+ <message>
+ <source>No shared encryption keys found in KeePassXC Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Removed keys from database</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Removing stored permissions…</source>
+ <translation>Removing stored permissions…</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Abort</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Removed permissions</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entry(s).</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: No entry with permissions found!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>The active database does not contain an entry with permissions.</translation>
+ </message>
+</context>
+<context>
+ <name>ChangeMasterKeyWidget</name>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>Enter password:</source>
+ <translation>Enter password:</translation>
+ </message>
+ <message>
+ <source>Repeat password:</source>
+ <translation>Repeat password:</translation>
+ </message>
+ <message>
+ <source>&amp;Key file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>Browser</translation>
+ </message>
+ <message>
+ <source>Create</source>
+ <translation>Create</translation>
+ </message>
+ <message>
+ <source>Cha&amp;llenge Response</source>
+ <translation>Cha&amp;llenge Response</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Refresh</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>Key files</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>All files</translation>
+ </message>
+ <message>
+ <source>Create Key File...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to create Key File : </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select a key file</source>
+ <translation>Select a key file</translation>
+ </message>
+ <message>
+ <source>Empty password</source>
+ <translation>Empty password</translation>
+ </message>
+ <message>
+ <source>Do you really want to use an empty string as password?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>Different passwords supplied.</translation>
+ </message>
+ <message>
+ <source>Failed to set %1 as the Key file:
+%2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation>Legacy key file format</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Changing master key failed: no YubiKey inserted.</source>
+ <translation>Changing master key failed: no YubiKey inserted.</translation>
+ </message>
+</context>
+<context>
+ <name>CloneDialog</name>
+ <message>
+ <source>Clone Options</source>
+ <translation>Clone Options</translation>
+ </message>
+ <message>
+ <source>Append &apos; - Clone&apos; to title</source>
+ <translation>Append &apos; - Clone&apos; to title</translation>
+ </message>
+ <message>
+ <source>Replace username and password with references</source>
+ <translation>Replace username and password with references</translation>
+ </message>
+ <message>
+ <source>Copy history</source>
+ <translation>Copy history</translation>
+ </message>
+</context>
+<context>
+ <name>CsvImportWidget</name>
+ <message>
+ <source>Import CSV fields</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>filename</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>size, rows, columns</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Encoding</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Codec</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Text is qualified by</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fields are separated by</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Comments start with</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>First record has field names</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Number of headers line to discard</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Consider &apos;\&apos; an escape character</source>
+ <translation>Consider &apos;\&apos; an escape character</translation>
+ </message>
+ <message>
+ <source>Preview</source>
+ <translation>Preview</translation>
+ </message>
+ <message>
+ <source>Column layout</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not present in CSV file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty fieldname </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>column </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Imported from CSV file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Original data: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error(s) detected in CSV file !</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> more messages skipped]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <source>CSV import: writer has errors:
+</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>CsvImportWizard</name>
+ <message>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+</context>
+<context>
+ <name>CsvParserModel</name>
+ <message numerus="yes">
+ <source>%n byte(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n row(s), </source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n column(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseOpenWidget</name>
+ <message>
+ <source>Enter master key</source>
+ <translation>Enter master key</translation>
+ </message>
+ <message>
+ <source>Key File:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Browse</source>
+ <translation>Browser</translation>
+ </message>
+ <message>
+ <source>Refresh</source>
+ <translation>Refresh</translation>
+ </message>
+ <message>
+ <source>Challenge Response:</source>
+ <translation>Challenge Response:</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Unable to open the database.</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>Can&apos;t open key file</translation>
+ </message>
+ <message>
+ <source>Legacy key file format</source>
+ <translation>Legacy key file format</translation>
+ </message>
+ <message>
+ <source>You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t show this warning again</source>
+ <translation>Don&apos;t show this warning again</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>All files</translation>
+ </message>
+ <message>
+ <source>Key files</source>
+ <translation>Key files</translation>
+ </message>
+ <message>
+ <source>Select key file</source>
+ <translation>Select key file</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseRepairWidget</name>
+ <message>
+ <source>Repair database</source>
+ <translation>Repair database</translation>
+ </message>
+ <message>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <source>Can&apos;t open key file</source>
+ <translation>Can&apos;t open key file</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Unable to open the database.</translation>
+ </message>
+ <message>
+ <source>Database opened fine. Nothing to do.</source>
+ <translation>Database opened fine. Nothing to do.</translation>
+ </message>
+ <message>
+ <source>Success</source>
+ <translation>Success</translation>
+ </message>
+ <message>
+ <source>The database has been successfully repaired
+You can now save it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to repair the database.</source>
+ <translation>Unable to repair the database.</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidget</name>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Encryption</source>
+ <translation>Encryption</translation>
+ </message>
+ <message>
+ <source>Number of rounds too high</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Number of rounds too high</translation>
+ </message>
+ <message>
+ <source>You are using a very high number of key transform rounds with Argon2.
+
+If you keep this number, your database may take hours or days (or even longer) to open!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Understood, keep number</source>
+ <translation>Understood, keep number</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Cancel</translation>
+ </message>
+ <message>
+ <source>Number of rounds too low</source>
+ <comment>Key transformation rounds</comment>
+ <translation>Number of rounds too low</translation>
+ </message>
+ <message>
+ <source>You are using a very low number of key transform rounds with AES-KDF.
+
+If you keep this number, your database may be too easy to crack!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KDF unchanged</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
+ <translation>Failed to transform key with new KDF parameters; KDF unchanged.</translation>
+ </message>
+ <message numerus="yes">
+ <source> MiB</source>
+ <comment>Abbreviation for Mebibytes (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source> thread(s)</source>
+ <comment>Threads for parallel execution (KDF settings)</comment>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetEncryption</name>
+ <message>
+ <source>Encryption Algorithm:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES: 256 Bit (default)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Twofish: 256 Bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key Derivation Function:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Transform rounds:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Benchmark 1-second delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Memory Usage:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parallelism:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>DatabaseSettingsWidgetGeneral</name>
+ <message>
+ <source>Database Meta Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Database name:</source>
+ <translation>Database name:</translation>
+ </message>
+ <message>
+ <source>Database description:</source>
+ <translation>Database description:</translation>
+ </message>
+ <message>
+ <source>Default username:</source>
+ <translation>Default username:</translation>
+ </message>
+ <message>
+ <source>History Settings</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Max. history items:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Max. history size:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> MiB</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use recycle bin</source>
+ <translation>Use recycle bin</translation>
+ </message>
+ <message>
+ <source>Additional Database Settings</source>
+ <translation>Additional Database Settings</translation>
+ </message>
+ <message>
+ <source>Enable &amp;compression (recommended)</source>
+ <translation>Enable &amp;compression (recommended)</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseTabWidget</name>
+ <message>
+ <source>Root</source>
+ <comment>Root group</comment>
+ <translation>Root</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 Database</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>All files</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Open database</translation>
+ </message>
+ <message>
+ <source>File not found!</source>
+ <translation>File not found!</translation>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Unable to open the database.</translation>
+ </message>
+ <message>
+ <source>File opened in read only mode.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Open CSV file</source>
+ <translation>Open CSV file</translation>
+ </message>
+ <message>
+ <source>CSV file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>All files (*)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Merge database</source>
+ <translation>Merge database</translation>
+ </message>
+ <message>
+ <source>Open KeePass 1 database</source>
+ <translation>Open KeePass 1 database</translation>
+ </message>
+ <message>
+ <source>KeePass 1 database</source>
+ <translation>KeePass 1 database</translation>
+ </message>
+ <message>
+ <source>Close?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</source>
+ <translation>&quot;%1&quot; is in edit mode.
+Discard changes and close anyway?</translation>
+ </message>
+ <message>
+ <source>Save changes?</source>
+ <translation>Save changes?</translation>
+ </message>
+ <message>
+ <source>&quot;%1&quot; was modified.
+Save changes?</source>
+ <translation>&quot;%1&quot; was modified.
+Save changes?</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Writing the database failed.</translation>
+ </message>
+ <message>
+ <source>Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save database as</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Export database to CSV file</source>
+ <translation>Export database to CSV file</translation>
+ </message>
+ <message>
+ <source>Writing the CSV file failed.</source>
+ <translation>Writing the CSV file failed.</translation>
+ </message>
+ <message>
+ <source>New database</source>
+ <translation>New database</translation>
+ </message>
+ <message>
+ <source>locked</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock database</source>
+ <translation>Lock database</translation>
+ </message>
+ <message>
+ <source>Can't lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</source>
+ <translation>Can&apos;t lock the database as you are currently editing it.
+Please press cancel to finish your changes or discard them.</translation>
+ </message>
+ <message>
+ <source>This database has been modified.
+Do you want to save the database before locking it?
+Otherwise your changes are lost.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Disable safe saves?</source>
+ <translation>Disable safe saves?</translation>
+ </message>
+ <message>
+ <source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</source>
+ <translation>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
+Disable safe saves and try again?</translation>
+ </message>
+</context>
+<context>
+ <name>DatabaseWidget</name>
+ <message>
+ <source>Searching...</source>
+ <translation>Searching...</translation>
+ </message>
+ <message>
+ <source>Change master key</source>
+ <translation>Change master key</translation>
+ </message>
+ <message>
+ <source>Delete entry?</source>
+ <translation>Delete entry?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
+ <translation>Do you really want to delete the entry &quot;%1&quot; for good?</translation>
+ </message>
+ <message>
+ <source>Delete entries?</source>
+ <translation>Delete entries?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete %1 entries for good?</source>
+ <translation>Do you really want to delete %1 entries for good?</translation>
+ </message>
+ <message>
+ <source>Move entry to recycle bin?</source>
+ <translation>Move entry to recycle bin?</translation>
+ </message>
+ <message>
+ <source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
+ <translation>Do you really want to move entry &quot;%1&quot; to the recycle bin?</translation>
+ </message>
+ <message>
+ <source>Move entries to recycle bin?</source>
+ <translation>Move entries to recycle bin?</translation>
+ </message>
+ <message numerus="yes">
+ <source>Do you really want to move %n entry(s) to the recycle bin?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Execute command?</source>
+ <translation>Execute command?</translation>
+ </message>
+ <message>
+ <source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remember my choice</source>
+ <translation>Remember my choice</translation>
+ </message>
+ <message>
+ <source>Delete group?</source>
+ <translation>Delete group?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the group &quot;%1&quot; for good?</source>
+ <translation>Do you really want to delete the group &quot;%1&quot; for good?</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+ <message>
+ <source>No current database.</source>
+ <translation>No current database.</translation>
+ </message>
+ <message>
+ <source>No source database, nothing to do.</source>
+ <translation>No source database, nothing to do.</translation>
+ </message>
+ <message>
+ <source>Search Results (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No Results</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>File has changed</source>
+ <translation>File has changed</translation>
+ </message>
+ <message>
+ <source>The database file has changed. Do you want to load the changes?</source>
+ <translation>The database file has changed. Do you want to load the changes?</translation>
+ </message>
+ <message>
+ <source>Merge Request</source>
+ <translation>Merge Request</translation>
+ </message>
+ <message>
+ <source>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</source>
+ <translation>The database file has changed and you have unsaved changes.
+Do you want to merge your changes?</translation>
+ </message>
+ <message>
+ <source>Could not open the new database file while attempting to autoreload this database.</source>
+ <translation>Could not open the new database file while attempting to autoreload this database.</translation>
+ </message>
+ <message>
+ <source>Empty recycle bin?</source>
+ <translation>Empty recycle bin?</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to permanently delete everything from your recycle bin?</source>
+ <translation>Are you sure you want to permanently delete everything from your recycle bin?</translation>
+ </message>
+</context>
+<context>
+ <name>DetailsWidget</name>
+ <message>
+ <source>Generate TOTP Token</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Close</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Expiration</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Username</translation>
+ </message>
+ <message>
+ <source>Autotype</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Searching</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attributes</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Attachments</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Window</source>
+ <translation>Window</translation>
+ </message>
+ <message>
+ <source>Sequence</source>
+ <translation>Sequence</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Search</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Clear</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Never</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Disabled</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidget</name>
+ <message>
+ <source>Entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Advanced</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>Icon</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>Properties</translation>
+ </message>
+ <message>
+ <source>History</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH Agent</translation>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>(encrypted)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Select private key</source>
+ <translation>Select private key</translation>
+ </message>
+ <message>
+ <source>File too large to be a private key</source>
+ <translation>File too large to be a private key</translation>
+ </message>
+ <message>
+ <source>Failed to open private key</source>
+ <translation>Failed to open private key</translation>
+ </message>
+ <message>
+ <source>Entry history</source>
+ <translation>Entry history</translation>
+ </message>
+ <message>
+ <source>Add entry</source>
+ <translation>Add entry</translation>
+ </message>
+ <message>
+ <source>Edit entry</source>
+ <translation>Edit entry</translation>
+ </message>
+ <message>
+ <source>Different passwords supplied.</source>
+ <translation>Different passwords supplied.</translation>
+ </message>
+ <message>
+ <source>New attribute</source>
+ <translation>New attribute</translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Are you sure you want to remove this attribute?</source>
+ <translation>Are you sure you want to remove this attribute?</translation>
+ </message>
+ <message>
+ <source>[PROTECTED]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Press reveal to view or edit</source>
+ <translation>Press reveal to view or edit</translation>
+ </message>
+ <message>
+ <source>Tomorrow</source>
+ <translation type="unfinished"/>
+ </message>
+ <message numerus="yes">
+ <source>%n week(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message numerus="yes">
+ <source>%n month(s)</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>1 year</source>
+ <translation>1 year</translation>
+ </message>
+ <message>
+ <source>Apply generated password?</source>
+ <translation>Apply generated password?</translation>
+ </message>
+ <message>
+ <source>Do you want to apply the generated password to this entry?</source>
+ <translation>Do you want to apply the generated password to this entry?</translation>
+ </message>
+ <message>
+ <source>Entry updated successfully.</source>
+ <translation>Entry updated successfully.</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAdvanced</name>
+ <message>
+ <source>Additional attributes</source>
+ <translation>Additional attributes</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Add</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remove</translation>
+ </message>
+ <message>
+ <source>Edit Name</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Protect</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reveal</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Attachments</translation>
+ </message>
+ <message>
+ <source>Foreground Color:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Background Color:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetAutoType</name>
+ <message>
+ <source>Enable Auto-Type for this entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Inherit default Auto-Type sequence from the &amp;group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Use custom Auto-Type sequence:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Window Associations</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>-</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Window title:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use a specific sequence for this association:</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetHistory</name>
+ <message>
+ <source>Show</source>
+ <translation>Show</translation>
+ </message>
+ <message>
+ <source>Restore</source>
+ <translation>Restore</translation>
+ </message>
+ <message>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+ <source>Delete all</source>
+ <translation>Delete all</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetMain</name>
+ <message>
+ <source>URL:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Repeat:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Title:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Presets</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Toggle the checkbox to reveal the notes section.</source>
+ <translation>Toggle the checkbox to reveal the notes section.</translation>
+ </message>
+ <message>
+ <source>Username:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expires</translation>
+ </message>
+</context>
+<context>
+ <name>EditEntryWidgetSSHAgent</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent after</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> seconds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fingerprint</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove key from agent when database is closed/locked</source>
+ <translation>Remove key from agent when database is closed/locked</translation>
+ </message>
+ <message>
+ <source>Public key</source>
+ <translation>Public key</translation>
+ </message>
+ <message>
+ <source>Add key to agent when database is opened/unlocked</source>
+ <translation>Add key to agent when database is opened/unlocked</translation>
+ </message>
+ <message>
+ <source>Comment</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>n/a</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy to clipboard</source>
+ <translation>Copy to clipboard</translation>
+ </message>
+ <message>
+ <source>Private key</source>
+ <translation>Private key</translation>
+ </message>
+ <message>
+ <source>External file</source>
+ <translation>External file</translation>
+ </message>
+ <message>
+ <source>Browse...</source>
+ <extracomment>Button for opening file dialog</extracomment>
+ <translation>Browse...</translation>
+ </message>
+ <message>
+ <source>Attachment</source>
+ <translation>Attachment</translation>
+ </message>
+ <message>
+ <source>Add to agent</source>
+ <translation>Add to agent</translation>
+ </message>
+ <message>
+ <source>Remove from agent</source>
+ <translation>Remove from agent</translation>
+ </message>
+ <message>
+ <source>Require user confirmation when this key is used</source>
+ <translation>Require user confirmation when this key is used</translation>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidget</name>
+ <message>
+ <source>Group</source>
+ <translation>Group</translation>
+ </message>
+ <message>
+ <source>Icon</source>
+ <translation>Icon</translation>
+ </message>
+ <message>
+ <source>Properties</source>
+ <translation>Properties</translation>
+ </message>
+ <message>
+ <source>Add group</source>
+ <translation>Add group</translation>
+ </message>
+ <message>
+ <source>Edit group</source>
+ <translation>Edit group</translation>
+ </message>
+ <message>
+ <source>Enable</source>
+ <translation>Enable</translation>
+ </message>
+ <message>
+ <source>Disable</source>
+ <translation>Disable</translation>
+ </message>
+ <message>
+ <source>Inherit from parent group (%1)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EditGroupWidgetMain</name>
+ <message>
+ <source>Name</source>
+ <translation>Name</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expires</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Search</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>&amp;Use default Auto-Type sequence of parent group</source>
+ <translation>&amp;Use default Auto-Type sequence of parent group</translation>
+ </message>
+ <message>
+ <source>Set default Auto-Type se&amp;quence</source>
+ <translation>Set default Auto-Type se&amp;quence</translation>
+ </message>
+</context>
+<context>
+ <name>EditWidgetIcons</name>
+ <message>
+ <source>&amp;Use default icon</source>
+ <translation>&amp;Use default icon</translation>
+ </message>
+ <message>
+ <source>Use custo&amp;m icon</source>
+ <translation>Use custo&amp;m icon</translation>
+ </message>
+ <message>
+ <source>Add custom icon</source>
+ <translation>Add custom icon</translation>
+ </message>
+ <message>
+ <source>Delete custom icon</source>
+ <translation>Delete custom icon</translation>
+ </message>
+ <message>
+ <source>Download favicon</source>
+ <translation>Download favicon</translation>
+ </message>
+ <message>
+ <source>Unable to fetch favicon.</source>
+ <translation>Unable to fetch favicon.</translation>
+ </message>
+ <message>
+ <source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Images</source>
+ <translation>Images</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>All files</translation>
+ </message>
+ <message>
+ <source>Select Image</source>
+ <translation>Select Image</translation>
+ </message>
+ <message>
+ <source>Can&apos;t read icon</source>
+ <translation>Can&apos;t read icon</translation>
+ </message>
+ <message>
+ <source>Custom icon already exists</source>
+ <translation>Custom icon already exists</translation>
+ </message>
+ <message>
+ <source>Confirm Delete</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
+ <translation>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</translation>
+ </message>
+</context>
+<context>
+ <name>EditWidgetProperties</name>
+ <message>
+ <source>Created:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Modified:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Uuid:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Plugin Data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remove</translation>
+ </message>
+ <message>
+ <source>Delete plugin data?</source>
+ <translation>Delete plugin data?</translation>
+ </message>
+ <message>
+ <source>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</source>
+ <translation>Do you really want to delete the selected plugin data?
+This may cause the affected plugins to malfunction.</translation>
+ </message>
+ <message>
+ <source>Key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Value</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Entry</name>
+ <message>
+ <source> - Clone</source>
+ <comment>Suffix added to cloned entries</comment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Name</translation>
+ </message>
+ <message>
+ <source>Size</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>EntryAttachmentsWidget</name>
+ <message>
+ <source>Form</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Add</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Remove</translation>
+ </message>
+ <message>
+ <source>Open</source>
+ <translation>Open</translation>
+ </message>
+ <message>
+ <source>Save</source>
+ <translation>Save</translation>
+ </message>
+ <message>
+ <source>Select files</source>
+ <translation>Select files</translation>
+ </message>
+ <message numerus="yes">
+ <source>Are you sure you want to remove %n attachment(s)?</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>Confirm Remove</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Save attachments</source>
+ <translation>Save attachments</translation>
+ </message>
+ <message>
+ <source>Unable to create directory:
+%1</source>
+ <translation>Unable to create directory:
+%1</translation>
+ </message>
+ <message>
+ <source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
+ <translation>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</translation>
+ </message>
+ <message>
+ <source>Confirm overwrite</source>
+ <translation>Confirm overwrite</translation>
+ </message>
+ <message>
+ <source>Unable to save attachments:
+%1</source>
+ <translation>Unable to save attachments:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachment:
+%1</source>
+ <translation>Unable to open attachment:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open attachments:
+%1</source>
+ <translation>Unable to open attachments:
+%1</translation>
+ </message>
+ <message>
+ <source>Unable to open files:
+%1</source>
+ <translation>Unable to open files:
+%1</translation>
+ </message>
+</context>
+<context>
+ <name>EntryAttributesModel</name>
+ <message>
+ <source>Name</source>
+ <translation>Name</translation>
+ </message>
+</context>
+<context>
+ <name>EntryHistoryModel</name>
+ <message>
+ <source>Last modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Username</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+</context>
+<context>
+ <name>EntryModel</name>
+ <message>
+ <source>Ref: </source>
+ <comment>Reference abbreviation</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>Group</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Username</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Never</source>
+ <translation>Never</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Expires</source>
+ <translation>Expires</translation>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Accessed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments</source>
+ <translation>Attachments</translation>
+ </message>
+</context>
+<context>
+ <name>EntryView</name>
+ <message>
+ <source>Customize View</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Usernames</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide Passwords</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Fit to window</source>
+ <translation>Fit to window</translation>
+ </message>
+ <message>
+ <source>Fit to contents</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Reset to defaults</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Attachments (icon)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Group</name>
+ <message>
+ <source>Recycle Bin</source>
+ <translation>Recycle Bin</translation>
+ </message>
+</context>
+<context>
+ <name>HostInstaller</name>
+ <message>
+ <source>KeePassXC: Cannot save file!</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot save the native messaging script file.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>HttpPasswordGeneratorWidget</name>
+ <message>
+ <source>Length:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>Character Types</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>A-Z</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>a-z</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>0-9</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>/*_&amp; ...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>Exclude look-alike characters</translation>
+ </message>
+ <message>
+ <source>Ensure that the password contains characters from every group</source>
+ <translation>Ensure that the password contains characters from every group</translation>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Extended ASCII</translation>
+ </message>
+</context>
+<context>
+ <name>KMessageWidget</name>
+ <message>
+ <source>&amp;Close</source>
+ <translation>&amp;Close</translation>
+ </message>
+ <message>
+ <source>Close message</source>
+ <translation>Close message</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Reader</name>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Unable to issue challenge-response.</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Wrong key or database file is corrupt.</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx3Writer</name>
+ <message>
+ <source>Unable to issue challenge-response.</source>
+ <translation>Unable to issue challenge-response.</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Reader</name>
+ <message>
+ <source>missing database headers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+ <message>
+ <source>Invalid header checksum size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Header SHA256 mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
+ <translation>Wrong key or database file is corrupt. (HMAC mismatch)</translation>
+ </message>
+ <message>
+ <source>Unknown cipher</source>
+ <translation>Unknown cipher</translation>
+ </message>
+ <message>
+ <source>Invalid header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid header field length</source>
+ <translation>Invalid header field length</translation>
+ </message>
+ <message>
+ <source>Invalid header data length</source>
+ <translation>Invalid header data length</translation>
+ </message>
+ <message>
+ <source>Failed to open buffer for KDF parameters in header</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported key derivation function (KDF) or invalid parameters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy header fields found in KDBX4 file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header field length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner header binary size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported KeePass variant map version.</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry name data</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry value data</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Bool entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt32 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map Int64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map UInt64 entry value length</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map entry type</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid variant map field type size</source>
+ <extracomment>Translation: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Kdbx4Writer</name>
+ <message>
+ <source>Invalid symmetric cipher algorithm.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid symmetric cipher IV size.</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+ <message>
+ <source>Failed to serialize KDF parameters variant map</source>
+ <extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KdbxReader</name>
+ <message>
+ <source>Invalid cipher uuid length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid compression flags length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported compression algorithm</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid master seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform rounds size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid start bytes size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid random stream id size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid inner random stream cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; 'Import KeePass 1 database...'.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</source>
+ <translation>The selected file is an old KeePass 1 database (.kdb).
+
+You can import it by clicking on Database &gt; &apos;Import KeePass 1 database...&apos;.
+This is a one-way migration. You won&apos;t be able to open the imported database with the old KeePassX 0.4 version.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass 2 database version.</source>
+ <translation>Unsupported KeePass 2 database version.</translation>
+ </message>
+</context>
+<context>
+ <name>KdbxXmlReader</name>
+ <message>
+ <source>XML parsing failure: %1</source>
+ <translation>XML parsing failure: %1</translation>
+ </message>
+ <message>
+ <source>No root group</source>
+ <translation>No root group</translation>
+ </message>
+ <message>
+ <source>Missing icon uuid or data</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing custom data key or value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Multiple group elements</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null group uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableAutoType value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid EnableSearching value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No group uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null DeleteObject uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing DeletedObject uuid or time</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Null entry uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element in history entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No entry uuid found</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>History element with different uuid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decrypt entry string</source>
+ <translation>Unable to decrypt entry string</translation>
+ </message>
+ <message>
+ <source>Duplicate custom attribute found</source>
+ <translation>Duplicate custom attribute found</translation>
+ </message>
+ <message>
+ <source>Entry string key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Duplicate attachment found</source>
+ <translation>Duplicate attachment found</translation>
+ </message>
+ <message>
+ <source>Entry binary key or value missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-type association window or sequence missing</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid bool value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid date time value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid color rgb part</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid uuid value</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to decompress binary</source>
+ <extracomment>Translator meant is a binary data inside an entry</extracomment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KeePass1OpenWidget</name>
+ <message>
+ <source>Import KeePass1 database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to open the database.</source>
+ <translation>Unable to open the database.</translation>
+ </message>
+</context>
+<context>
+ <name>KeePass1Reader</name>
+ <message>
+ <source>Unable to read keyfile.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Not a KeePass database.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unsupported encryption algorithm.</source>
+ <translation>Unsupported encryption algorithm.</translation>
+ </message>
+ <message>
+ <source>Unsupported KeePass database version.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to read encryption IV</source>
+ <comment>IV = Initialization Vector for symmetric cipher</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of groups</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid content hash size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid transform seed size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid number of transform rounds</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unable to construct group tree</source>
+ <translation>Unable to construct group tree</translation>
+ </message>
+ <message>
+ <source>Root</source>
+ <translation>Root</translation>
+ </message>
+ <message>
+ <source>Unable to calculate master key</source>
+ <translation>Unable to calculate master key</translation>
+ </message>
+ <message>
+ <source>Wrong key or database file is corrupt.</source>
+ <translation>Wrong key or database file is corrupt.</translation>
+ </message>
+ <message>
+ <source>Key transformation failed</source>
+ <translation>Key transformation failed</translation>
+ </message>
+ <message>
+ <source>Invalid group field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read group field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group access time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Incorrect group level field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid group field type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing group id or level</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Missing entry field type number</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Read entry field data doesn&apos;t match size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry uuid field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry group id field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry icon field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry creation time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry modification time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry expiry time field size</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Invalid entry field type</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>KeePass2</name>
+ <message>
+ <source>AES: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Twofish: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>ChaCha20: 256-bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 4)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>AES-KDF (KDBX 3.1)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Argon2 (KDBX 4 – recommended)</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>Main</name>
+ <message>
+ <source>Existing single-instance lock file is invalid. Launching new instance.</source>
+ <translation>Existing single-instance lock file is invalid. Launching new instance.</translation>
+ </message>
+ <message>
+ <source>The lock file could not be created. Single-instance mode disabled.</source>
+ <translation>The lock file could not be created. Single-instance mode disabled.</translation>
+ </message>
+ <message>
+ <source>Another instance of KeePassXC is already running.</source>
+ <translation>Another instance of KeePassXC is already running.</translation>
+ </message>
+ <message>
+ <source>Fatal error while testing the cryptographic functions.</source>
+ <translation>Fatal error while testing the cryptographic functions.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - Error</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <source>&amp;Database</source>
+ <translation>&amp;Database</translation>
+ </message>
+ <message>
+ <source>&amp;Recent databases</source>
+ <translation>&amp;Recent databases</translation>
+ </message>
+ <message>
+ <source>Import</source>
+ <translation>Import</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Help</translation>
+ </message>
+ <message>
+ <source>E&amp;ntries</source>
+ <translation>E&amp;ntries</translation>
+ </message>
+ <message>
+ <source>Copy att&amp;ribute to clipboard</source>
+ <translation>Copy att&amp;ribute to clipboard</translation>
+ </message>
+ <message>
+ <source>Time-based one-time password</source>
+ <translation>Time-based one-time password</translation>
+ </message>
+ <message>
+ <source>&amp;Groups</source>
+ <translation>&amp;Groups</translation>
+ </message>
+ <message>
+ <source>&amp;Tools</source>
+ <translation>&amp;Tools</translation>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation>&amp;Quit</translation>
+ </message>
+ <message>
+ <source>&amp;About</source>
+ <translation>&amp;About</translation>
+ </message>
+ <message>
+ <source>&amp;Open database...</source>
+ <translation>&amp;Open database...</translation>
+ </message>
+ <message>
+ <source>&amp;Save database</source>
+ <translation>&amp;Save database</translation>
+ </message>
+ <message>
+ <source>&amp;Close database</source>
+ <translation>&amp;Close database</translation>
+ </message>
+ <message>
+ <source>&amp;New database</source>
+ <translation>&amp;New database</translation>
+ </message>
+ <message>
+ <source>Merge from KeePassX database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Add new entry</source>
+ <translation>&amp;Add new entry</translation>
+ </message>
+ <message>
+ <source>&amp;View/Edit entry</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Delete entry</source>
+ <translation>&amp;Delete entry</translation>
+ </message>
+ <message>
+ <source>&amp;Add new group</source>
+ <translation>&amp;Add new group</translation>
+ </message>
+ <message>
+ <source>&amp;Edit group</source>
+ <translation>&amp;Edit group</translation>
+ </message>
+ <message>
+ <source>&amp;Delete group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Sa&amp;ve database as...</source>
+ <translation>Sa&amp;ve database as...</translation>
+ </message>
+ <message>
+ <source>Change &amp;master key...</source>
+ <translation>Change &amp;master key...</translation>
+ </message>
+ <message>
+ <source>&amp;Database settings</source>
+ <translation>&amp;Database settings</translation>
+ </message>
+ <message>
+ <source>Database settings</source>
+ <translation>Database settings</translation>
+ </message>
+ <message>
+ <source>&amp;Clone entry</source>
+ <translation>&amp;Clone entry</translation>
+ </message>
+ <message>
+ <source>&amp;Find</source>
+ <translation>&amp;Find</translation>
+ </message>
+ <message>
+ <source>Copy &amp;username</source>
+ <translation>Copy &amp;username</translation>
+ </message>
+ <message>
+ <source>Copy username to clipboard</source>
+ <translation>Copy username to clipboard</translation>
+ </message>
+ <message>
+ <source>Cop&amp;y password</source>
+ <translation>Cop&amp;y password</translation>
+ </message>
+ <message>
+ <source>Copy password to clipboard</source>
+ <translation>Copy password to clipboard</translation>
+ </message>
+ <message>
+ <source>&amp;Settings</source>
+ <translation>&amp;Settings</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Perform Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Open URL</source>
+ <translation>&amp;Open URL</translation>
+ </message>
+ <message>
+ <source>&amp;Lock databases</source>
+ <translation>&amp;Lock databases</translation>
+ </message>
+ <message>
+ <source>&amp;Title</source>
+ <translation>&amp;Title</translation>
+ </message>
+ <message>
+ <source>Copy title to clipboard</source>
+ <translation>Copy title to clipboard</translation>
+ </message>
+ <message>
+ <source>&amp;URL</source>
+ <translation>&amp;URL</translation>
+ </message>
+ <message>
+ <source>Copy URL to clipboard</source>
+ <translation>Copy URL to clipboard</translation>
+ </message>
+ <message>
+ <source>&amp;Notes</source>
+ <translation>&amp;Notes</translation>
+ </message>
+ <message>
+ <source>Copy notes to clipboard</source>
+ <translation>Copy notes to clipboard</translation>
+ </message>
+ <message>
+ <source>&amp;Export to CSV file...</source>
+ <translation>&amp;Export to CSV file...</translation>
+ </message>
+ <message>
+ <source>Import KeePass 1 database...</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Import CSV file...</source>
+ <translation>Import CSV file...</translation>
+ </message>
+ <message>
+ <source>Re&amp;pair database...</source>
+ <translation>Re&amp;pair database...</translation>
+ </message>
+ <message>
+ <source>Show TOTP</source>
+ <translation>Show TOTP</translation>
+ </message>
+ <message>
+ <source>Set up TOTP...</source>
+ <translation>Set up TOTP...</translation>
+ </message>
+ <message>
+ <source>Copy &amp;TOTP</source>
+ <translation>Copy &amp;TOTP</translation>
+ </message>
+ <message>
+ <source>E&amp;mpty recycle bin</source>
+ <translation>E&amp;mpty recycle bin</translation>
+ </message>
+ <message>
+ <source>Clear history</source>
+ <translation>Clear history</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation>Access error for config file %1</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read-only</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Settings</source>
+ <translation>Settings</translation>
+ </message>
+ <message>
+ <source>Toggle window</source>
+ <translation>Toggle window</translation>
+ </message>
+ <message>
+ <source>Quit KeePassXC</source>
+ <translation>Quit KeePassXC</translation>
+ </message>
+ <message>
+ <source>KeePass 2 Database</source>
+ <translation>KeePass 2 Database</translation>
+ </message>
+ <message>
+ <source>All files</source>
+ <translation>All files</translation>
+ </message>
+ <message>
+ <source>Open database</source>
+ <translation>Open database</translation>
+ </message>
+ <message>
+ <source>Save repaired database</source>
+ <translation>Save repaired database</translation>
+ </message>
+ <message>
+ <source>Writing the database failed.</source>
+ <translation>Writing the database failed.</translation>
+ </message>
+ <message>
+ <source>Please touch the button on your YubiKey!</source>
+ <translation>Please touch the button on your YubiKey!</translation>
+ </message>
+ <message>
+ <source>WARNING: You are using an unstable build of KeePassXC!
+There is a high risk of corruption, maintain a backup of your databases.
+This version is not meant for production use.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>OpenSSHKey</name>
+ <message>
+ <source>Invalid key file, expecting an OpenSSH key</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>PEM boundary mismatch</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Base64 decoding failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file way too small.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key file magic header id invalid</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Found zero keys</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to read public key.</source>
+ <translation>Failed to read public key.</translation>
+ </message>
+ <message>
+ <source>Corrupted key file, reading private key failed</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>No private key payload to decrypt</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Trying to run KDF without cipher</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passphrase is required to decrypt this key</source>
+ <translation>Passphrase is required to decrypt this key</translation>
+ </message>
+ <message>
+ <source>Key derivation failed, key file corrupted?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Decryption failed, wrong passphrase?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading public key</source>
+ <translation>Unexpected EOF while reading public key</translation>
+ </message>
+ <message>
+ <source>Unexpected EOF while reading private key</source>
+ <translation>Unexpected EOF while reading private key</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write public key as it is empty</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing public key</source>
+ <translation>Unexpected EOF when writing public key</translation>
+ </message>
+ <message>
+ <source>Can&apos;t write private key as it is empty</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unexpected EOF when writing private key</source>
+ <translation>Unexpected EOF when writing private key</translation>
+ </message>
+ <message>
+ <source>Unsupported key type: %1</source>
+ <translation>Unsupported key type: %1</translation>
+ </message>
+ <message>
+ <source>Unknown cipher: %1</source>
+ <translation>Unknown cipher: %1</translation>
+ </message>
+ <message>
+ <source>Cipher IV is too short for MD5 kdf</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown KDF: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Unknown key type: %1</source>
+ <translation>Unknown key type: %1</translation>
+ </message>
+</context>
+<context>
+ <name>OptionDialog</name>
+ <message>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
+ <translation>This is required for accessing your databases from ChromeIPass or PassIFox</translation>
+ </message>
+ <message>
+ <source>Enable KeePassHTTP server</source>
+ <translation>Enable KeePassHTTP server</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Sh&amp;ow a notification when credentials are requested</source>
+ <extracomment>Credentials mean login data requested via browser extension</extracomment>
+ <translation>Sh&amp;ow a notification when credentials are requested</translation>
+ </message>
+ <message>
+ <source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
+ <translation>Only returns the best matches for a specific URL instead of all entries for the whole domain.</translation>
+ </message>
+ <message>
+ <source>&amp;Return only best matching entries</source>
+ <translation>&amp;Return only best matching entries</translation>
+ </message>
+ <message>
+ <source>Re&amp;quest to unlock the database if it is locked</source>
+ <translation>Re&amp;quest to unlock the database if it is locked</translation>
+ </message>
+ <message>
+ <source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Match URL schemes</source>
+ <translation>&amp;Match URL schemes</translation>
+ </message>
+ <message>
+ <source>Sort matching entries by &amp;username</source>
+ <translation>Sort matching entries by &amp;username</translation>
+ </message>
+ <message>
+ <source>Sort &amp;matching entries by title</source>
+ <translation>Sort &amp;matching entries by title</translation>
+ </message>
+ <message>
+ <source>R&amp;emove all shared encryption keys from active database</source>
+ <translation>R&amp;emove all shared encryption keys from active database</translation>
+ </message>
+ <message>
+ <source>Re&amp;move all stored permissions from entries in active database</source>
+ <translation>Re&amp;move all stored permissions from entries in active database</translation>
+ </message>
+ <message>
+ <source>Password Generator</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Advanced</source>
+ <translation>Advanced</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;access to entries</source>
+ <translation>Always allow &amp;access to entries</translation>
+ </message>
+ <message>
+ <source>Always allow &amp;updating entries</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Only the selected database has to be connected with a client.</source>
+ <translation>Only the selected database has to be connected with a client.</translation>
+ </message>
+ <message>
+ <source>Searc&amp;h in all opened databases for matching entries</source>
+ <translation>Searc&amp;h in all opened databases for matching entries</translation>
+ </message>
+ <message>
+ <source>Automatically creating or updating string fields is not supported.</source>
+ <translation>Automatically creating or updating string fields is not supported.</translation>
+ </message>
+ <message>
+ <source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
+ <translation>&amp;Return advanced string fields which start with &quot;KPH: &quot;</translation>
+ </message>
+ <message>
+ <source>HTTP Port:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Default port: 19455</source>
+ <translation>Default port: 19455</translation>
+ </message>
+ <message>
+ <source>KeePassXC will listen to this port on 127.0.0.1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
+ <translation>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Cannot bind to privileged ports below 1024!
+Using default port 19455.</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>PasswordGeneratorWidget</name>
+ <message>
+ <source>%p%</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>strength</source>
+ <comment>Password strength</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>entropy</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>Character Types</source>
+ <translation>Character Types</translation>
+ </message>
+ <message>
+ <source>Upper Case Letters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lower Case Letters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Numbers</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Special Characters</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Extended ASCII</source>
+ <translation>Extended ASCII</translation>
+ </message>
+ <message>
+ <source>Exclude look-alike characters</source>
+ <translation>Exclude look-alike characters</translation>
+ </message>
+ <message>
+ <source>Pick characters from every group</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>&amp;Length:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passphrase</source>
+ <translation>Passphrase</translation>
+ </message>
+ <message>
+ <source>Wordlist:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word Count:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Word Separator:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate</source>
+ <translation>Generate</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Copy</translation>
+ </message>
+ <message>
+ <source>Accept</source>
+ <translation>Accept</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation>Close</translation>
+ </message>
+ <message>
+ <source>Apply</source>
+ <translation>Apply</translation>
+ </message>
+ <message>
+ <source>Entropy: %1 bit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Password Quality: %1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Poor</source>
+ <comment>Password quality</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Weak</source>
+ <comment>Password quality</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Good</source>
+ <comment>Password quality</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Excellent</source>
+ <comment>Password quality</comment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>Database not opened</source>
+ <translation>Database not opened</translation>
+ </message>
+ <message>
+ <source>Database hash not available</source>
+ <translation>Database hash not available</translation>
+ </message>
+ <message>
+ <source>Client public key not received</source>
+ <translation>Client public key not received</translation>
+ </message>
+ <message>
+ <source>Cannot decrypt message</source>
+ <translation>Cannot decrypt message</translation>
+ </message>
+ <message>
+ <source>Timeout or cannot connect to KeePassXC</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Action cancelled or denied</source>
+ <translation>Action cancelled or denied</translation>
+ </message>
+ <message>
+ <source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC association failed, try again</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key change was not successful</source>
+ <translation>Key change was not successful</translation>
+ </message>
+ <message>
+ <source>Encryption key is not recognized</source>
+ <translation>Encryption key is not recognised</translation>
+ </message>
+ <message>
+ <source>No saved databases found</source>
+ <translation>No saved databases found</translation>
+ </message>
+ <message>
+ <source>Incorrect action</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Empty message received</source>
+ <translation>Empty message received</translation>
+ </message>
+ <message>
+ <source>No URL provided</source>
+ <translation>No URL provided</translation>
+ </message>
+ <message>
+ <source>No logins found</source>
+ <translation>No logins found</translation>
+ </message>
+ <message>
+ <source>Unknown error</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Add a new entry to a database.</source>
+ <translation>Add a new entry to a database.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Path of the database.</translation>
+ </message>
+ <message>
+ <source>Key file of the database.</source>
+ <translation>Key file of the database.</translation>
+ </message>
+ <message>
+ <source>path</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Username for the entry.</source>
+ <translation>Username for the entry.</translation>
+ </message>
+ <message>
+ <source>username</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>URL for the entry.</source>
+ <translation>URL for the entry.</translation>
+ </message>
+ <message>
+ <source>URL</source>
+ <translation>URL</translation>
+ </message>
+ <message>
+ <source>Prompt for the entry&apos;s password.</source>
+ <translation>Prompt for the entry&apos;s password.</translation>
+ </message>
+ <message>
+ <source>Generate a password for the entry.</source>
+ <translation>Generate a password for the entry.</translation>
+ </message>
+ <message>
+ <source>Length for the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>length</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to add.</source>
+ <translation>Path of the entry to add.</translation>
+ </message>
+ <message>
+ <source>Copy an entry&apos;s password to the clipboard.</source>
+ <translation>Copy an entry&apos;s password to the clipboard.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to clip.</source>
+ <comment>clip = copy to clipboard</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Timeout in seconds before clearing the clipboard.</source>
+ <translation>Timeout in seconds before clearing the clipboard.</translation>
+ </message>
+ <message>
+ <source>Edit an entry.</source>
+ <translation>Edit an entry.</translation>
+ </message>
+ <message>
+ <source>Title for the entry.</source>
+ <translation>Title for the entry.</translation>
+ </message>
+ <message>
+ <source>title</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Path of the entry to edit.</source>
+ <translation>Path of the entry to edit.</translation>
+ </message>
+ <message>
+ <source>Estimate the entropy of a password.</source>
+ <translation>Estimate the entropy of a password.</translation>
+ </message>
+ <message>
+ <source>Password for which to estimate the entropy.</source>
+ <translation>Password for which to estimate the entropy.</translation>
+ </message>
+ <message>
+ <source>Perform advanced analysis on the password.</source>
+ <translation>Perform advanced analysis on the password.</translation>
+ </message>
+ <message>
+ <source>Extract and print the content of a database.</source>
+ <translation>Extract and print the content of a database.</translation>
+ </message>
+ <message>
+ <source>Path of the database to extract.</source>
+ <translation>Path of the database to extract.</translation>
+ </message>
+ <message>
+ <source>Insert password to unlock %1: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Failed to load key file %1 : %2</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>WARNING: You are using a legacy key file format which may become
+unsupported in the future.
+
+Please consider generating a new key file.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>
+
+Available commands:
+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the command to execute.</source>
+ <translation>Name of the command to execute.</translation>
+ </message>
+ <message>
+ <source>List database entries.</source>
+ <translation>List database entries.</translation>
+ </message>
+ <message>
+ <source>Path of the group to list. Default is /</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Find entries quickly.</source>
+ <translation>Find entries quickly.</translation>
+ </message>
+ <message>
+ <source>Search term.</source>
+ <translation>Search term.</translation>
+ </message>
+ <message>
+ <source>Merge two databases.</source>
+ <translation>Merge two databases.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge into.</source>
+ <translation>Path of the database to merge into.</translation>
+ </message>
+ <message>
+ <source>Path of the database to merge from.</source>
+ <translation>Path of the database to merge from.</translation>
+ </message>
+ <message>
+ <source>Use the same credentials for both database files.</source>
+ <translation>Use the same credentials for both database files.</translation>
+ </message>
+ <message>
+ <source>Key file of the database to merge from.</source>
+ <translation>Key file of the database to merge from.</translation>
+ </message>
+ <message>
+ <source>Show an entry&apos;s information.</source>
+ <translation>Show an entry&apos;s information.</translation>
+ </message>
+ <message>
+ <source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
+ <translation>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</translation>
+ </message>
+ <message>
+ <source>attribute</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Name of the entry to show.</source>
+ <translation>Name of the entry to show.</translation>
+ </message>
+ <message>
+ <source>NULL device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>error reading from device</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>file empty !
+</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>malformed string</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>missing closing quote</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Group</source>
+ <translation>Group</translation>
+ </message>
+ <message>
+ <source>Title</source>
+ <translation>Title</translation>
+ </message>
+ <message>
+ <source>Username</source>
+ <translation>Username</translation>
+ </message>
+ <message>
+ <source>Password</source>
+ <translation>Password</translation>
+ </message>
+ <message>
+ <source>Notes</source>
+ <translation>Notes</translation>
+ </message>
+ <message>
+ <source>Last Modified</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Created</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Legacy Browser Integration</source>
+ <translation>Legacy Browser Integration</translation>
+ </message>
+ <message>
+ <source>Browser Integration</source>
+ <translation>Browser Integration</translation>
+ </message>
+ <message>
+ <source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Press</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Passive</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>SSH Agent</source>
+ <translation>SSH Agent</translation>
+ </message>
+ <message>
+ <source>Generate a new random diceware passphrase.</source>
+ <translation>Generate a new random diceware passphrase.</translation>
+ </message>
+ <message>
+ <source>Word count for the diceware passphrase.</source>
+ <translation>Word count for the diceware passphrase.</translation>
+ </message>
+ <message>
+ <source>count</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Wordlist for the diceware generator.
+[Default: EFF English]</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Generate a new random password.</source>
+ <translation>Generate a new random password.</translation>
+ </message>
+ <message>
+ <source>Length of the generated password.</source>
+ <translation>Length of the generated password.</translation>
+ </message>
+ <message>
+ <source>Use lowercase characters in the generated password.</source>
+ <translation>Use lowercase characters in the generated password.</translation>
+ </message>
+ <message>
+ <source>Use uppercase characters in the generated password.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use numbers in the generated password.</source>
+ <translation>Use numbers in the generated password.</translation>
+ </message>
+ <message>
+ <source>Use special characters in the generated password.</source>
+ <translation>Use special characters in the generated password.</translation>
+ </message>
+ <message>
+ <source>Use extended ASCII in the generated password.</source>
+ <translation>Use extended ASCII in the generated password.</translation>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor</name>
+ <message>
+ <source>Internal zlib error when compressing: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error writing to underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error opening underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Error reading data from underlying device: </source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error when decompressing: </source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>QtIOCompressor::open</name>
+ <message>
+ <source>The gzip format not supported in this version of zlib.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Internal zlib error: </source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SearchWidget</name>
+ <message>
+ <source>Search...</source>
+ <translation>Search...</translation>
+ </message>
+ <message>
+ <source>Search</source>
+ <translation>Search</translation>
+ </message>
+ <message>
+ <source>Clear</source>
+ <translation>Clear</translation>
+ </message>
+ <message>
+ <source>Case Sensitive</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Limit search to selected group</source>
+ <translation>Limit search to selected group</translation>
+ </message>
+</context>
+<context>
+ <name>Service</name>
+ <message>
+ <source>KeePassXC: New key association request</source>
+ <translation>KeePassXC: New key association request</translation>
+ </message>
+ <message>
+ <source>You have received an association request for the above key.
+If you would like to allow it access to your KeePassXC database
+give it a unique name to identify and accept it.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Overwrite existing key?</source>
+ <translation>KeePassXC: Overwrite existing key?</translation>
+ </message>
+ <message>
+ <source>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</source>
+ <translation>A shared encryption-key with the name &quot;%1&quot; already exists.
+Do you want to overwrite it?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Update Entry</source>
+ <translation>KeePassXC: Update Entry</translation>
+ </message>
+ <message>
+ <source>Do you want to update the information in %1 - %2?</source>
+ <translation>Do you want to update the information in %1 - %2?</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Database locked!</source>
+ <translation>KeePassXC: Database locked!</translation>
+ </message>
+ <message>
+ <source>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</source>
+ <translation>The active database is locked!
+Please unlock the selected database or choose another one which is unlocked.</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed keys from database</source>
+ <translation>KeePassXC: Removed keys from database</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No keys found</source>
+ <translation>KeePassXC: No keys found</translation>
+ </message>
+ <message>
+ <source>No shared encryption-keys found in KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>KeePassXC: Settings not available!</source>
+ <translation>KeePassXC: Settings not available!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry of KeePassHttp Settings.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Removing stored permissions...</source>
+ <translation>Removing stored permissions...</translation>
+ </message>
+ <message>
+ <source>Abort</source>
+ <translation>Abort</translation>
+ </message>
+ <message>
+ <source>KeePassXC: Removed permissions</source>
+ <translation>KeePassXC: Removed permissions</translation>
+ </message>
+ <message numerus="yes">
+ <source>Successfully removed permissions from %n entries.</source>
+ <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ </message>
+ <message>
+ <source>KeePassXC: No entry with permissions found!</source>
+ <translation>KeePassXC: No entry with permissions found!</translation>
+ </message>
+ <message>
+ <source>The active database does not contain an entry with permissions.</source>
+ <translation>The active database does not contain an entry with permissions.</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidget</name>
+ <message>
+ <source>Application Settings</source>
+ <translation>Application Settings</translation>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <source>Security</source>
+ <translation>Security</translation>
+ </message>
+ <message>
+ <source>Access error for config file %1</source>
+ <translation>Access error for config file %1</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetGeneral</name>
+ <message>
+ <source>Basic Settings</source>
+ <translation>Basic Settings</translation>
+ </message>
+ <message>
+ <source>Start only a single instance of KeePassXC</source>
+ <translation>Start only a single instance of KeePassXC</translation>
+ </message>
+ <message>
+ <source>Remember last databases</source>
+ <translation>Remember last databases</translation>
+ </message>
+ <message>
+ <source>Remember last key files and security dongles</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Load previous databases on startup</source>
+ <translation>Load previous databases on startup</translation>
+ </message>
+ <message>
+ <source>Automatically save on exit</source>
+ <translation>Automatically save on exit</translation>
+ </message>
+ <message>
+ <source>Automatically save after every change</source>
+ <translation>Automatically save after every change</translation>
+ </message>
+ <message>
+ <source>Automatically reload the database when modified externally</source>
+ <translation>Automatically reload the database when modified externally</translation>
+ </message>
+ <message>
+ <source>Minimize when copying to clipboard</source>
+ <translation>Minimise when copying to clipboard</translation>
+ </message>
+ <message>
+ <source>Minimize window at application startup</source>
+ <translation>Minimise window at application startup</translation>
+ </message>
+ <message>
+ <source>Use group icon on entry creation</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
+ <translation>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</translation>
+ </message>
+ <message>
+ <source>Hide the Details view</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Show a system tray icon</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Hide window to system tray when minimized</source>
+ <translation>Hide window to system tray when minimised</translation>
+ </message>
+ <message>
+ <source>Hide window to system tray instead of app exit</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Dark system tray icon</source>
+ <translation>Dark system tray icon</translation>
+ </message>
+ <message>
+ <source>Language</source>
+ <translation>Language</translation>
+ </message>
+ <message>
+ <source>Auto-Type</source>
+ <translation>Auto-Type</translation>
+ </message>
+ <message>
+ <source>Use entry title to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Use entry URL to match windows for global Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Always ask before performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Global Auto-Type shortcut</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Auto-Type delay</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> ms</source>
+ <comment>Milliseconds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Startup</source>
+ <translation>Startup</translation>
+ </message>
+ <message>
+ <source>File Management</source>
+ <translation>File Management</translation>
+ </message>
+ <message>
+ <source>Safely save database files (may be incompatible with Dropbox, etc)</source>
+ <translation>Safely save database files (may be incompatible with Dropbox, etc)</translation>
+ </message>
+ <message>
+ <source>Backup database file before saving</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Entry Management</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+</context>
+<context>
+ <name>SettingsWidgetSecurity</name>
+ <message>
+ <source>Timeouts</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Clear clipboard after</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock databases after inactivity of</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Convenience</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Lock databases when session is locked or lid is closed</source>
+ <translation>Lock databases when session is locked or lid is closed</translation>
+ </message>
+ <message>
+ <source>Lock databases after minimizing the window</source>
+ <translation>Lock databases after minimising the window</translation>
+ </message>
+ <message>
+ <source>Don&apos;t require password repeat when it is visible</source>
+ <translation>Don&apos;t require password repeat when it is visible</translation>
+ </message>
+ <message>
+ <source>Show passwords in cleartext by default</source>
+ <translation>Show passwords in cleartext by default</translation>
+ </message>
+ <message>
+ <source>Hide passwords in the preview panel</source>
+ <translation>Hide passwords in the preview panel</translation>
+ </message>
+ <message>
+ <source>Hide entry notes by default</source>
+ <translation>Hide entry notes by default</translation>
+ </message>
+ <message>
+ <source>Privacy</source>
+ <translation>Privacy</translation>
+ </message>
+ <message>
+ <source>Use Google as fallback for downloading website icons</source>
+ <translation>Use Google as fallback for downloading website icons</translation>
+ </message>
+ <message>
+ <source>Re-lock previously locked database after performing Auto-Type</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>SetupTotpDialog</name>
+ <message>
+ <source>Setup TOTP</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Key:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Default RFC 6238 token settings</source>
+ <translation>Default RFC 6238 token settings</translation>
+ </message>
+ <message>
+ <source>Steam token settings</source>
+ <translation>Steam token settings</translation>
+ </message>
+ <message>
+ <source>Use custom settings</source>
+ <translation>Use custom settings</translation>
+ </message>
+ <message>
+ <source>Note: Change these settings only if you know what you are doing.</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Time step:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>8 digits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>6 digits</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Code size:</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source> sec</source>
+ <comment>Seconds</comment>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>TotpDialog</name>
+ <message>
+ <source>Timed Password</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>000000</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Copy</translation>
+ </message>
+ <message>
+ <source>Expires in</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>seconds</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+<context>
+ <name>UnlockDatabaseWidget</name>
+ <message>
+ <source>Unlock database</source>
+ <translation>Unlock database</translation>
+ </message>
+</context>
+<context>
+ <name>WelcomeWidget</name>
+ <message>
+ <source>Start storing your passwords securely in a KeePassXC database</source>
+ <translation>Start storing your passwords securely in a KeePassXC database</translation>
+ </message>
+ <message>
+ <source>Create new database</source>
+ <translation>Create new database</translation>
+ </message>
+ <message>
+ <source>Open existing database</source>
+ <translation>Open existing database</translation>
+ </message>
+ <message>
+ <source>Import from KeePass 1</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Import from CSV</source>
+ <translation>Import from CSV</translation>
+ </message>
+ <message>
+ <source>Recent databases</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Welcome to KeePassXC %1</source>
+ <translation>Welcome to KeePassXC %1</translation>
+ </message>
+</context>
+<context>
+ <name>main</name>
+ <message>
+ <source>Remove an entry from the database.</source>
+ <translation>Remove an entry from the database.</translation>
+ </message>
+ <message>
+ <source>Path of the database.</source>
+ <translation>Path of the database.</translation>
+ </message>
+ <message>
+ <source>Path of the entry to remove.</source>
+ <translation>Path of the entry to remove.</translation>
+ </message>
+ <message>
+ <source>KeePassXC - cross-platform password manager</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>filenames of the password databases to open (*.kdbx)</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>path to a custom config file</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>key file of the database</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>read password of the database from stdin</source>
+ <translation type="unfinished"/>
+ </message>
+ <message>
+ <source>Parent window handle</source>
+ <translation type="unfinished"/>
+ </message>
+</context>
+</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_es.ts b/share/translations/keepassx_es.ts
index 1c293490e..092eada9f 100644
--- a/share/translations/keepassx_es.ts
+++ b/share/translations/keepassx_es.ts
@@ -449,7 +449,7 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message numerus="yes">
<source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Quitado con éxito %n llaves de cifrado de configuración KeePassXC.</numerusform><numerusform>Quitado con éxito %n llaves de cifrado de configuración KeePassXC.</numerusform></translation>
</message>
<message>
<source>Removing stored permissions…</source>
@@ -465,7 +465,7 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message numerus="yes">
<source>Successfully removed permissions from %n entry(s).</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Con éxito quitar permisos de %n ello.</numerusform><numerusform>Removidos con éxito permisos de %n entrada(s).</numerusform></translation>
</message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
@@ -694,15 +694,15 @@ Considere generar un nuevo archivo llave.</translation>
<name>CsvParserModel</name>
<message numerus="yes">
<source>%n byte(s), </source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n byte(s), </numerusform><numerusform>%n byte(s), </numerusform></translation>
</message>
<message numerus="yes">
<source>%n row(s), </source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>filas de %n, </numerusform><numerusform>%n fila(s), </numerusform></translation>
</message>
<message numerus="yes">
<source>%n column(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n columnas</numerusform><numerusform>%n columna(s)</numerusform></translation>
</message>
</context>
<context>
@@ -862,12 +862,12 @@ Si conserva este número, ¡su base de datos puede ser muy fácil de descifrar!<
<message numerus="yes">
<source> MiB</source>
<comment>Abbreviation for Mebibytes (KDF settings)</comment>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform> MiB</numerusform><numerusform> MiB</numerusform></translation>
</message>
<message numerus="yes">
<source> thread(s)</source>
<comment>Threads for parallel execution (KDF settings)</comment>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform> o de los hilos</numerusform><numerusform>hilo(s)</numerusform></translation>
</message>
</context>
<context>
@@ -894,7 +894,7 @@ Si conserva este número, ¡su base de datos puede ser muy fácil de descifrar!<
</message>
<message>
<source>Benchmark 1-second delay</source>
- <translation type="unfinished"/>
+ <translation>Medición de retraso de un segundo</translation>
</message>
<message>
<source>Memory Usage:</source>
@@ -1747,7 +1747,7 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Plugin Data</source>
- <translation type="unfinished"/>
+ <translation>Datos del complemento</translation>
</message>
<message>
<source>Remove</source>
@@ -1755,12 +1755,13 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Delete plugin data?</source>
- <translation type="unfinished"/>
+ <translation>Eliminar los datos del complemento?</translation>
</message>
<message>
<source>Do you really want to delete the selected plugin data?
This may cause the affected plugins to malfunction.</source>
- <translation type="unfinished"/>
+ <translation>¿Realmente desea eliminar los datos del complemento seleccionado?
+Esto puede causar un mal funcionamiento de los complementos afectados.</translation>
</message>
<message>
<source>Key</source>
@@ -1845,22 +1846,25 @@ This may cause the affected plugins to malfunction.</source>
<message>
<source>Unable to save attachments:
%1</source>
- <translation type="unfinished"/>
+ <translation>No se puede guardar los datos adjuntos:
+%1</translation>
</message>
<message>
<source>Unable to open attachment:
%1</source>
- <translation type="unfinished"/>
+ <translation>No se puede abrir el archivo adjunto:
+%1</translation>
</message>
<message>
<source>Unable to open attachments:
%1</source>
- <translation type="unfinished"/>
+ <translation>No se pueden abrir los datos adjuntos:%1</translation>
</message>
<message>
<source>Unable to open files:
%1</source>
- <translation type="unfinished"/>
+ <translation>No se pueden abrir los archivos:
+%1</translation>
</message>
</context>
<context>
@@ -1938,7 +1942,7 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Accessed</source>
- <translation type="unfinished"/>
+ <translation>Accedido</translation>
</message>
<message>
<source>Attachments</source>
@@ -2171,54 +2175,54 @@ This may cause the affected plugins to malfunction.</source>
<message>
<source>Invalid variant map entry value data</source>
<extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Datos del valor de la entrada de mapa de variante inválida</translation>
</message>
<message>
<source>Invalid variant map Bool entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Longitud del valor de la entrada del mapa booleano de variante inválida</translation>
</message>
<message>
<source>Invalid variant map Int32 entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Largo inválido en valor de entrada Int32 de mapeo de variante</translation>
</message>
<message>
<source>Invalid variant map UInt32 entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Largo inválido en valor de entrada UInt32 de mapeo de variante</translation>
</message>
<message>
<source>Invalid variant map Int64 entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Largo inválido en valor de entrada Int64 de mapeo de variante</translation>
</message>
<message>
<source>Invalid variant map UInt64 entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Largo inválido en valor de entrada UInt64 de mapeo de variante</translation>
</message>
<message>
<source>Invalid variant map entry type</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Tipo de entrada inválida de mapeo devariante</translation>
</message>
<message>
<source>Invalid variant map field type size</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Mapei de variante inválido en campo de tipo tamaño</translation>
</message>
</context>
<context>
<name>Kdbx4Writer</name>
<message>
<source>Invalid symmetric cipher algorithm.</source>
- <translation type="unfinished"/>
+ <translation>Algoritmo de cifrado simétrico inválido</translation>
</message>
<message>
<source>Invalid symmetric cipher IV size.</source>
<comment>IV = Initialization Vector for symmetric cipher</comment>
- <translation type="unfinished"/>
+ <translation>Tamaño de IV inválido en cifrado simétrico</translation>
</message>
<message>
<source>Unable to calculate master key</source>
@@ -2227,50 +2231,50 @@ This may cause the affected plugins to malfunction.</source>
<message>
<source>Failed to serialize KDF parameters variant map</source>
<extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Falló serialización de parámetros KDF en mapeo de variante</translation>
</message>
</context>
<context>
<name>KdbxReader</name>
<message>
<source>Invalid cipher uuid length</source>
- <translation type="unfinished"/>
+ <translation>Largo uuid de cifrado inválido</translation>
</message>
<message>
<source>Unsupported cipher</source>
- <translation type="unfinished"/>
+ <translation>Cifrado no compatible</translation>
</message>
<message>
<source>Invalid compression flags length</source>
- <translation type="unfinished"/>
+ <translation>Largo de banderas de compresión inválido</translation>
</message>
<message>
<source>Unsupported compression algorithm</source>
- <translation type="unfinished"/>
+ <translation>Algoritmo de compresión no soportado</translation>
</message>
<message>
<source>Invalid master seed size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de semilla maestra inválido</translation>
</message>
<message>
<source>Invalid transform seed size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de semilla de transformación inválido</translation>
</message>
<message>
<source>Invalid transform rounds size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de rondas de transformación inválido</translation>
</message>
<message>
<source>Invalid start bytes size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de bytes de inicio no válido</translation>
</message>
<message>
<source>Invalid random stream id size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de id de flujo inváldo</translation>
</message>
<message>
<source>Invalid inner random stream cipher</source>
- <translation type="unfinished"/>
+ <translation>Flujo de cifrado interno inválido</translation>
</message>
<message>
<source>Not a KeePass database.</source>
@@ -2295,124 +2299,124 @@ Esta migración es en único sentido. No podrá abrir la base de datos importada
<name>KdbxXmlReader</name>
<message>
<source>XML parsing failure: %1</source>
- <translation type="unfinished"/>
+ <translation>Error de parsing XML: %1</translation>
</message>
<message>
<source>No root group</source>
- <translation type="unfinished"/>
+ <translation>Ningún grupo de raíz</translation>
</message>
<message>
<source>Missing icon uuid or data</source>
- <translation type="unfinished"/>
+ <translation>Datos o uuid del ícono faltantes</translation>
</message>
<message>
<source>Missing custom data key or value</source>
- <translation type="unfinished"/>
+ <translation>Falta la clave de datos o valor</translation>
</message>
<message>
<source>Multiple group elements</source>
- <translation type="unfinished"/>
+ <translation>Múltiples elementos de grupo</translation>
</message>
<message>
<source>Null group uuid</source>
- <translation type="unfinished"/>
+ <translation>Uuid de grupo nulo</translation>
</message>
<message>
<source>Invalid group icon number</source>
- <translation type="unfinished"/>
+ <translation>Número de icono de grupo no válido</translation>
</message>
<message>
<source>Invalid EnableAutoType value</source>
- <translation type="unfinished"/>
+ <translation>Valor no válido de EnableAutoType</translation>
</message>
<message>
<source>Invalid EnableSearching value</source>
- <translation type="unfinished"/>
+ <translation>Valor no válido de EnableSearching</translation>
</message>
<message>
<source>No group uuid found</source>
- <translation type="unfinished"/>
+ <translation>No uuid de grupo encontrado</translation>
</message>
<message>
<source>Null DeleteObject uuid</source>
- <translation type="unfinished"/>
+ <translation>Uuid de DeleteObject nulo</translation>
</message>
<message>
<source>Missing DeletedObject uuid or time</source>
- <translation type="unfinished"/>
+ <translation>Falta uuid de DeletedObject o tiempo</translation>
</message>
<message>
<source>Null entry uuid</source>
- <translation type="unfinished"/>
+ <translation>Uuid de entrada nulo</translation>
</message>
<message>
<source>Invalid entry icon number</source>
- <translation type="unfinished"/>
+ <translation>Número de ícono de entrada inválido</translation>
</message>
<message>
<source>History element in history entry</source>
- <translation type="unfinished"/>
+ <translation>Elemento de la historia en la entrada de la historia</translation>
</message>
<message>
<source>No entry uuid found</source>
- <translation type="unfinished"/>
+ <translation>No uuid de entrada encontrado</translation>
</message>
<message>
<source>History element with different uuid</source>
- <translation type="unfinished"/>
+ <translation>Elemento del historial con uuid diferente</translation>
</message>
<message>
<source>Unable to decrypt entry string</source>
- <translation type="unfinished"/>
+ <translation>No se puede descifrar la cadena de entrada</translation>
</message>
<message>
<source>Duplicate custom attribute found</source>
- <translation type="unfinished"/>
+ <translation>Atributo personalizado duplicado encontrado</translation>
</message>
<message>
<source>Entry string key or value missing</source>
- <translation type="unfinished"/>
+ <translation>Falta clave de entrada o valor</translation>
</message>
<message>
<source>Duplicate attachment found</source>
- <translation type="unfinished"/>
+ <translation>Encontrado dato adjunto duplicado</translation>
</message>
<message>
<source>Entry binary key or value missing</source>
- <translation type="unfinished"/>
+ <translation>Falta clave de entrada binaria o valor</translation>
</message>
<message>
<source>Auto-type association window or sequence missing</source>
- <translation type="unfinished"/>
+ <translation>Falta de secuencia o ventana de Asociación de auto-tipeado</translation>
</message>
<message>
<source>Invalid bool value</source>
- <translation type="unfinished"/>
+ <translation>Valor booleano inválido</translation>
</message>
<message>
<source>Invalid date time value</source>
- <translation type="unfinished"/>
+ <translation>Valor de tiempo o fecha no válido</translation>
</message>
<message>
<source>Invalid color value</source>
- <translation type="unfinished"/>
+ <translation>Valor del color no válido</translation>
</message>
<message>
<source>Invalid color rgb part</source>
- <translation type="unfinished"/>
+ <translation>Parte de color rgb no válido</translation>
</message>
<message>
<source>Invalid number value</source>
- <translation type="unfinished"/>
+ <translation>Valor de número no válido</translation>
</message>
<message>
<source>Invalid uuid value</source>
- <translation type="unfinished"/>
+ <translation>Valor uuid no válido</translation>
</message>
<message>
<source>Unable to decompress binary</source>
<extracomment>Translator meant is a binary data inside an entry</extracomment>
- <translation type="unfinished"/>
+ <translation>No se puede descomprimir binario</translation>
</message>
</context>
<context>
@@ -2447,27 +2451,27 @@ Esta migración es en único sentido. No podrá abrir la base de datos importada
<message>
<source>Unable to read encryption IV</source>
<comment>IV = Initialization Vector for symmetric cipher</comment>
- <translation type="unfinished"/>
+ <translation>No se puede leer el cifrado IV</translation>
</message>
<message>
<source>Invalid number of groups</source>
- <translation type="unfinished"/>
+ <translation>Número de grupos no válido</translation>
</message>
<message>
<source>Invalid number of entries</source>
- <translation type="unfinished"/>
+ <translation>Número de entradas no válido</translation>
</message>
<message>
<source>Invalid content hash size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño del hash de contenido no válido</translation>
</message>
<message>
<source>Invalid transform seed size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de semilla de transformación inválido</translation>
</message>
<message>
<source>Invalid number of transform rounds</source>
- <translation type="unfinished"/>
+ <translation>Número de turnos de transformación no válido </translation>
</message>
<message>
<source>Unable to construct group tree</source>
@@ -2491,118 +2495,118 @@ Esta migración es en único sentido. No podrá abrir la base de datos importada
</message>
<message>
<source>Invalid group field type number</source>
- <translation type="unfinished"/>
+ <translation>Número de tipo de campo de grupo inválido</translation>
</message>
<message>
<source>Invalid group field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño inválido para el campo grupo</translation>
</message>
<message>
<source>Read group field data doesn&apos;t match size</source>
- <translation type="unfinished"/>
+ <translation>Datos de campo de grupo leídos no coinciden en tamaño</translation>
</message>
<message>
<source>Incorrect group id field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de campo de id de grupo incorrecto</translation>
</message>
<message>
<source>Incorrect group creation time field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de campo de tiempo de creación de grupo incorrecto</translation>
</message>
<message>
<source>Incorrect group modification time field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de campo de hora de modificación de grupo incorrecto</translation>
</message>
<message>
<source>Incorrect group access time field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de campo de tiempo de acceso de grupo incorrecto</translation>
</message>
<message>
<source>Incorrect group expiry time field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de campo de tiempo de caducidad de grupo incorrecto</translation>
</message>
<message>
<source>Incorrect group icon field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño del campo del ícono de grupo incorrecto</translation>
</message>
<message>
<source>Incorrect group level field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de campo del nivel de grupo incorrecto</translation>
</message>
<message>
<source>Invalid group field type</source>
- <translation type="unfinished"/>
+ <translation>Tipo de campo de grupo inválido</translation>
</message>
<message>
<source>Missing group id or level</source>
- <translation type="unfinished"/>
+ <translation>Falta identificador de grupo o nivel</translation>
</message>
<message>
<source>Missing entry field type number</source>
- <translation type="unfinished"/>
+ <translation>Entrada de tipo número en campo faltante</translation>
</message>
<message>
<source>Invalid entry field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de la entrada para el campo inválido</translation>
</message>
<message>
<source>Read entry field data doesn&apos;t match size</source>
- <translation type="unfinished"/>
+ <translation>Datos de campo de entrada no coinciden en tamaño</translation>
</message>
<message>
<source>Invalid entry uuid field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de la entrada para el campo uuid inválido</translation>
</message>
<message>
<source>Invalid entry group id field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de la entrada para el campo identificador de grupo inválido</translation>
</message>
<message>
<source>Invalid entry icon field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de la entrada para el campo icono inválido</translation>
</message>
<message>
<source>Invalid entry creation time field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de la entrada para el campo tiempo de creación inválido</translation>
</message>
<message>
<source>Invalid entry modification time field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de la entrada para el campo tiempo de modificación inválido</translation>
</message>
<message>
<source>Invalid entry expiry time field size</source>
- <translation type="unfinished"/>
+ <translation>Tamaño de la entrada para el campo tiempo de expiración inválido</translation>
</message>
<message>
<source>Invalid entry field type</source>
- <translation type="unfinished"/>
+ <translation>Tipo del campo de entrada inválido</translation>
</message>
</context>
<context>
<name>KeePass2</name>
<message>
<source>AES: 256-bit</source>
- <translation type="unfinished"/>
+ <translation>AES: 256-bit</translation>
</message>
<message>
<source>Twofish: 256-bit</source>
- <translation type="unfinished"/>
+ <translation>Twofish: 256-bit</translation>
</message>
<message>
<source>ChaCha20: 256-bit</source>
- <translation type="unfinished"/>
+ <translation>ChaCha20: 256-bit</translation>
</message>
<message>
<source>AES-KDF (KDBX 4)</source>
- <translation type="unfinished"/>
+ <translation>AES-KDF (KDBX 4)</translation>
</message>
<message>
<source>AES-KDF (KDBX 3.1)</source>
- <translation type="unfinished"/>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Argon2 (KDBX 4 – recommended)</source>
- <translation type="unfinished"/>
+ <translation>Argon2 (KDBX 4 – recomendado)</translation>
</message>
</context>
<context>
@@ -2844,7 +2848,7 @@ Esta migración es en único sentido. No podrá abrir la base de datos importada
</message>
<message>
<source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;p&gt;Parece que utiliza KeePassHTTP para la integración del navegador. Esta característica ha quedado obsoleto y desaparecerá en el futuro. &lt;br&gt;Por favor, ¡pasa a KeePassXC-Browser en lugar de esto! Para obtener ayuda con la migración, visite nuestra &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;Guía de migración&lt;/a&gt; (advertencia %1 de 3).&lt;/p&gt;</translation>
</message>
<message>
<source>read-only</source>
@@ -2890,50 +2894,52 @@ Esta migración es en único sentido. No podrá abrir la base de datos importada
<source>WARNING: You are using an unstable build of KeePassXC!
There is a high risk of corruption, maintain a backup of your databases.
This version is not meant for production use.</source>
- <translation type="unfinished"/>
+ <translation>ADVERTENCIA: Usted está utilizando una versión inestable de KeePassXC!
+Hay un alto riesgo de corrupción, mantenga una copia de seguridad de sus bases de datos.
+Esta versión no es para uso de producción.</translation>
</message>
</context>
<context>
<name>OpenSSHKey</name>
<message>
<source>Invalid key file, expecting an OpenSSH key</source>
- <translation type="unfinished"/>
+ <translation>Archivo de clave no válida, esperando una clave de OpenSSH</translation>
</message>
<message>
<source>PEM boundary mismatch</source>
- <translation type="unfinished"/>
+ <translation>Desajuste de límite PEM</translation>
</message>
<message>
<source>Base64 decoding failed</source>
- <translation type="unfinished"/>
+ <translation>No se pudo decodificar Base64</translation>
</message>
<message>
<source>Key file way too small.</source>
- <translation type="unfinished"/>
+ <translation>Archivo llave demasiado pequeño.</translation>
</message>
<message>
<source>Key file magic header id invalid</source>
- <translation type="unfinished"/>
+ <translation>Id de encabezado mágico del archivo llave inválido</translation>
</message>
<message>
<source>Found zero keys</source>
- <translation type="unfinished"/>
+ <translation>Cero claves encontradas</translation>
</message>
<message>
<source>Failed to read public key.</source>
- <translation type="unfinished"/>
+ <translation>No se pudo leer la clave pública.</translation>
</message>
<message>
<source>Corrupted key file, reading private key failed</source>
- <translation type="unfinished"/>
+ <translation>Fichero de claves corrupto, no se pudo leer la clave privada</translation>
</message>
<message>
<source>No private key payload to decrypt</source>
- <translation type="unfinished"/>
+ <translation>Sin contenido a desencriptar en llave privada</translation>
</message>
<message>
<source>Trying to run KDF without cipher</source>
- <translation type="unfinished"/>
+ <translation>Tratando de ejecutar KDF sin cifrado</translation>
</message>
<message>
<source>Passphrase is required to decrypt this key</source>
@@ -2941,35 +2947,35 @@ This version is not meant for production use.</source>
</message>
<message>
<source>Key derivation failed, key file corrupted?</source>
- <translation type="unfinished"/>
+ <translation>Derivación de la llave falló, ¿archivo llave dañado?</translation>
</message>
<message>
<source>Decryption failed, wrong passphrase?</source>
- <translation type="unfinished"/>
+ <translation>¿Error de descifrado, contraseña incorrecta?</translation>
</message>
<message>
<source>Unexpected EOF while reading public key</source>
- <translation type="unfinished"/>
+ <translation>EOF inesperado al leer la clave pública</translation>
</message>
<message>
<source>Unexpected EOF while reading private key</source>
- <translation type="unfinished"/>
+ <translation>EOF inesperado al leer la clave privada</translation>
</message>
<message>
<source>Can&apos;t write public key as it is empty</source>
- <translation type="unfinished"/>
+ <translation>No se puede escribir la clave pública ya que es vacía</translation>
</message>
<message>
<source>Unexpected EOF when writing public key</source>
- <translation type="unfinished"/>
+ <translation>EOF inesperado al escribir la clave pública</translation>
</message>
<message>
<source>Can&apos;t write private key as it is empty</source>
- <translation type="unfinished"/>
+ <translation>No se puede escribir la clave privada ya que es vacía</translation>
</message>
<message>
<source>Unexpected EOF when writing private key</source>
- <translation type="unfinished"/>
+ <translation>EOF inesperado al escribir la clave privada</translation>
</message>
<message>
<source>Unsupported key type: %1</source>
@@ -3101,7 +3107,7 @@ This version is not meant for production use.</source>
</message>
<message>
<source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;p&gt;KeePassHTTP ha quedado obsoleto y desaparecerá en el futuro. &lt;br&gt;Por favor, ¡pasa a KeePassXC-Browser en lugar de esto! Para obtener ayuda con la migración, visite nuestra &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;Guía de migración&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
<source>Cannot bind to privileged ports</source>
@@ -3242,63 +3248,63 @@ Usando el puerto por defecto 19455</translation>
<name>QObject</name>
<message>
<source>Database not opened</source>
- <translation type="unfinished"/>
+ <translation>Base de datos no abierta</translation>
</message>
<message>
<source>Database hash not available</source>
- <translation type="unfinished"/>
+ <translation>Hash de la base de datos no disponible</translation>
</message>
<message>
<source>Client public key not received</source>
- <translation type="unfinished"/>
+ <translation>Clave pública del cliente no recibida</translation>
</message>
<message>
<source>Cannot decrypt message</source>
- <translation type="unfinished"/>
+ <translation>No se puede descifrar el mensaje</translation>
</message>
<message>
<source>Timeout or cannot connect to KeePassXC</source>
- <translation type="unfinished"/>
+ <translation>Tiempo de espera superado, o no se puede conectar a KeePassXC</translation>
</message>
<message>
<source>Action cancelled or denied</source>
- <translation type="unfinished"/>
+ <translation>Acción cancelada o denegada</translation>
</message>
<message>
<source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
- <translation type="unfinished"/>
+ <translation>No se puede cifrar el mensaje o la clave pública no se encuentra. ¿Es habilitado el Native Messaging en KeePassXC?</translation>
</message>
<message>
<source>KeePassXC association failed, try again</source>
- <translation type="unfinished"/>
+ <translation>No se pudo asociar con KeePassXC, inténtelo de nuevo</translation>
</message>
<message>
<source>Key change was not successful</source>
- <translation type="unfinished"/>
+ <translation>Cambio de clave no fue exitoso</translation>
</message>
<message>
<source>Encryption key is not recognized</source>
- <translation type="unfinished"/>
+ <translation>Clave de cifrado no es reconocida</translation>
</message>
<message>
<source>No saved databases found</source>
- <translation type="unfinished"/>
+ <translation>Ninguna base de datos guardadas encontrada</translation>
</message>
<message>
<source>Incorrect action</source>
- <translation type="unfinished"/>
+ <translation>Acción incorrecta</translation>
</message>
<message>
<source>Empty message received</source>
- <translation type="unfinished"/>
+ <translation>Mensaje vacío recibido</translation>
</message>
<message>
<source>No URL provided</source>
- <translation type="unfinished"/>
+ <translation>No hay URL proporcionada</translation>
</message>
<message>
<source>No logins found</source>
- <translation type="unfinished"/>
+ <translation>No se encuentraron logins</translation>
</message>
<message>
<source>Unknown error</source>
@@ -3306,7 +3312,7 @@ Usando el puerto por defecto 19455</translation>
</message>
<message>
<source>Add a new entry to a database.</source>
- <translation type="unfinished"/>
+ <translation>Añadir una nueva entrada a una base de datos.</translation>
</message>
<message>
<source>Path of the database.</source>
@@ -3322,7 +3328,7 @@ Usando el puerto por defecto 19455</translation>
</message>
<message>
<source>Username for the entry.</source>
- <translation type="unfinished"/>
+ <translation>Nombre de usuario para la entrada.</translation>
</message>
<message>
<source>username</source>
@@ -3330,7 +3336,7 @@ Usando el puerto por defecto 19455</translation>
</message>
<message>
<source>URL for the entry.</source>
- <translation type="unfinished"/>
+ <translation>URL de la entrada.</translation>
</message>
<message>
<source>URL</source>
@@ -3338,11 +3344,11 @@ Usando el puerto por defecto 19455</translation>
</message>
<message>
<source>Prompt for the entry&apos;s password.</source>
- <translation type="unfinished"/>
+ <translation>Solicitar contraseña de la entrada.</translation>
</message>
<message>
<source>Generate a password for the entry.</source>
- <translation type="unfinished"/>
+ <translation>Generar una contraseña para la entrada.</translation>
</message>
<message>
<source>Length for the generated password.</source>
@@ -3354,20 +3360,20 @@ Usando el puerto por defecto 19455</translation>
</message>
<message>
<source>Path of the entry to add.</source>
- <translation type="unfinished"/>
+ <translation>Camino de la entrada para añadir.</translation>
</message>
<message>
<source>Copy an entry&apos;s password to the clipboard.</source>
- <translation type="unfinished"/>
+ <translation>Copiar la contraseña de una entrada en el portapapeles.</translation>
</message>
<message>
<source>Path of the entry to clip.</source>
<comment>clip = copy to clipboard</comment>
- <translation type="unfinished"/>
+ <translation>Camino de la entrada para copiar.</translation>
</message>
<message>
<source>Timeout in seconds before clearing the clipboard.</source>
- <translation type="unfinished"/>
+ <translation>Tiempo de espera en segundos antes de borrar el portapapeles.</translation>
</message>
<message>
<source>Edit an entry.</source>
@@ -3379,23 +3385,23 @@ Usando el puerto por defecto 19455</translation>
</message>
<message>
<source>title</source>
- <translation type="unfinished"/>
+ <translation>título</translation>
</message>
<message>
<source>Path of the entry to edit.</source>
- <translation type="unfinished"/>
+ <translation>Camino de la entrada para editar.</translation>
</message>
<message>
<source>Estimate the entropy of a password.</source>
- <translation type="unfinished"/>
+ <translation>Estimar la entropía de una contraseña.</translation>
</message>
<message>
<source>Password for which to estimate the entropy.</source>
- <translation type="unfinished"/>
+ <translation>Contraseña para el que desea calcular la entropía.</translation>
</message>
<message>
<source>Perform advanced analysis on the password.</source>
- <translation type="unfinished"/>
+ <translation>Realizar análisis avanzado en la contraseña.</translation>
</message>
<message>
<source>Extract and print the content of a database.</source>
@@ -3407,25 +3413,30 @@ Usando el puerto por defecto 19455</translation>
</message>
<message>
<source>Insert password to unlock %1: </source>
- <translation type="unfinished"/>
+ <translation>Introduzca la contraseña para desbloquear %1: </translation>
</message>
<message>
<source>Failed to load key file %1 : %2</source>
- <translation type="unfinished"/>
+ <translation>Error al cargar el archivo llave %1 : %2</translation>
</message>
<message>
<source>WARNING: You are using a legacy key file format which may become
unsupported in the future.
Please consider generating a new key file.</source>
- <translation type="unfinished"/>
+ <translation>ADVERTENCIA: Usted está utilizando un formato de archivo llave heredado que puede ser no compatible en el futuro.
+
+Por favor considere generar un nuevo archivo de llave.</translation>
</message>
<message>
<source>
Available commands:
</source>
- <translation type="unfinished"/>
+ <translation>
+
+Comandos disponibles:
+</translation>
</message>
<message>
<source>Name of the command to execute.</source>
@@ -3441,11 +3452,11 @@ Available commands:
</message>
<message>
<source>Find entries quickly.</source>
- <translation type="unfinished"/>
+ <translation>Encontrar las entradas rápidamente.</translation>
</message>
<message>
<source>Search term.</source>
- <translation type="unfinished"/>
+ <translation>Término de búsqueda.</translation>
</message>
<message>
<source>Merge two databases.</source>
@@ -3461,23 +3472,23 @@ Available commands:
</message>
<message>
<source>Use the same credentials for both database files.</source>
- <translation type="unfinished"/>
+ <translation>Utilizar las mismas credenciales para ambos archivos de base de datos.</translation>
</message>
<message>
<source>Key file of the database to merge from.</source>
- <translation type="unfinished"/>
+ <translation>Archivo llave de la base de datos desde la cual desea combinar.</translation>
</message>
<message>
<source>Show an entry&apos;s information.</source>
- <translation type="unfinished"/>
+ <translation>Muestra información de una entrada.</translation>
</message>
<message>
<source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
- <translation type="unfinished"/>
+ <translation>Nombres de los atributos para mostrar. Esta opción se puede especificar más de una vez, con cada atributo apareciendo uno por línea en el orden dado. Si no se especifica ningún atributo, se da un resumen de los atributos predeterminados.</translation>
</message>
<message>
<source>attribute</source>
- <translation type="unfinished"/>
+ <translation>atributo</translation>
</message>
<message>
<source>Name of the entry to show.</source>
@@ -3527,7 +3538,7 @@ Available commands:
</message>
<message>
<source>Last Modified</source>
- <translation type="unfinished"/>
+ <translation>Última modificación</translation>
</message>
<message>
<source>Created</source>
@@ -3535,7 +3546,7 @@ Available commands:
</message>
<message>
<source>Legacy Browser Integration</source>
- <translation type="unfinished"/>
+ <translation>Integración de navegador obsoleta</translation>
</message>
<message>
<source>Browser Integration</source>
@@ -3559,48 +3570,49 @@ Available commands:
</message>
<message>
<source>Generate a new random diceware passphrase.</source>
- <translation type="unfinished"/>
+ <translation>Generar una nueva frase de contraseña aleatoria diceware.</translation>
</message>
<message>
<source>Word count for the diceware passphrase.</source>
- <translation type="unfinished"/>
+ <translation>Número de palabras para la frase de contraseña de diceware.</translation>
</message>
<message>
<source>count</source>
- <translation type="unfinished"/>
+ <translation>Número</translation>
</message>
<message>
<source>Wordlist for the diceware generator.
[Default: EFF English]</source>
- <translation type="unfinished"/>
+ <translation>Lista de palabras para el generador de diceware.
+[Por defecto: Inglés EFF]</translation>
</message>
<message>
<source>Generate a new random password.</source>
- <translation type="unfinished"/>
+ <translation>Generar una nueva contraseña aleatoria.</translation>
</message>
<message>
<source>Length of the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Longitud de la contraseña generada.</translation>
</message>
<message>
<source>Use lowercase characters in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Utilizar caracteres en minúsculas en la contraseña generada.</translation>
</message>
<message>
<source>Use uppercase characters in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Utilizar caracteres en mayúsculas en la contraseña generada.</translation>
</message>
<message>
<source>Use numbers in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Utilizar números en la contraseña generada.</translation>
</message>
<message>
<source>Use special characters in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Utilizar caracteres especiales en la contraseña generada.</translation>
</message>
<message>
<source>Use extended ASCII in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Utilizar ASCII extendido en la contraseña generada.</translation>
</message>
</context>
<context>
@@ -3708,7 +3720,7 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message numerus="yes">
<source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Quitado con éxito cifrado %n-llaves de KeePassX y Http.</numerusform><numerusform>Quitadas con éxito %n- llaves de encriptación de las opciones de KeePassX/Http.</numerusform></translation>
</message>
<message>
<source>KeePassXC: No keys found</source>
@@ -3740,7 +3752,7 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message numerus="yes">
<source>Successfully removed permissions from %n entries.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Con éxito quitar permisos de entradas %n.</numerusform><numerusform>Removidos permisos de %n entradas exitosamente.</numerusform></translation>
</message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
@@ -3822,7 +3834,7 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message>
<source>Hide the Details view</source>
- <translation type="unfinished"/>
+ <translation>Ocultar la vista de detalles</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -3838,7 +3850,7 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message>
<source>Dark system tray icon</source>
- <translation type="unfinished"/>
+ <translation>Icono de bandeja del sistema oscuro</translation>
</message>
<message>
<source>Language</source>
@@ -3850,11 +3862,11 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message>
<source>Use entry title to match windows for global Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Use título de entrada para acertar ventanas en Auto-Tipeado global.</translation>
</message>
<message>
<source>Use entry URL to match windows for global Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Use URL para acertar ventanas en Auto-Tipedo global</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
@@ -3875,23 +3887,23 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message>
<source>Startup</source>
- <translation type="unfinished"/>
+ <translation>Inicio</translation>
</message>
<message>
<source>File Management</source>
- <translation type="unfinished"/>
+ <translation>Administración de archivos</translation>
</message>
<message>
<source>Safely save database files (may be incompatible with Dropbox, etc)</source>
- <translation type="unfinished"/>
+ <translation>Guardar los archivos de base de datos con seguridad (puede ser incompatible con Dropbox, etcétera)</translation>
</message>
<message>
<source>Backup database file before saving</source>
- <translation type="unfinished"/>
+ <translation>Hacer una copia de seguridad de la base de datos antes de guardar</translation>
</message>
<message>
<source>Entry Management</source>
- <translation type="unfinished"/>
+ <translation>Gestión de entrada</translation>
</message>
<message>
<source>General</source>
@@ -3939,11 +3951,11 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message>
<source>Hide passwords in the preview panel</source>
- <translation type="unfinished"/>
+ <translation>Ocultar contraseñas en el panel de vista previa</translation>
</message>
<message>
<source>Hide entry notes by default</source>
- <translation type="unfinished"/>
+ <translation>Ocultar notas de entrada por defecto</translation>
</message>
<message>
<source>Privacy</source>
@@ -3955,7 +3967,7 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message>
<source>Re-lock previously locked database after performing Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Volver a bloquear la base de datos previamente bloqueada después de hacer Auto-Escritura </translation>
</message>
</context>
<context>
@@ -3970,11 +3982,11 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message>
<source>Default RFC 6238 token settings</source>
- <translation type="unfinished"/>
+ <translation>Ajustes para el token por defecto RFC 6238</translation>
</message>
<message>
<source>Steam token settings</source>
- <translation type="unfinished"/>
+ <translation>Opciones de token de Steam</translation>
</message>
<message>
<source>Use custom settings</source>
@@ -4064,14 +4076,14 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message>
<source>Welcome to KeePassXC %1</source>
- <translation type="unfinished"/>
+ <translation>Bienvenido a KeePassXC %1</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<source>Remove an entry from the database.</source>
- <translation type="unfinished"/>
+ <translation>Quitar una entrada de la base de datos.</translation>
</message>
<message>
<source>Path of the database.</source>
@@ -4079,7 +4091,7 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message>
<source>Path of the entry to remove.</source>
- <translation type="unfinished"/>
+ <translation>Camino de la entrada a quitar.</translation>
</message>
<message>
<source>KeePassXC - cross-platform password manager</source>
@@ -4103,7 +4115,7 @@ Por favor desbloquee la base de datos seleccionada o elija otra que esté desblo
</message>
<message>
<source>Parent window handle</source>
- <translation type="unfinished"/>
+ <translation>Identificador de la ventana padre</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_fi.ts b/share/translations/keepassx_fi.ts
index f01fb57e7..113927dcd 100644
--- a/share/translations/keepassx_fi.ts
+++ b/share/translations/keepassx_fi.ts
@@ -374,7 +374,7 @@ Ole hyvä ja valitse sallitaanko pääsy.</translation>
</message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
- <translation type="unfinished"/>
+ <translation>Valitettavasti KeePassXC-Browser ei ole vielä tuettu Snap-julkaisuissa.</translation>
</message>
</context>
<context>
@@ -1976,7 +1976,7 @@ Tämä voi vikaannuttaa tietoa käyttävän liitännäisen.</translation>
</message>
<message>
<source>Attachments (icon)</source>
- <translation type="unfinished"/>
+ <translation>Liitteet (kuvake)</translation>
</message>
</context>
<context>
diff --git a/share/translations/keepassx_id.ts b/share/translations/keepassx_id.ts
index 882570e6c..a5135b2c4 100644
--- a/share/translations/keepassx_id.ts
+++ b/share/translations/keepassx_id.ts
@@ -73,7 +73,7 @@ Kernel: %3 %4</translation>
</message>
<message>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
- <translation type="unfinished"/>
+ <translation>Terima kasih dari tim KeePassXC kepada debfx yang telah membuat KeepassX original.</translation>
</message>
<message>
<source>Build Type: %1
@@ -218,7 +218,7 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
<name>BrowserOptionDialog</name>
<message>
<source>Dialog</source>
- <translation type="unfinished"/>
+ <translation>Dialog</translation>
</message>
<message>
<source>This is required for accessing your databases with KeePassXC-Browser</source>
@@ -374,7 +374,7 @@ Silakan pilih apakah Anda ingin mengizinkannya.</translation>
</message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
- <translation type="unfinished"/>
+ <translation>Maaf, KeePassXC-Browser saat ini tidak mendukung rilisan Snap.</translation>
</message>
</context>
<context>
@@ -447,7 +447,7 @@ Silakan buka kunci atau pilih yang lainnya yang tidak terkunci.</translation>
</message>
<message numerus="yes">
<source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>Berhasil membuang %n kunci enkripsi dari pengaturan KeePassXC.</numerusform></translation>
</message>
<message>
<source>Removing stored permissions…</source>
@@ -463,7 +463,7 @@ Silakan buka kunci atau pilih yang lainnya yang tidak terkunci.</translation>
</message>
<message numerus="yes">
<source>Successfully removed permissions from %n entry(s).</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>Berhasil membuang perizinan dari %n entri.</numerusform></translation>
</message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
@@ -856,7 +856,7 @@ If you keep this number, your database may be too easy to crack!</source>
<message numerus="yes">
<source> MiB</source>
<comment>Abbreviation for Mebibytes (KDF settings)</comment>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform> MiB</numerusform></translation>
</message>
<message numerus="yes">
<source> thread(s)</source>
@@ -1378,15 +1378,15 @@ Apakah Anda ingin menggabungkan ubahan Anda?</translation>
</message>
<message>
<source>Apply generated password?</source>
- <translation type="unfinished"/>
+ <translation>Gunakan sandi yang dibuat?</translation>
</message>
<message>
<source>Do you want to apply the generated password to this entry?</source>
- <translation type="unfinished"/>
+ <translation>Apakah Anda ingin menggunakan sandi yang dibuat untuk entri ini?</translation>
</message>
<message>
<source>Entry updated successfully.</source>
- <translation type="unfinished"/>
+ <translation>Entri berhasil diperbarui.</translation>
</message>
</context>
<context>
@@ -1421,11 +1421,11 @@ Apakah Anda ingin menggabungkan ubahan Anda?</translation>
</message>
<message>
<source>Foreground Color:</source>
- <translation type="unfinished"/>
+ <translation>Warna Latar Depan:</translation>
</message>
<message>
<source>Background Color:</source>
- <translation type="unfinished"/>
+ <translation>Warna Latar Belakang:</translation>
</message>
</context>
<context>
@@ -1742,7 +1742,7 @@ Apakah Anda ingin menggabungkan ubahan Anda?</translation>
</message>
<message>
<source>Plugin Data</source>
- <translation type="unfinished"/>
+ <translation>Data Plugin</translation>
</message>
<message>
<source>Remove</source>
@@ -1750,12 +1750,13 @@ Apakah Anda ingin menggabungkan ubahan Anda?</translation>
</message>
<message>
<source>Delete plugin data?</source>
- <translation type="unfinished"/>
+ <translation>Hapus data plugin?</translation>
</message>
<message>
<source>Do you really want to delete the selected plugin data?
This may cause the affected plugins to malfunction.</source>
- <translation type="unfinished"/>
+ <translation>Apakah Anda benar-benar ingin menghapus data plugin?
+Ini mungkin akan menyebabkan plugin terkait tidak berfungsi.</translation>
</message>
<message>
<source>Key</source>
@@ -1813,7 +1814,7 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message numerus="yes">
<source>Are you sure you want to remove %n attachment(s)?</source>
- <translation type="unfinished"><numerusform></numerusform></translation>
+ <translation><numerusform>Apakah Anda yakin ingin membuang %n lampiran?</numerusform></translation>
</message>
<message>
<source>Confirm Remove</source>
@@ -1972,7 +1973,7 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Attachments (icon)</source>
- <translation type="unfinished"/>
+ <translation>Lampiran (ikon)</translation>
</message>
</context>
<context>
@@ -2997,7 +2998,7 @@ Versi ini tidak dimaksudkan untuk penggunaan sehari-hari.</translation>
<name>OptionDialog</name>
<message>
<source>Dialog</source>
- <translation type="unfinished"/>
+ <translation>Dialog</translation>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
@@ -3566,11 +3567,11 @@ Perintah yang tersedia:
</message>
<message>
<source>Generate a new random diceware passphrase.</source>
- <translation type="unfinished"/>
+ <translation>Buat frasa sandi diceware acak yang baru.</translation>
</message>
<message>
<source>Word count for the diceware passphrase.</source>
- <translation type="unfinished"/>
+ <translation>Jumlah kata untuk frasa sandi diceware.</translation>
</message>
<message>
<source>count</source>
@@ -3579,7 +3580,8 @@ Perintah yang tersedia:
<message>
<source>Wordlist for the diceware generator.
[Default: EFF English]</source>
- <translation type="unfinished"/>
+ <translation>Daftar kata untuk generator diceware.
+[Bawaan: Inggris EFF]</translation>
</message>
<message>
<source>Generate a new random password.</source>
@@ -3607,7 +3609,7 @@ Perintah yang tersedia:
</message>
<message>
<source>Use extended ASCII in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Gunakan ASCII yang diperluas di dalam sandi yang dibuat.</translation>
</message>
</context>
<context>
@@ -3962,7 +3964,7 @@ Silakan buka kunci atau pilih yang lainnya yang tidak terkunci.</translation>
</message>
<message>
<source>Re-lock previously locked database after performing Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Kunci ulang basis data yang sebelumnya terkunci setelah menjalankan Ketik-Otomatis</translation>
</message>
</context>
<context>
diff --git a/share/translations/keepassx_nb.ts b/share/translations/keepassx_nb.ts
index ed8c0c264..854ad820b 100644
--- a/share/translations/keepassx_nb.ts
+++ b/share/translations/keepassx_nb.ts
@@ -78,7 +78,8 @@ Kjerne: %3 %4</translation>
<message>
<source>Build Type: %1
</source>
- <translation type="unfinished"/>
+ <translation>Bygge-type: %1
+</translation>
</message>
</context>
<context>
@@ -137,11 +138,11 @@ Velg om du vil gi tilgang eller ikke.</translation>
</message>
<message>
<source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
- <translation type="unfinished"/>
+ <translation>Denne Autoskriv-kommandoen inneholder svært sene tastetrykk. Vil du virkelig fortsette?</translation>
</message>
<message>
<source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
- <translation type="unfinished"/>
+ <translation>Denne Autoskriv-kommandoen inneholder argument som repeteres svært hyppig. Vil du virkelig fortsette?</translation>
</message>
</context>
<context>
@@ -186,14 +187,14 @@ Velg om du vil gi tilgang eller ikke.</translation>
</message>
<message>
<source>Select entry to Auto-Type:</source>
- <translation type="unfinished"/>
+ <translation>Velg oppføring som skal Autoskrives:</translation>
</message>
</context>
<context>
<name>BrowserAccessControlDialog</name>
<message>
<source>KeePassXC-Browser Confirm Access</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC-Browser bekreft tilgang</translation>
</message>
<message>
<source>Remember this decision</source>
@@ -222,7 +223,7 @@ Velg om du vil gi tilgang eller ikke.</translation>
</message>
<message>
<source>This is required for accessing your databases with KeePassXC-Browser</source>
- <translation type="unfinished"/>
+ <translation>Dette er nødvendig for å få tilgang til dine databaser med KeePassXC-Browser</translation>
</message>
<message>
<source>Enable KeepassXC browser integration</source>
@@ -263,19 +264,19 @@ Velg om du vil gi tilgang eller ikke.</translation>
</message>
<message>
<source>Only entries with the same scheme (http://, https://, ...) are returned.</source>
- <translation type="unfinished"/>
+ <translation>Bare oppføringer med samme protokoll (http://, https://, ...) er returnert.</translation>
</message>
<message>
<source>&amp;Match URL scheme (e.g., https://...)</source>
- <translation type="unfinished"/>
+ <translation>&amp;Match URL-skjema (f.eks. https://...)</translation>
</message>
<message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
- <translation type="unfinished"/>
+ <translation>Returnerer bare beste matcher for en spesifikk URL i stedet for alle oppføringer i hele domenet.</translation>
</message>
<message>
<source>&amp;Return only best-matching credentials</source>
- <translation type="unfinished"/>
+ <translation>&amp;Returner bare beste matcher av identifikasjonen</translation>
</message>
<message>
<source>Sort &amp;matching credentials by title</source>
@@ -320,23 +321,23 @@ Velg om du vil gi tilgang eller ikke.</translation>
</message>
<message>
<source>Automatically creating or updating string fields is not supported.</source>
- <translation type="unfinished"/>
+ <translation>Automatisk registrering eller endring av tekstfelt er ikke støttet.</translation>
</message>
<message>
<source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation type="unfinished"/>
+ <translation>&amp;Returner avanserte tekstfelt som begynner med &quot;KPH: &quot;</translation>
</message>
<message>
<source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
- <translation type="unfinished"/>
+ <translation>Oppdaterer KeePassXC eller keepassxc-proxy binær-sti automatisk til innebygd meldings-skript ved oppstart.</translation>
</message>
<message>
<source>Update &amp;native messaging manifest files at startup</source>
- <translation type="unfinished"/>
+ <translation>Oppdater &amp;lokalt meldings-manifest ved oppstart</translation>
</message>
<message>
<source>Support a proxy application between KeePassXC and browser extension.</source>
- <translation type="unfinished"/>
+ <translation>Angi en mellomtjener-applikasjon mellom KeePassXC og nettleserutvidelsen.</translation>
</message>
<message>
<source>Use a &amp;proxy application between KeePassXC and browser extension</source>
@@ -381,14 +382,16 @@ Velg om du vil gi tilgang eller ikke.</translation>
<name>BrowserService</name>
<message>
<source>KeePassXC: New key association request</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Tilknytningsforespørsel for ny nøkkel.</translation>
</message>
<message>
<source>You have received an association request for the above key.
If you would like to allow it access to your KeePassXC database,
give it a unique name to identify and accept it.</source>
- <translation type="unfinished"/>
+ <translation>Du har mottatt en tilknytningsforespørsel for den ovennevnte nøkkelen.
+
+Gi den et unikt navn dersom du vil gi den tilgang til KeePassXC-databasen.</translation>
</message>
<message>
<source>Save and allow access</source>
@@ -396,20 +399,21 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>KeePassXC: Overwrite existing key?</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Overskrive eksisterende nøkkel?</translation>
</message>
<message>
<source>A shared encryption key with the name &quot;%1&quot; already exists.
Do you want to overwrite it?</source>
- <translation type="unfinished"/>
+ <translation>En delt krypteringsnøkkel med navn &quot;%1&quot; eksisterer fra før.
+Vil du overskrive den?</translation>
</message>
<message>
<source>KeePassXC: Update Entry</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Oppdater oppføring.</translation>
</message>
<message>
<source>Do you want to update the information in %1 - %2?</source>
- <translation type="unfinished"/>
+ <translation>Vil du oppdatere informasjonen i %1 - %2?</translation>
</message>
<message>
<source>KeePassXC: Database locked!</source>
@@ -418,7 +422,8 @@ Do you want to overwrite it?</source>
<message>
<source>The active database is locked!
Please unlock the selected database or choose another one which is unlocked.</source>
- <translation type="unfinished"/>
+ <translation>Den aktive databasen er låst!
+Lås opp valgt database eller velg en annen som er åpen.</translation>
</message>
<message>
<source>KeePassXC: Settings not available!</source>
@@ -426,7 +431,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>The active database does not contain a settings entry.</source>
- <translation type="unfinished"/>
+ <translation>Den aktive databasen inneholder ikke noen konfigurasjons-innstilling.</translation>
</message>
<message>
<source>KeePassXC: No keys found</source>
@@ -434,7 +439,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>No shared encryption keys found in KeePassXC Settings.</source>
- <translation type="unfinished"/>
+ <translation>Ingen delte krypteringsnøkler funnet i oppsettet i KeePassXC.</translation>
</message>
<message>
<source>KeePassXC: Removed keys from database</source>
@@ -442,11 +447,11 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message numerus="yes">
<source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Fjernet %n krypteringsnøkkel(er) fra oppsettet i KeePassXC.</numerusform><numerusform>Fjernet %n krypteringsnøkkel(er) fra oppsettet i KeePassXC.</numerusform></translation>
</message>
<message>
<source>Removing stored permissions…</source>
- <translation type="unfinished"/>
+ <translation>Fjerner lagrede tillatelser...</translation>
</message>
<message>
<source>Abort</source>
@@ -454,19 +459,19 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>KeePassXC: Removed permissions</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Fjernet tillatelser</translation>
</message>
<message numerus="yes">
<source>Successfully removed permissions from %n entry(s).</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Fjernet tillatelser fra %n oppføring(er).</numerusform><numerusform>Fjernet tillatelser fra %n oppføring(er).</numerusform></translation>
</message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Ingen oppføring med tillatelser funnet!</translation>
</message>
<message>
<source>The active database does not contain an entry with permissions.</source>
- <translation type="unfinished"/>
+ <translation>Den aktive databasen inneholder ikke et oppsett med tillatelser.</translation>
</message>
</context>
<context>
@@ -485,7 +490,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>&amp;Key file</source>
- <translation type="unfinished"/>
+ <translation>&amp;Nøkkelfil</translation>
</message>
<message>
<source>Browse</source>
@@ -497,7 +502,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Cha&amp;llenge Response</source>
- <translation type="unfinished"/>
+ <translation>&amp;Utfordrer-respons</translation>
</message>
<message>
<source>Refresh</source>
@@ -529,7 +534,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Do you really want to use an empty string as password?</source>
- <translation type="unfinished"/>
+ <translation>Vil du virkelig bruke en tom streng som passord?</translation>
</message>
<message>
<source>Different passwords supplied.</source>
@@ -538,7 +543,8 @@ Please unlock the selected database or choose another one which is unlocked.</so
<message>
<source>Failed to set %1 as the Key file:
%2</source>
- <translation type="unfinished"/>
+ <translation>Klarte ikke å bruke %1 som nøkkelfil:
+%2</translation>
</message>
<message>
<source>Legacy key file format</source>
@@ -566,11 +572,11 @@ Vurder å opprette en ny nøkkelfil.</translation>
</message>
<message>
<source>Append &apos; - Clone&apos; to title</source>
- <translation type="unfinished"/>
+ <translation>Tilføy &apos; - Clone&apos; til tittel</translation>
</message>
<message>
<source>Replace username and password with references</source>
- <translation type="unfinished"/>
+ <translation>Bytt ut brukernamn og passord med referansene</translation>
</message>
<message>
<source>Copy history</source>
@@ -593,7 +599,7 @@ Vurder å opprette en ny nøkkelfil.</translation>
</message>
<message>
<source>Encoding</source>
- <translation type="unfinished"/>
+ <translation>Koding</translation>
</message>
<message>
<source>Codec</source>
@@ -613,15 +619,15 @@ Vurder å opprette en ny nøkkelfil.</translation>
</message>
<message>
<source>First record has field names</source>
- <translation type="unfinished"/>
+ <translation>Første post har feltnavn</translation>
</message>
<message>
<source>Number of headers line to discard</source>
- <translation type="unfinished"/>
+ <translation>Antall header-linjer å se bort fra</translation>
</message>
<message>
<source>Consider &apos;\&apos; an escape character</source>
- <translation type="unfinished"/>
+ <translation>Betrakt &apos;\&apos; som en escape-sekvens</translation>
</message>
<message>
<source>Preview</source>
@@ -629,11 +635,11 @@ Vurder å opprette en ny nøkkelfil.</translation>
</message>
<message>
<source>Column layout</source>
- <translation type="unfinished"/>
+ <translation>Kolonneoppsett</translation>
</message>
<message>
<source>Not present in CSV file</source>
- <translation type="unfinished"/>
+ <translation>Ikke tilstede i CSV-fil</translation>
</message>
<message>
<source>Empty fieldname </source>
@@ -684,15 +690,15 @@ Vurder å opprette en ny nøkkelfil.</translation>
<name>CsvParserModel</name>
<message numerus="yes">
<source>%n byte(s), </source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n byte(s), </numerusform><numerusform>%n byte(s), </numerusform></translation>
</message>
<message numerus="yes">
<source>%n row(s), </source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n rad(er), </numerusform><numerusform>%n rad(er), </numerusform></translation>
</message>
<message numerus="yes">
<source>%n column(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n kolonne(r)</numerusform><numerusform>%n kolonne(r)</numerusform></translation>
</message>
</context>
<context>
@@ -719,7 +725,7 @@ Vurder å opprette en ny nøkkelfil.</translation>
</message>
<message>
<source>Challenge Response:</source>
- <translation type="unfinished"/>
+ <translation>Utfordrer-respons:</translation>
</message>
<message>
<source>Unable to open the database.</source>
@@ -809,17 +815,19 @@ Du kan nå lagre den.</translation>
<message>
<source>Number of rounds too high</source>
<comment>Key transformation rounds</comment>
- <translation type="unfinished"/>
+ <translation>Antall runder er for høyt</translation>
</message>
<message>
<source>You are using a very high number of key transform rounds with Argon2.
If you keep this number, your database may take hours or days (or even longer) to open!</source>
- <translation type="unfinished"/>
+ <translation>Du bruker et svært høyt antall nøkkeltransformasjons-runder med Argon2.
+
+Dersom du beholder dette tallet så vil det ta timer eller dager (og kanskje lengre) å åpne databasen!</translation>
</message>
<message>
<source>Understood, keep number</source>
- <translation type="unfinished"/>
+ <translation>Forstått; behold antallet</translation>
</message>
<message>
<source>Cancel</source>
@@ -828,31 +836,33 @@ If you keep this number, your database may take hours or days (or even longer) t
<message>
<source>Number of rounds too low</source>
<comment>Key transformation rounds</comment>
- <translation type="unfinished"/>
+ <translation>Antall runder er for lavt</translation>
</message>
<message>
<source>You are using a very low number of key transform rounds with AES-KDF.
If you keep this number, your database may be too easy to crack!</source>
- <translation type="unfinished"/>
+ <translation>Du bruker et svært lavt antall nøkkeltransformasjons-runder med AES-KDF.
+
+Dersom du beholder dette antallet så kan databasen være for lett å knekke!</translation>
</message>
<message>
<source>KDF unchanged</source>
- <translation type="unfinished"/>
+ <translation>KDF uendret</translation>
</message>
<message>
<source>Failed to transform key with new KDF parameters; KDF unchanged.</source>
- <translation type="unfinished"/>
+ <translation>Kunne ikke omskape nøkkel med nye KDF-parametere; KDF uendret.</translation>
</message>
<message numerus="yes">
<source> MiB</source>
<comment>Abbreviation for Mebibytes (KDF settings)</comment>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform> MiB</numerusform><numerusform> MiB</numerusform></translation>
</message>
<message numerus="yes">
<source> thread(s)</source>
<comment>Threads for parallel execution (KDF settings)</comment>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>tråd(er)</numerusform><numerusform>tråd(er)</numerusform></translation>
</message>
</context>
<context>
@@ -871,15 +881,15 @@ If you keep this number, your database may be too easy to crack!</source>
</message>
<message>
<source>Key Derivation Function:</source>
- <translation type="unfinished"/>
+ <translation>Nøkkelavledningsfunksjon:</translation>
</message>
<message>
<source>Transform rounds:</source>
- <translation type="unfinished"/>
+ <translation>Transformasjonsrunder:</translation>
</message>
<message>
<source>Benchmark 1-second delay</source>
- <translation type="unfinished"/>
+ <translation>Testmåling 1 sek. forsinkelse</translation>
</message>
<message>
<source>Memory Usage:</source>
@@ -887,14 +897,14 @@ If you keep this number, your database may be too easy to crack!</source>
</message>
<message>
<source>Parallelism:</source>
- <translation type="unfinished"/>
+ <translation>Parallellitet:</translation>
</message>
</context>
<context>
<name>DatabaseSettingsWidgetGeneral</name>
<message>
<source>Database Meta Data</source>
- <translation type="unfinished"/>
+ <translation>Database metadata</translation>
</message>
<message>
<source>Database name:</source>
@@ -910,31 +920,31 @@ If you keep this number, your database may be too easy to crack!</source>
</message>
<message>
<source>History Settings</source>
- <translation type="unfinished"/>
+ <translation>Historie-innstillinger</translation>
</message>
<message>
<source>Max. history items:</source>
- <translation type="unfinished"/>
+ <translation>Maks. historisk antall:</translation>
</message>
<message>
<source>Max. history size:</source>
- <translation type="unfinished"/>
+ <translation>Maks. historisk størrelse:</translation>
</message>
<message>
<source> MiB</source>
- <translation type="unfinished"/>
+ <translation> MiB</translation>
</message>
<message>
<source>Use recycle bin</source>
- <translation type="unfinished"/>
+ <translation>Bruk søppelbøtte</translation>
</message>
<message>
<source>Additional Database Settings</source>
- <translation type="unfinished"/>
+ <translation>Ekstra database-innstillinger</translation>
</message>
<message>
<source>Enable &amp;compression (recommended)</source>
- <translation type="unfinished"/>
+ <translation>Aktiver &amp;komprimering (anbefalt)</translation>
</message>
</context>
<context>
@@ -1009,11 +1019,12 @@ Vil du likevel avvise endringene?</translation>
<message>
<source>&quot;%1&quot; was modified.
Save changes?</source>
- <translation type="unfinished"/>
+ <translation>&quot;%1&quot; er endet.
+Lagre endringer?</translation>
</message>
<message>
<source>Writing the database failed.</source>
- <translation type="unfinished"/>
+ <translation>Skriving av databasen feilet.</translation>
</message>
<message>
<source>Passwords</source>
@@ -1046,22 +1057,26 @@ Save changes?</source>
<message>
<source>Can't lock the database as you are currently editing it.
Please press cancel to finish your changes or discard them.</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke låse database fordi du redigerer den.
+Klikk avbryt for å fullføre endringene eller forkaste dem.</translation>
</message>
<message>
<source>This database has been modified.
Do you want to save the database before locking it?
Otherwise your changes are lost.</source>
- <translation type="unfinished"/>
+ <translation>Denne databasen er blitt endret.
+Vil du lagre databasen før låsing?
+Ellers blir endringene dine tapt.</translation>
</message>
<message>
<source>Disable safe saves?</source>
- <translation type="unfinished"/>
+ <translation>Deaktivere sikker lagring?</translation>
</message>
<message>
<source>KeePassXC has failed to save the database multiple times. This is likely caused by file sync services holding a lock on the save file.
Disable safe saves and try again?</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC har mislykkes i å lagre databasen flere ganger. Dette er trolig forårsaket av at synkroniserings-tjenester har låst lagrings-filen.
+Deaktivere sikker lagring og prøve igjen?</translation>
</message>
</context>
<context>
@@ -1088,7 +1103,7 @@ Disable safe saves and try again?</source>
</message>
<message>
<source>Do you really want to delete %1 entries for good?</source>
- <translation type="unfinished"/>
+ <translation>Vil du virkelig slette %1 oppføringer for godt?</translation>
</message>
<message>
<source>Move entry to recycle bin?</source>
@@ -1096,7 +1111,7 @@ Disable safe saves and try again?</source>
</message>
<message>
<source>Do you really want to move entry &quot;%1&quot; to the recycle bin?</source>
- <translation type="unfinished"/>
+ <translation>Ønsker du virkelig å flytte oppføring &quot;%1&quot; til søppelkurven?</translation>
</message>
<message>
<source>Move entries to recycle bin?</source>
@@ -1104,7 +1119,7 @@ Disable safe saves and try again?</source>
</message>
<message numerus="yes">
<source>Do you really want to move %n entry(s) to the recycle bin?</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Ønsker du virkelig å flytte %n oppføring(er) til søppelkurven?</numerusform><numerusform>Ønsker du virkelig å flytte %n oppføring(er) til søppelkurven?</numerusform></translation>
</message>
<message>
<source>Execute command?</source>
@@ -1112,7 +1127,7 @@ Disable safe saves and try again?</source>
</message>
<message>
<source>Do you really want to execute the following command?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</source>
- <translation type="unfinished"/>
+ <translation>Ønsker du virkelig å utføre følgende kommando?&lt;br&gt;&lt;br&gt;%1&lt;br&gt;</translation>
</message>
<message>
<source>Remember my choice</source>
@@ -1124,7 +1139,7 @@ Disable safe saves and try again?</source>
</message>
<message>
<source>Do you really want to delete the group &quot;%1&quot; for good?</source>
- <translation type="unfinished"/>
+ <translation>Ønsker du virkelig å slette gruppen &quot;%1&quot; for godt?</translation>
</message>
<message>
<source>Unable to calculate master key</source>
@@ -1132,11 +1147,11 @@ Disable safe saves and try again?</source>
</message>
<message>
<source>No current database.</source>
- <translation type="unfinished"/>
+ <translation>Ingen nåværende database.</translation>
</message>
<message>
<source>No source database, nothing to do.</source>
- <translation type="unfinished"/>
+ <translation>Ingen kilde-database, ingenting å gjøre.</translation>
</message>
<message>
<source>Search Results (%1)</source>
@@ -1148,15 +1163,15 @@ Disable safe saves and try again?</source>
</message>
<message>
<source>File has changed</source>
- <translation type="unfinished"/>
+ <translation>Fil er endret</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
- <translation type="unfinished"/>
+ <translation>Databasen er endret. Ønsker du å laste inn endringene?</translation>
</message>
<message>
<source>Merge Request</source>
- <translation type="unfinished"/>
+ <translation>Forespørsel om sammenslåing</translation>
</message>
<message>
<source>The database file has changed and you have unsaved changes.
@@ -1166,22 +1181,22 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Could not open the new database file while attempting to autoreload this database.</source>
- <translation type="unfinished"/>
+ <translation>Kunne ikke åpne den nye databasen så lenge denne databasen blir auto-lastet.</translation>
</message>
<message>
<source>Empty recycle bin?</source>
- <translation type="unfinished"/>
+ <translation>Tom papirkurv?</translation>
</message>
<message>
<source>Are you sure you want to permanently delete everything from your recycle bin?</source>
- <translation type="unfinished"/>
+ <translation>Er du sikker på at du ønsker å slette alt i papirkurven permanent?</translation>
</message>
</context>
<context>
<name>DetailsWidget</name>
<message>
<source>Generate TOTP Token</source>
- <translation type="unfinished"/>
+ <translation>Opprett TOTP Token</translation>
</message>
<message>
<source>Close</source>
@@ -1201,7 +1216,7 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Expiration</source>
- <translation type="unfinished"/>
+ <translation>Utløp</translation>
</message>
<message>
<source>Username</source>
@@ -1209,7 +1224,7 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Autotype</source>
- <translation type="unfinished"/>
+ <translation>Autoskriv</translation>
</message>
<message>
<source>Searching</source>
@@ -1241,7 +1256,7 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Clear</source>
- <translation type="unfinished"/>
+ <translation>Tøm</translation>
</message>
<message>
<source>Never</source>
@@ -1249,15 +1264,15 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>[PROTECTED]</source>
- <translation type="unfinished"/>
+ <translation>[BESKYTTET]</translation>
</message>
<message>
<source>Disabled</source>
- <translation type="unfinished"/>
+ <translation>Deaktivert</translation>
</message>
<message>
<source>Enabled</source>
- <translation type="unfinished"/>
+ <translation>Aktivert</translation>
</message>
</context>
<context>
@@ -1288,11 +1303,11 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>SSH Agent</source>
- <translation type="unfinished"/>
+ <translation>SSH-agent</translation>
</message>
<message>
<source>n/a</source>
- <translation type="unfinished"/>
+ <translation>i/a</translation>
</message>
<message>
<source>(encrypted)</source>
@@ -1304,19 +1319,19 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>File too large to be a private key</source>
- <translation type="unfinished"/>
+ <translation>Fil for stor til å være privat nøkkel</translation>
</message>
<message>
<source>Failed to open private key</source>
- <translation type="unfinished"/>
+ <translation>Kunne ikke åpne den private nøkkelen</translation>
</message>
<message>
<source>Entry history</source>
- <translation type="unfinished"/>
+ <translation>Oppførings-historikk</translation>
</message>
<message>
<source>Add entry</source>
- <translation type="unfinished"/>
+ <translation>Legg til oppføring</translation>
</message>
<message>
<source>Edit entry</source>
@@ -1332,19 +1347,19 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Confirm Remove</source>
- <translation type="unfinished"/>
+ <translation>Bekreft fjerning</translation>
</message>
<message>
<source>Are you sure you want to remove this attribute?</source>
- <translation type="unfinished"/>
+ <translation>Er du sikker på at du ønsker å fjerne denne attributten?</translation>
</message>
<message>
<source>[PROTECTED]</source>
- <translation type="unfinished"/>
+ <translation>[BESKYTTET]</translation>
</message>
<message>
<source>Press reveal to view or edit</source>
- <translation type="unfinished"/>
+ <translation>Klikk for å vise eller endre</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -1352,11 +1367,11 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message numerus="yes">
<source>%n week(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n uke(r)</numerusform><numerusform>%n uke(r)</numerusform></translation>
</message>
<message numerus="yes">
<source>%n month(s)</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>%n måned(er)</numerusform><numerusform>%n måned(er)</numerusform></translation>
</message>
<message>
<source>1 year</source>
@@ -1383,23 +1398,23 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Add</source>
- <translation type="unfinished"/>
+ <translation>Legg til</translation>
</message>
<message>
<source>Remove</source>
- <translation type="unfinished"/>
+ <translation>Fjern</translation>
</message>
<message>
<source>Edit Name</source>
- <translation type="unfinished"/>
+ <translation>Rediger navn</translation>
</message>
<message>
<source>Protect</source>
- <translation type="unfinished"/>
+ <translation>Beskytt</translation>
</message>
<message>
<source>Reveal</source>
- <translation type="unfinished"/>
+ <translation>Vis</translation>
</message>
<message>
<source>Attachments</source>
@@ -1422,11 +1437,11 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Inherit default Auto-Type sequence from the &amp;group</source>
- <translation type="unfinished"/>
+ <translation>Arv standard Autoskriv-sekvens fra &amp;gruppen</translation>
</message>
<message>
<source>&amp;Use custom Auto-Type sequence:</source>
- <translation type="unfinished"/>
+ <translation>Br&amp;uk tilpasset Autoskriv-sekvens:</translation>
</message>
<message>
<source>Window Associations</source>
@@ -1434,11 +1449,11 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>+</source>
- <translation type="unfinished"/>
+ <translation>+</translation>
</message>
<message>
<source>-</source>
- <translation type="unfinished"/>
+ <translation>-</translation>
</message>
<message>
<source>Window title:</source>
@@ -1453,19 +1468,19 @@ Vil du slå sammen fila med endringene dine?</translation>
<name>EditEntryWidgetHistory</name>
<message>
<source>Show</source>
- <translation type="unfinished"/>
+ <translation>Vis</translation>
</message>
<message>
<source>Restore</source>
- <translation type="unfinished"/>
+ <translation>Gjenopprett</translation>
</message>
<message>
<source>Delete</source>
- <translation type="unfinished"/>
+ <translation>Slett</translation>
</message>
<message>
<source>Delete all</source>
- <translation type="unfinished"/>
+ <translation>Slett alt</translation>
</message>
</context>
<context>
@@ -1492,11 +1507,11 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Presets</source>
- <translation type="unfinished"/>
+ <translation>Hurtigvalg</translation>
</message>
<message>
<source>Toggle the checkbox to reveal the notes section.</source>
- <translation type="unfinished"/>
+ <translation>Veksle avkrysningsboksen for å vise notatdelen.</translation>
</message>
<message>
<source>Username:</source>
@@ -1511,11 +1526,11 @@ Vil du slå sammen fila med endringene dine?</translation>
<name>EditEntryWidgetSSHAgent</name>
<message>
<source>Form</source>
- <translation type="unfinished"/>
+ <translation>Skjema</translation>
</message>
<message>
<source>Remove key from agent after</source>
- <translation type="unfinished"/>
+ <translation>Fjern nøkkel fra agent etter</translation>
</message>
<message>
<source> seconds</source>
@@ -1523,19 +1538,19 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Fingerprint</source>
- <translation type="unfinished"/>
+ <translation>Fingeravtrykk</translation>
</message>
<message>
<source>Remove key from agent when database is closed/locked</source>
- <translation type="unfinished"/>
+ <translation>Fjern nøkkel fra agent når database er lukket/låst</translation>
</message>
<message>
<source>Public key</source>
- <translation type="unfinished"/>
+ <translation>Offentlig nøkkel</translation>
</message>
<message>
<source>Add key to agent when database is opened/unlocked</source>
- <translation type="unfinished"/>
+ <translation>Legg nøkkel til agent når database er åpnet/ulåst</translation>
</message>
<message>
<source>Comment</source>
@@ -1547,7 +1562,7 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>n/a</source>
- <translation type="unfinished"/>
+ <translation>i/a</translation>
</message>
<message>
<source>Copy to clipboard</source>
@@ -1572,15 +1587,15 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Add to agent</source>
- <translation type="unfinished"/>
+ <translation>Legg til til agent</translation>
</message>
<message>
<source>Remove from agent</source>
- <translation type="unfinished"/>
+ <translation>Fjern fra agent</translation>
</message>
<message>
<source>Require user confirmation when this key is used</source>
- <translation type="unfinished"/>
+ <translation>Krev brukerbekreftelse når denne nøkkelen blir brukt</translation>
</message>
</context>
<context>
@@ -1603,19 +1618,19 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Edit group</source>
- <translation type="unfinished"/>
+ <translation>Rediger gruppe</translation>
</message>
<message>
<source>Enable</source>
- <translation type="unfinished"/>
+ <translation>Aktiver</translation>
</message>
<message>
<source>Disable</source>
- <translation type="unfinished"/>
+ <translation>Deaktiver</translation>
</message>
<message>
<source>Inherit from parent group (%1)</source>
- <translation type="unfinished"/>
+ <translation>Arv fra foreldre-gruppe (%1)</translation>
</message>
</context>
<context>
@@ -1642,11 +1657,11 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>&amp;Use default Auto-Type sequence of parent group</source>
- <translation type="unfinished"/>
+ <translation>Br&amp;uk standard Autoskriv-sekvens fra foreldre-gruppa</translation>
</message>
<message>
<source>Set default Auto-Type se&amp;quence</source>
- <translation type="unfinished"/>
+ <translation>Angi standard Autoskriv-&amp;sekvens</translation>
</message>
</context>
<context>
@@ -1673,15 +1688,15 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Unable to fetch favicon.</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke hente favorittikon.</translation>
</message>
<message>
<source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
- <translation type="unfinished"/>
+ <translation>Tips: Du kan aktivere Google som reserve under Verktøy &gt; Oppsett &gt; Sikkerhet</translation>
</message>
<message>
<source>Images</source>
- <translation type="unfinished"/>
+ <translation>Bilder</translation>
</message>
<message>
<source>All files</source>
@@ -1689,23 +1704,23 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Select Image</source>
- <translation type="unfinished"/>
+ <translation>Velg bilde</translation>
</message>
<message>
<source>Can&apos;t read icon</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke lese ikon</translation>
</message>
<message>
<source>Custom icon already exists</source>
- <translation type="unfinished"/>
+ <translation>Tilpasset ikon finnes allerede</translation>
</message>
<message>
<source>Confirm Delete</source>
- <translation type="unfinished"/>
+ <translation>Bekreft sletting</translation>
</message>
<message>
<source>This icon is used by %1 entries, and will be replaced by the default icon. Are you sure you want to delete it?</source>
- <translation type="unfinished"/>
+ <translation>Dette ikonet er brukt av %1 oppføringer, og vil bli erstattet av standardikonet. Er du sikker på at du vil slette det?</translation>
</message>
</context>
<context>
@@ -1724,7 +1739,7 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Uuid:</source>
- <translation type="unfinished"/>
+ <translation>Uuid:</translation>
</message>
<message>
<source>Plugin Data</source>
@@ -1732,16 +1747,17 @@ Vil du slå sammen fila med endringene dine?</translation>
</message>
<message>
<source>Remove</source>
- <translation type="unfinished"/>
+ <translation>Fjern</translation>
</message>
<message>
<source>Delete plugin data?</source>
- <translation type="unfinished"/>
+ <translation>Slett programtillegg-data?</translation>
</message>
<message>
<source>Do you really want to delete the selected plugin data?
This may cause the affected plugins to malfunction.</source>
- <translation type="unfinished"/>
+ <translation>Ønsker du virkelig å slette de valgte programtillegg-dataene?
+Dette kan føre til feil for de berørte programtilleggene.</translation>
</message>
<message>
<source>Key</source>
@@ -1757,7 +1773,7 @@ This may cause the affected plugins to malfunction.</source>
<message>
<source> - Clone</source>
<comment>Suffix added to cloned entries</comment>
- <translation type="unfinished"/>
+ <translation>- Klone</translation>
</message>
</context>
<context>
@@ -1768,79 +1784,84 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Size</source>
- <translation type="unfinished"/>
+ <translation>Størrelse</translation>
</message>
</context>
<context>
<name>EntryAttachmentsWidget</name>
<message>
<source>Form</source>
- <translation type="unfinished"/>
+ <translation>Skjema</translation>
</message>
<message>
<source>Add</source>
- <translation type="unfinished"/>
+ <translation>Legg til</translation>
</message>
<message>
<source>Remove</source>
- <translation type="unfinished"/>
+ <translation>Fjern</translation>
</message>
<message>
<source>Open</source>
- <translation type="unfinished"/>
+ <translation>Åpne</translation>
</message>
<message>
<source>Save</source>
- <translation type="unfinished"/>
+ <translation>Lagre</translation>
</message>
<message>
<source>Select files</source>
- <translation type="unfinished"/>
+ <translation>Velg filer</translation>
</message>
<message numerus="yes">
<source>Are you sure you want to remove %n attachment(s)?</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Er du sikker på at du vil fjerne %n vedlegg?</numerusform><numerusform>Er du sikker på at du vil fjerne %n vedlegg?</numerusform></translation>
</message>
<message>
<source>Confirm Remove</source>
- <translation type="unfinished"/>
+ <translation>Bekreft fjerning</translation>
</message>
<message>
<source>Save attachments</source>
- <translation type="unfinished"/>
+ <translation>Lagre vedlegg</translation>
</message>
<message>
<source>Unable to create directory:
%1</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke opprette katalog:
+%1</translation>
</message>
<message>
<source>Are you sure you want to overwrite the existing file &quot;%1&quot; with the attachment?</source>
- <translation type="unfinished"/>
+ <translation>Er du sikker på at du ønsker å overskrive eksisterende fil &quot;%1&quot; med vedlegget?</translation>
</message>
<message>
<source>Confirm overwrite</source>
- <translation type="unfinished"/>
+ <translation>Bekreft overskriving</translation>
</message>
<message>
<source>Unable to save attachments:
%1</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke lagre vedlegg:
+%1</translation>
</message>
<message>
<source>Unable to open attachment:
%1</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke åpne vedlegg:
+%1</translation>
</message>
<message>
<source>Unable to open attachments:
%1</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke åpne vedlegg:
+%1</translation>
</message>
<message>
<source>Unable to open files:
%1</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke åpne filer:
+%1</translation>
</message>
</context>
<context>
@@ -1874,7 +1895,7 @@ This may cause the affected plugins to malfunction.</source>
<message>
<source>Ref: </source>
<comment>Reference abbreviation</comment>
- <translation type="unfinished"/>
+ <translation>Ref:</translation>
</message>
<message>
<source>Group</source>
@@ -1910,15 +1931,15 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Created</source>
- <translation type="unfinished"/>
+ <translation>Oppretta</translation>
</message>
<message>
<source>Modified</source>
- <translation type="unfinished"/>
+ <translation>Endret</translation>
</message>
<message>
<source>Accessed</source>
- <translation type="unfinished"/>
+ <translation>Brukt</translation>
</message>
<message>
<source>Attachments</source>
@@ -1929,31 +1950,31 @@ This may cause the affected plugins to malfunction.</source>
<name>EntryView</name>
<message>
<source>Customize View</source>
- <translation type="unfinished"/>
+ <translation>Tilpass visning</translation>
</message>
<message>
<source>Hide Usernames</source>
- <translation type="unfinished"/>
+ <translation>Skjul brukernavn</translation>
</message>
<message>
<source>Hide Passwords</source>
- <translation type="unfinished"/>
+ <translation>Skjul passord</translation>
</message>
<message>
<source>Fit to window</source>
- <translation type="unfinished"/>
+ <translation>Tilpass til vindu</translation>
</message>
<message>
<source>Fit to contents</source>
- <translation type="unfinished"/>
+ <translation>Tilpass til innhold</translation>
</message>
<message>
<source>Reset to defaults</source>
- <translation type="unfinished"/>
+ <translation>Tilbakestill til standardinnstillinger</translation>
</message>
<message>
<source>Attachments (icon)</source>
- <translation type="unfinished"/>
+ <translation>Vedlegg (ikon)</translation>
</message>
</context>
<context>
@@ -1967,18 +1988,18 @@ This may cause the affected plugins to malfunction.</source>
<name>HostInstaller</name>
<message>
<source>KeePassXC: Cannot save file!</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Kan ikke lagre fil!</translation>
</message>
<message>
<source>Cannot save the native messaging script file.</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke lagre den lokale meldings-skriptfilen.</translation>
</message>
</context>
<context>
<name>HttpPasswordGeneratorWidget</name>
<message>
<source>Length:</source>
- <translation type="unfinished"/>
+ <translation>Lengde:</translation>
</message>
<message>
<source>Character Types</source>
@@ -1986,35 +2007,35 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Upper Case Letters</source>
- <translation type="unfinished"/>
+ <translation>Store bokstaver</translation>
</message>
<message>
<source>A-Z</source>
- <translation type="unfinished"/>
+ <translation>A-Z</translation>
</message>
<message>
<source>Lower Case Letters</source>
- <translation type="unfinished"/>
+ <translation>Små bokstaver</translation>
</message>
<message>
<source>a-z</source>
- <translation type="unfinished"/>
+ <translation>a-z</translation>
</message>
<message>
<source>Numbers</source>
- <translation type="unfinished"/>
+ <translation>Tall</translation>
</message>
<message>
<source>0-9</source>
- <translation type="unfinished"/>
+ <translation>0-9</translation>
</message>
<message>
<source>Special Characters</source>
- <translation type="unfinished"/>
+ <translation>Spesialtegn</translation>
</message>
<message>
<source>/*_&amp; ...</source>
- <translation type="unfinished"/>
+ <translation>/*_&amp; ...</translation>
</message>
<message>
<source>Exclude look-alike characters</source>
@@ -2022,7 +2043,7 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Ensure that the password contains characters from every group</source>
- <translation type="unfinished"/>
+ <translation>Pass på at passordet inneholder tegn fra hver gruppe</translation>
</message>
<message>
<source>Extended ASCII</source>
@@ -2033,11 +2054,11 @@ This may cause the affected plugins to malfunction.</source>
<name>KMessageWidget</name>
<message>
<source>&amp;Close</source>
- <translation type="unfinished"/>
+ <translation>&amp;Lukk</translation>
</message>
<message>
<source>Close message</source>
- <translation type="unfinished"/>
+ <translation>Lukk melding</translation>
</message>
</context>
<context>
@@ -2048,18 +2069,18 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke utstede utfordrer-respons.</translation>
</message>
<message>
<source>Wrong key or database file is corrupt.</source>
- <translation type="unfinished"/>
+ <translation>Feil nøkkel eller databasefil er skadet.</translation>
</message>
</context>
<context>
<name>Kdbx3Writer</name>
<message>
<source>Unable to issue challenge-response.</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke utstede utfordrer-respons.</translation>
</message>
<message>
<source>Unable to calculate master key</source>
@@ -2070,7 +2091,7 @@ This may cause the affected plugins to malfunction.</source>
<name>Kdbx4Reader</name>
<message>
<source>missing database headers</source>
- <translation type="unfinished"/>
+ <translation>Manglende database-headere.</translation>
</message>
<message>
<source>Unable to calculate master key</source>
@@ -2078,127 +2099,127 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Invalid header checksum size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig header-sjekksumstørrelse</translation>
</message>
<message>
<source>Header SHA256 mismatch</source>
- <translation type="unfinished"/>
+ <translation>Ikke samsvar med SHA256-header</translation>
</message>
<message>
<source>Wrong key or database file is corrupt. (HMAC mismatch)</source>
- <translation type="unfinished"/>
+ <translation>Feil nøkkel eller databasefil er skadet. (HMAC-uoverensstemmelse)</translation>
</message>
<message>
<source>Unknown cipher</source>
- <translation type="unfinished"/>
+ <translation>Ukjent kryptering</translation>
</message>
<message>
<source>Invalid header id size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig størrelse: header-id</translation>
</message>
<message>
<source>Invalid header field length</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig lengde: header-felt</translation>
</message>
<message>
<source>Invalid header data length</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig lengde: header-data</translation>
</message>
<message>
<source>Failed to open buffer for KDF parameters in header</source>
- <translation type="unfinished"/>
+ <translation>Kunne ikke åpne buffer til KDF-parametere i header</translation>
</message>
<message>
<source>Unsupported key derivation function (KDF) or invalid parameters</source>
- <translation type="unfinished"/>
+ <translation>Ikke støttet funksjon for nøkkelavledning (KDF) eller ugyldige parametre</translation>
</message>
<message>
<source>Legacy header fields found in KDBX4 file.</source>
- <translation type="unfinished"/>
+ <translation>Eldre header-felt funnet i KDBX4-fil.</translation>
</message>
<message>
<source>Invalid inner header id size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig størrelse: indre header-id</translation>
</message>
<message>
<source>Invalid inner header field length</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig lengde: indre header-felt</translation>
</message>
<message>
<source>Invalid inner header binary size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig størrelse: binary inner header</translation>
</message>
<message>
<source>Unsupported KeePass variant map version.</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ikke støttet KeePass variant-map versjon.</translation>
</message>
<message>
<source>Invalid variant map entry name length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map entry name length</translation>
</message>
<message>
<source>Invalid variant map entry name data</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map entry name data</translation>
</message>
<message>
<source>Invalid variant map entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map entry value length</translation>
</message>
<message>
<source>Invalid variant map entry value data</source>
<extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map entry value data</translation>
</message>
<message>
<source>Invalid variant map Bool entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map Bool entry value length</translation>
</message>
<message>
<source>Invalid variant map Int32 entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map Int32 entry value length</translation>
</message>
<message>
<source>Invalid variant map UInt32 entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map UInt32 entry value length</translation>
</message>
<message>
<source>Invalid variant map Int64 entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map Int64 entry value length</translation>
</message>
<message>
<source>Invalid variant map UInt64 entry value length</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map UInt64 entry value length</translation>
</message>
<message>
<source>Invalid variant map entry type</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map entry type</translation>
</message>
<message>
<source>Invalid variant map field type size</source>
<extracomment>Translation: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Variant map field type size</translation>
</message>
</context>
<context>
<name>Kdbx4Writer</name>
<message>
<source>Invalid symmetric cipher algorithm.</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Symmetric cipher algorithm.</translation>
</message>
<message>
<source>Invalid symmetric cipher IV size.</source>
<comment>IV = Initialization Vector for symmetric cipher</comment>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Symmetric cipher IV size.</translation>
</message>
<message>
<source>Unable to calculate master key</source>
@@ -2207,54 +2228,54 @@ This may cause the affected plugins to malfunction.</source>
<message>
<source>Failed to serialize KDF parameters variant map</source>
<extracomment>Translation comment: variant map = data structure for storing meta data</extracomment>
- <translation type="unfinished"/>
+ <translation>Kunne ikke serialisere KDF-parametre variant-map</translation>
</message>
</context>
<context>
<name>KdbxReader</name>
<message>
<source>Invalid cipher uuid length</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Cipher uuid length</translation>
</message>
<message>
<source>Unsupported cipher</source>
- <translation type="unfinished"/>
+ <translation>Ikke støttet kryptering</translation>
</message>
<message>
<source>Invalid compression flags length</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Compression flags length</translation>
</message>
<message>
<source>Unsupported compression algorithm</source>
- <translation type="unfinished"/>
+ <translation>Ikke støttet komprimeringsalgoritme</translation>
</message>
<message>
<source>Invalid master seed size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Master seed size</translation>
</message>
<message>
<source>Invalid transform seed size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Transform seed size</translation>
</message>
<message>
<source>Invalid transform rounds size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Transform rounds size</translation>
</message>
<message>
<source>Invalid start bytes size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Start bytes size</translation>
</message>
<message>
<source>Invalid random stream id size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Random stream id size</translation>
</message>
<message>
<source>Invalid inner random stream cipher</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Inner random stream cipher</translation>
</message>
<message>
<source>Not a KeePass database.</source>
- <translation type="unfinished"/>
+ <translation>Ikke en KeePass-database.</translation>
</message>
<message>
<source>The selected file is an old KeePass 1 database (.kdb).
@@ -2268,131 +2289,131 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>Unsupported KeePass 2 database version.</source>
- <translation type="unfinished"/>
+ <translation>Ikke støttet KeePass2 databaseversjon.</translation>
</message>
</context>
<context>
<name>KdbxXmlReader</name>
<message>
<source>XML parsing failure: %1</source>
- <translation type="unfinished"/>
+ <translation>XML-parsingfeil: %1</translation>
</message>
<message>
<source>No root group</source>
- <translation type="unfinished"/>
+ <translation>Ingen root-gruppe</translation>
</message>
<message>
<source>Missing icon uuid or data</source>
- <translation type="unfinished"/>
+ <translation>Mangler: Icon uuid or data</translation>
</message>
<message>
<source>Missing custom data key or value</source>
- <translation type="unfinished"/>
+ <translation>Mangler: Custom data key or value</translation>
</message>
<message>
<source>Multiple group elements</source>
- <translation type="unfinished"/>
+ <translation>Flere gruppe-elementer</translation>
</message>
<message>
<source>Null group uuid</source>
- <translation type="unfinished"/>
+ <translation>Null: Group uuid</translation>
</message>
<message>
<source>Invalid group icon number</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Group icon number</translation>
</message>
<message>
<source>Invalid EnableAutoType value</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: EnableAutoType value</translation>
</message>
<message>
<source>Invalid EnableSearching value</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: EnableSearching value</translation>
</message>
<message>
<source>No group uuid found</source>
- <translation type="unfinished"/>
+ <translation>Ikke funnet: group uuid</translation>
</message>
<message>
<source>Null DeleteObject uuid</source>
- <translation type="unfinished"/>
+ <translation>Null: DeleteObject uuid</translation>
</message>
<message>
<source>Missing DeletedObject uuid or time</source>
- <translation type="unfinished"/>
+ <translation>Mangler: DeletedObject uuid or time</translation>
</message>
<message>
<source>Null entry uuid</source>
- <translation type="unfinished"/>
+ <translation>Null: Entry uuid</translation>
</message>
<message>
<source>Invalid entry icon number</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Entry icon number</translation>
</message>
<message>
<source>History element in history entry</source>
- <translation type="unfinished"/>
+ <translation>Historikkelement i historikkoppføring</translation>
</message>
<message>
<source>No entry uuid found</source>
- <translation type="unfinished"/>
+ <translation>Ikke funnet: Entry uuid</translation>
</message>
<message>
<source>History element with different uuid</source>
- <translation type="unfinished"/>
+ <translation>Historikkelement med forskjellig uuid</translation>
</message>
<message>
<source>Unable to decrypt entry string</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke dekryptere streng i oppføring</translation>
</message>
<message>
<source>Duplicate custom attribute found</source>
- <translation type="unfinished"/>
+ <translation>Duplikat: Custom attribute</translation>
</message>
<message>
<source>Entry string key or value missing</source>
- <translation type="unfinished"/>
+ <translation>Mangler: Entry string key or value</translation>
</message>
<message>
<source>Duplicate attachment found</source>
- <translation type="unfinished"/>
+ <translation>Duplikat: Attachment found</translation>
</message>
<message>
<source>Entry binary key or value missing</source>
- <translation type="unfinished"/>
+ <translation>Mangler: Entry binary key or value</translation>
</message>
<message>
<source>Auto-type association window or sequence missing</source>
- <translation type="unfinished"/>
+ <translation>Mangler: Auto-type association window or sequence</translation>
</message>
<message>
<source>Invalid bool value</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Bool value</translation>
</message>
<message>
<source>Invalid date time value</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: date time value</translation>
</message>
<message>
<source>Invalid color value</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Color value</translation>
</message>
<message>
<source>Invalid color rgb part</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Color rgb part</translation>
</message>
<message>
<source>Invalid number value</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Number value</translation>
</message>
<message>
<source>Invalid uuid value</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Uuid value</translation>
</message>
<message>
<source>Unable to decompress binary</source>
<extracomment>Translator meant is a binary data inside an entry</extracomment>
- <translation type="unfinished"/>
+ <translation>Kan ikke dekryptere binær</translation>
</message>
</context>
<context>
@@ -2410,48 +2431,48 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
<name>KeePass1Reader</name>
<message>
<source>Unable to read keyfile.</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke lese nøkkelfil.</translation>
</message>
<message>
<source>Not a KeePass database.</source>
- <translation type="unfinished"/>
+ <translation>Ikke en KeePass-database.</translation>
</message>
<message>
<source>Unsupported encryption algorithm.</source>
- <translation type="unfinished"/>
+ <translation>Ikke støttet krypteringsalgoritme.</translation>
</message>
<message>
<source>Unsupported KeePass database version.</source>
- <translation type="unfinished"/>
+ <translation>Ikke støttet KeePass databaseversion.</translation>
</message>
<message>
<source>Unable to read encryption IV</source>
<comment>IV = Initialization Vector for symmetric cipher</comment>
- <translation type="unfinished"/>
+ <translation>Kan ikke lese krypterings-IV</translation>
</message>
<message>
<source>Invalid number of groups</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Number of groups</translation>
</message>
<message>
<source>Invalid number of entries</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Number of entries</translation>
</message>
<message>
<source>Invalid content hash size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Content hash size</translation>
</message>
<message>
<source>Invalid transform seed size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Transform seed size</translation>
</message>
<message>
<source>Invalid number of transform rounds</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Number of transform rounds</translation>
</message>
<message>
<source>Unable to construct group tree</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke opprette gruppe-tre</translation>
</message>
<message>
<source>Root</source>
@@ -2463,149 +2484,149 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>Wrong key or database file is corrupt.</source>
- <translation type="unfinished"/>
+ <translation>Feil nøkkel eller databasefil er skadet.</translation>
</message>
<message>
<source>Key transformation failed</source>
- <translation type="unfinished"/>
+ <translation>Nøkkeltransformasjon feila</translation>
</message>
<message>
<source>Invalid group field type number</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Group field type number</translation>
</message>
<message>
<source>Invalid group field size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig: Group field size</translation>
</message>
<message>
<source>Read group field data doesn&apos;t match size</source>
- <translation type="unfinished"/>
+ <translation>Lest gruppefeltdata matcher ikke størrelsen</translation>
</message>
<message>
<source>Incorrect group id field size</source>
- <translation type="unfinished"/>
+ <translation>Stemmer ikke: Group id field size</translation>
</message>
<message>
<source>Incorrect group creation time field size</source>
- <translation type="unfinished"/>
+ <translation>Stemmer ikke: Group creation time field size</translation>
</message>
<message>
<source>Incorrect group modification time field size</source>
- <translation type="unfinished"/>
+ <translation>Feil: Group modification time field size</translation>
</message>
<message>
<source>Incorrect group access time field size</source>
- <translation type="unfinished"/>
+ <translation>Feil: Group access time field size</translation>
</message>
<message>
<source>Incorrect group expiry time field size</source>
- <translation type="unfinished"/>
+ <translation>Feil: Group expiry time field size</translation>
</message>
<message>
<source>Incorrect group icon field size</source>
- <translation type="unfinished"/>
+ <translation>Feil: Group icon field size</translation>
</message>
<message>
<source>Incorrect group level field size</source>
- <translation type="unfinished"/>
+ <translation>Feil: Group level field size</translation>
</message>
<message>
<source>Invalid group field type</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig felttype: gruppe</translation>
</message>
<message>
<source>Missing group id or level</source>
- <translation type="unfinished"/>
+ <translation>Manglende gruppe-id eller nivå</translation>
</message>
<message>
<source>Missing entry field type number</source>
- <translation type="unfinished"/>
+ <translation>Manglende felt-type i oppføring: nummer</translation>
</message>
<message>
<source>Invalid entry field size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig felt-størrelse i oppføring</translation>
</message>
<message>
<source>Read entry field data doesn&apos;t match size</source>
- <translation type="unfinished"/>
+ <translation>Lest felt i oppføring matcher ikke størrelse</translation>
</message>
<message>
<source>Invalid entry uuid field size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig felt-størrelse i oppføring: uuid</translation>
</message>
<message>
<source>Invalid entry group id field size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig felt-størrelse i oppføring: gruppe-id</translation>
</message>
<message>
<source>Invalid entry icon field size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig felt-størrelse i oppføring: ikon</translation>
</message>
<message>
<source>Invalid entry creation time field size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig felt-størrelse i oppføring: opprettelsestidspunkt</translation>
</message>
<message>
<source>Invalid entry modification time field size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig felt-størrelse i oppføring: endringstidspunkt</translation>
</message>
<message>
<source>Invalid entry expiry time field size</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig felt-størrelse i oppføring: utløpstidspunkt</translation>
</message>
<message>
<source>Invalid entry field type</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig felt-type i oppføring</translation>
</message>
</context>
<context>
<name>KeePass2</name>
<message>
<source>AES: 256-bit</source>
- <translation type="unfinished"/>
+ <translation>AES: 256-bit</translation>
</message>
<message>
<source>Twofish: 256-bit</source>
- <translation type="unfinished"/>
+ <translation>Twofish: 256-bit</translation>
</message>
<message>
<source>ChaCha20: 256-bit</source>
- <translation type="unfinished"/>
+ <translation>ChaCha20: 256-bit</translation>
</message>
<message>
<source>AES-KDF (KDBX 4)</source>
- <translation type="unfinished"/>
+ <translation>AES-KDF (KDBX 4)</translation>
</message>
<message>
<source>AES-KDF (KDBX 3.1)</source>
- <translation type="unfinished"/>
+ <translation>AES-KDF (KDBX 3.1)</translation>
</message>
<message>
<source>Argon2 (KDBX 4 – recommended)</source>
- <translation type="unfinished"/>
+ <translation>Argon2 (KDBX 4 – anbefalt)</translation>
</message>
</context>
<context>
<name>Main</name>
<message>
<source>Existing single-instance lock file is invalid. Launching new instance.</source>
- <translation type="unfinished"/>
+ <translation>Eksisterende enbrukermodus lock-fil er ugyldig. Starter ny instans.</translation>
</message>
<message>
<source>The lock file could not be created. Single-instance mode disabled.</source>
- <translation type="unfinished"/>
+ <translation>Lock-filen kunne ikke opprettes. Enbrukermodus deaktivert.</translation>
</message>
<message>
<source>Another instance of KeePassXC is already running.</source>
- <translation type="unfinished"/>
+ <translation>En annen instans av KeePassXC kjører allerede.</translation>
</message>
<message>
<source>Fatal error while testing the cryptographic functions.</source>
- <translation type="unfinished"/>
+ <translation>Alvorlig feil ved testing av de kryptografiske funksjonene.</translation>
</message>
<message>
<source>KeePassXC - Error</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC - Feil</translation>
</message>
</context>
<context>
@@ -2652,7 +2673,7 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>&amp;About</source>
- <translation type="unfinished"/>
+ <translation>&amp;Om</translation>
</message>
<message>
<source>&amp;Open database...</source>
@@ -2712,7 +2733,7 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>Database settings</source>
- <translation type="unfinished"/>
+ <translation>Databaseoppsett</translation>
</message>
<message>
<source>&amp;Clone entry</source>
@@ -2720,7 +2741,7 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>&amp;Find</source>
- <translation type="unfinished"/>
+ <translation>&amp;Finn</translation>
</message>
<message>
<source>Copy &amp;username</source>
@@ -2728,7 +2749,7 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>Copy username to clipboard</source>
- <translation type="unfinished"/>
+ <translation>Kopier brukernavn til utklippstavlen</translation>
</message>
<message>
<source>Cop&amp;y password</source>
@@ -2736,7 +2757,7 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>Copy password to clipboard</source>
- <translation type="unfinished"/>
+ <translation>Kopier passord til utklippstavlen</translation>
</message>
<message>
<source>&amp;Settings</source>
@@ -2760,27 +2781,27 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>&amp;Title</source>
- <translation type="unfinished"/>
+ <translation>&amp;Tittel</translation>
</message>
<message>
<source>Copy title to clipboard</source>
- <translation type="unfinished"/>
+ <translation>Kopier tittel til utklippstavlen</translation>
</message>
<message>
<source>&amp;URL</source>
- <translation type="unfinished"/>
+ <translation>&amp;URL</translation>
</message>
<message>
<source>Copy URL to clipboard</source>
- <translation type="unfinished"/>
+ <translation>Kopier URL til utklippstavlen</translation>
</message>
<message>
<source>&amp;Notes</source>
- <translation type="unfinished"/>
+ <translation>&amp;Notater</translation>
</message>
<message>
<source>Copy notes to clipboard</source>
- <translation type="unfinished"/>
+ <translation>Kopier notater til utklippstavle</translation>
</message>
<message>
<source>&amp;Export to CSV file...</source>
@@ -2800,11 +2821,11 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>Show TOTP</source>
- <translation type="unfinished"/>
+ <translation>Vis TOTP</translation>
</message>
<message>
<source>Set up TOTP...</source>
- <translation type="unfinished"/>
+ <translation>Sett opp TOTP...</translation>
</message>
<message>
<source>Copy &amp;TOTP</source>
@@ -2816,7 +2837,7 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>Clear history</source>
- <translation type="unfinished"/>
+ <translation>Slett historikk</translation>
</message>
<message>
<source>Access error for config file %1</source>
@@ -2824,15 +2845,15 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>&lt;p&gt;It looks like you are using KeePassHTTP for browser integration. This feature has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt; (warning %1 of 3).&lt;/p&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;p&gt;Det ser ut som du bruker KeePassHTTP som nettleserintegrasjon. Denne funksjonen har blitt utdatert og vil bli fjerna i framtida.&lt;br&gt;Vennligst bytt til KeePassXC-nettleseren isteden! For hjelp med overgang, besøk vår &lt;a class=&quot;link&quot; href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;overgangs-håndbok&lt;/a&gt; (advarsel %1 of 3).&lt;/p&gt;</translation>
</message>
<message>
<source>read-only</source>
- <translation type="unfinished"/>
+ <translation>skrivebeskyttet</translation>
</message>
<message>
<source>Settings</source>
- <translation type="unfinished"/>
+ <translation>Oppsett</translation>
</message>
<message>
<source>Toggle window</source>
@@ -2856,120 +2877,122 @@ Dette er en en-veis-migrasjon. Du kan ikke åpne den importerte databasen med de
</message>
<message>
<source>Save repaired database</source>
- <translation type="unfinished"/>
+ <translation>Lagre reparert database</translation>
</message>
<message>
<source>Writing the database failed.</source>
- <translation type="unfinished"/>
+ <translation>Skriving av databasen feilet.</translation>
</message>
<message>
<source>Please touch the button on your YubiKey!</source>
- <translation type="unfinished"/>
+ <translation>Vennligst trykk på knappen på din YubiKey!</translation>
</message>
<message>
<source>WARNING: You are using an unstable build of KeePassXC!
There is a high risk of corruption, maintain a backup of your databases.
This version is not meant for production use.</source>
- <translation type="unfinished"/>
+ <translation>ADVARSEL: Du bruker en ustabil bygge-versjon av KeePassXC!
+Det er stor risiko for inkonsistens, ha en sikkerhetskopi av databasene dine.
+Denne versjonen er ikke ment for produksjonsmiljø.</translation>
</message>
</context>
<context>
<name>OpenSSHKey</name>
<message>
<source>Invalid key file, expecting an OpenSSH key</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig nøkkelfil. Forventer OpenSSH-nøkkel</translation>
</message>
<message>
<source>PEM boundary mismatch</source>
- <translation type="unfinished"/>
+ <translation>‘PEM boundary’ samsvarer ikke</translation>
</message>
<message>
<source>Base64 decoding failed</source>
- <translation type="unfinished"/>
+ <translation>Base64 dekryptering feila</translation>
</message>
<message>
<source>Key file way too small.</source>
- <translation type="unfinished"/>
+ <translation>Nøkkelfil er alt for liten.</translation>
</message>
<message>
<source>Key file magic header id invalid</source>
- <translation type="unfinished"/>
+ <translation>’Magic header id’ i nøkkelfil er ugyldig</translation>
</message>
<message>
<source>Found zero keys</source>
- <translation type="unfinished"/>
+ <translation>Fant null nøkler</translation>
</message>
<message>
<source>Failed to read public key.</source>
- <translation type="unfinished"/>
+ <translation>Lesing av offentlig nøkkel feilet.</translation>
</message>
<message>
<source>Corrupted key file, reading private key failed</source>
- <translation type="unfinished"/>
+ <translation>Skadet nøkkelfil. Lesing av privat nøkkel feilet</translation>
</message>
<message>
<source>No private key payload to decrypt</source>
- <translation type="unfinished"/>
+ <translation>Ingen private nøkkeldata å dekryptere</translation>
</message>
<message>
<source>Trying to run KDF without cipher</source>
- <translation type="unfinished"/>
+ <translation>Prøver å kjøre KDF uten kryptering</translation>
</message>
<message>
<source>Passphrase is required to decrypt this key</source>
- <translation type="unfinished"/>
+ <translation>Passordfrase er nødvendig for å dekryptere denne nøkkelen</translation>
</message>
<message>
<source>Key derivation failed, key file corrupted?</source>
- <translation type="unfinished"/>
+ <translation>Nøkkelavledning mislyktes. Nøkkelfil skadet?</translation>
</message>
<message>
<source>Decryption failed, wrong passphrase?</source>
- <translation type="unfinished"/>
+ <translation>Dekryptering feilet. Feil passordfrase?</translation>
</message>
<message>
<source>Unexpected EOF while reading public key</source>
- <translation type="unfinished"/>
+ <translation>Uventet EOF ved lesing av offentlig nøkkel</translation>
</message>
<message>
<source>Unexpected EOF while reading private key</source>
- <translation type="unfinished"/>
+ <translation>Uventet EOF ved lesing av privat nøkkel</translation>
</message>
<message>
<source>Can&apos;t write public key as it is empty</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke skrive offentlig nøkkel fordi den er tom</translation>
</message>
<message>
<source>Unexpected EOF when writing public key</source>
- <translation type="unfinished"/>
+ <translation>Uventet EOF ved skriving av offentlig nøkkel</translation>
</message>
<message>
<source>Can&apos;t write private key as it is empty</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke skrive privat nøkkel fordi den er tom</translation>
</message>
<message>
<source>Unexpected EOF when writing private key</source>
- <translation type="unfinished"/>
+ <translation>Uventet EOF ved skriving av privat nøkkel</translation>
</message>
<message>
<source>Unsupported key type: %1</source>
- <translation type="unfinished"/>
+ <translation>Ikke støttet nøkkeltype: %1</translation>
</message>
<message>
<source>Unknown cipher: %1</source>
- <translation type="unfinished"/>
+ <translation>Ukjent kryptering: %1</translation>
</message>
<message>
<source>Cipher IV is too short for MD5 kdf</source>
- <translation type="unfinished"/>
+ <translation>Cipher IV er for kort for MD5 kdf</translation>
</message>
<message>
<source>Unknown KDF: %1</source>
- <translation type="unfinished"/>
+ <translation>Ukjent KDF: %1</translation>
</message>
<message>
<source>Unknown key type: %1</source>
- <translation type="unfinished"/>
+ <translation>Ukjent nøkkeltype: %1</translation>
</message>
</context>
<context>
@@ -2980,11 +3003,11 @@ This version is not meant for production use.</source>
</message>
<message>
<source>This is required for accessing your databases from ChromeIPass or PassIFox</source>
- <translation type="unfinished"/>
+ <translation>Dette kreves for å få tilgang til databasene dine fra ChromeIPass eller PassIFox</translation>
</message>
<message>
<source>Enable KeePassHTTP server</source>
- <translation type="unfinished"/>
+ <translation>Aktiver KeePassHTTP-server</translation>
</message>
<message>
<source>General</source>
@@ -2993,15 +3016,15 @@ This version is not meant for production use.</source>
<message>
<source>Sh&amp;ow a notification when credentials are requested</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>Vi&amp;s beskjed når det blir bedt om identifikasjon</translation>
</message>
<message>
<source>Only returns the best matches for a specific URL instead of all entries for the whole domain.</source>
- <translation type="unfinished"/>
+ <translation>Returnerer bare beste matcher for en spesifikk URL i stedet for alle oppføringer i hele domenet.</translation>
</message>
<message>
<source>&amp;Return only best matching entries</source>
- <translation type="unfinished"/>
+ <translation>&amp;Returner bare de beste matchende oppføringene</translation>
</message>
<message>
<source>Re&amp;quest to unlock the database if it is locked</source>
@@ -3009,27 +3032,27 @@ This version is not meant for production use.</source>
</message>
<message>
<source>Only entries with the same scheme (http://, https://, ftp://, ...) are returned.</source>
- <translation type="unfinished"/>
+ <translation>Bare oppføringer med samme protokoll (http://, https://,, ftp://, ...) er returnert.</translation>
</message>
<message>
<source>&amp;Match URL schemes</source>
- <translation type="unfinished"/>
+ <translation>&amp;Match URL-skjema</translation>
</message>
<message>
<source>Sort matching entries by &amp;username</source>
- <translation type="unfinished"/>
+ <translation>Sorter matchende oppføringer etter &amp;brukernavn</translation>
</message>
<message>
<source>Sort &amp;matching entries by title</source>
- <translation type="unfinished"/>
+ <translation>Sorter &amp;matchende oppføringer etter tittel</translation>
</message>
<message>
<source>R&amp;emove all shared encryption keys from active database</source>
- <translation type="unfinished"/>
+ <translation>Fj&amp;ern alle delte krypteringsnøkler fra aktiv database</translation>
</message>
<message>
<source>Re&amp;move all stored permissions from entries in active database</source>
- <translation type="unfinished"/>
+ <translation>Fjer&amp;n alle lagrede tillatelser fra oppføringer i aktiv database</translation>
</message>
<message>
<source>Password Generator</source>
@@ -3041,11 +3064,11 @@ This version is not meant for production use.</source>
</message>
<message>
<source>Always allow &amp;access to entries</source>
- <translation type="unfinished"/>
+ <translation>Tillat alltid tilg&amp;ang til oppføringer</translation>
</message>
<message>
<source>Always allow &amp;updating entries</source>
- <translation type="unfinished"/>
+ <translation>Alltid tillat å oppdatere oppføringer</translation>
</message>
<message>
<source>Only the selected database has to be connected with a client.</source>
@@ -3053,27 +3076,27 @@ This version is not meant for production use.</source>
</message>
<message>
<source>Searc&amp;h in all opened databases for matching entries</source>
- <translation type="unfinished"/>
+ <translation>Sø&amp;k i alle åpne databaser etter matchende oppføringer</translation>
</message>
<message>
<source>Automatically creating or updating string fields is not supported.</source>
- <translation type="unfinished"/>
+ <translation>Automatisk registrering eller endring av tekstfelt er ikke støttet.</translation>
</message>
<message>
<source>&amp;Return advanced string fields which start with &quot;KPH: &quot;</source>
- <translation type="unfinished"/>
+ <translation>&amp;Returner avanserte tekstfelt som begynner med &quot;KPH: &quot;</translation>
</message>
<message>
<source>HTTP Port:</source>
- <translation type="unfinished"/>
+ <translation>HTTP-port:</translation>
</message>
<message>
<source>Default port: 19455</source>
- <translation type="unfinished"/>
+ <translation>Standard port: 19455</translation>
</message>
<message>
<source>KeePassXC will listen to this port on 127.0.0.1</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC vil lytte på denne porten på 127.0.0.1</translation>
</message>
<message>
<source>&lt;b&gt;Warning:&lt;/b&gt; The following options can be dangerous!</source>
@@ -3081,23 +3104,24 @@ This version is not meant for production use.</source>
</message>
<message>
<source>&lt;p&gt;KeePassHTTP has been deprecated and will be removed in the future.&lt;br&gt;Please switch to KeePassXC-Browser instead! For help with migration, visit our &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;</source>
- <translation type="unfinished"/>
+ <translation>&lt;p&gt;KeePassHTTP er blitt gammeldags og vil bli fjerna i framtida.&lt;br&gt;Vær vennlig å bytt til KeePassXC-nettleseren isteden! For hjelp med overgangen, besøk vår &lt;a href=&quot;https://keepassxc.org/docs/keepassxc-browser-migration&quot;&gt;overgangs-håndbok&lt;/a&gt;.&lt;/p&gt;</translation>
</message>
<message>
<source>Cannot bind to privileged ports</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke bruke privilegerte porter</translation>
</message>
<message>
<source>Cannot bind to privileged ports below 1024!
Using default port 19455.</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke bruke privilegerte porter under 1024!
+Bruker standard port 19455.</translation>
</message>
</context>
<context>
<name>PasswordGeneratorWidget</name>
<message>
<source>%p%</source>
- <translation type="unfinished"/>
+ <translation>%p%</translation>
</message>
<message>
<source>Password:</source>
@@ -3106,11 +3130,11 @@ Using default port 19455.</source>
<message>
<source>strength</source>
<comment>Password strength</comment>
- <translation type="unfinished"/>
+ <translation>styrke</translation>
</message>
<message>
<source>entropy</source>
- <translation type="unfinished"/>
+ <translation>entropi</translation>
</message>
<message>
<source>Password</source>
@@ -3122,19 +3146,19 @@ Using default port 19455.</source>
</message>
<message>
<source>Upper Case Letters</source>
- <translation type="unfinished"/>
+ <translation>Store bokstaver</translation>
</message>
<message>
<source>Lower Case Letters</source>
- <translation type="unfinished"/>
+ <translation>Små bokstaver</translation>
</message>
<message>
<source>Numbers</source>
- <translation type="unfinished"/>
+ <translation>Tall</translation>
</message>
<message>
<source>Special Characters</source>
- <translation type="unfinished"/>
+ <translation>Spesialtegn</translation>
</message>
<message>
<source>Extended ASCII</source>
@@ -3158,7 +3182,7 @@ Using default port 19455.</source>
</message>
<message>
<source>Wordlist:</source>
- <translation type="unfinished"/>
+ <translation>Ordliste:</translation>
</message>
<message>
<source>Word Count:</source>
@@ -3178,7 +3202,7 @@ Using default port 19455.</source>
</message>
<message>
<source>Accept</source>
- <translation type="unfinished"/>
+ <translation>Godta</translation>
</message>
<message>
<source>Close</source>
@@ -3199,117 +3223,117 @@ Using default port 19455.</source>
<message>
<source>Poor</source>
<comment>Password quality</comment>
- <translation type="unfinished"/>
+ <translation>Dårlig</translation>
</message>
<message>
<source>Weak</source>
<comment>Password quality</comment>
- <translation type="unfinished"/>
+ <translation>Svak</translation>
</message>
<message>
<source>Good</source>
<comment>Password quality</comment>
- <translation type="unfinished"/>
+ <translation>God</translation>
</message>
<message>
<source>Excellent</source>
<comment>Password quality</comment>
- <translation type="unfinished"/>
+ <translation>Utmerket</translation>
</message>
</context>
<context>
<name>QObject</name>
<message>
<source>Database not opened</source>
- <translation type="unfinished"/>
+ <translation>Database ikke åpnet</translation>
</message>
<message>
<source>Database hash not available</source>
- <translation type="unfinished"/>
+ <translation>Database-hash er ikke tilgjengelig</translation>
</message>
<message>
<source>Client public key not received</source>
- <translation type="unfinished"/>
+ <translation>Klients offentlige nøkkel ikke mottatt</translation>
</message>
<message>
<source>Cannot decrypt message</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke dekryptere melding</translation>
</message>
<message>
<source>Timeout or cannot connect to KeePassXC</source>
- <translation type="unfinished"/>
+ <translation>Tidsavbrudd eller kan ikke koble til KeePassXC</translation>
</message>
<message>
<source>Action cancelled or denied</source>
- <translation type="unfinished"/>
+ <translation>Handlingen er kansellert eller avvist</translation>
</message>
<message>
<source>Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?</source>
- <translation type="unfinished"/>
+ <translation>Kan ikke kryptere melding eller offentlig nøkkel ikke funnet. Er lokal meldingsutveksling aktivert i KeePassXC?</translation>
</message>
<message>
<source>KeePassXC association failed, try again</source>
- <translation type="unfinished"/>
+ <translation>Assosiering av KeePassXC mislyktes, prøv igjen</translation>
</message>
<message>
<source>Key change was not successful</source>
- <translation type="unfinished"/>
+ <translation>Endring av nøkkel var ikke vellykket</translation>
</message>
<message>
<source>Encryption key is not recognized</source>
- <translation type="unfinished"/>
+ <translation>Krypteringsnøkkel er ikke gjenkjent</translation>
</message>
<message>
<source>No saved databases found</source>
- <translation type="unfinished"/>
+ <translation>Ingen lagrede databaser funnet</translation>
</message>
<message>
<source>Incorrect action</source>
- <translation type="unfinished"/>
+ <translation>Feil handling</translation>
</message>
<message>
<source>Empty message received</source>
- <translation type="unfinished"/>
+ <translation>Tom melding mottatt</translation>
</message>
<message>
<source>No URL provided</source>
- <translation type="unfinished"/>
+ <translation>Ingen URL oppgitt</translation>
</message>
<message>
<source>No logins found</source>
- <translation type="unfinished"/>
+ <translation>Ingen innlogginger funnet</translation>
</message>
<message>
<source>Unknown error</source>
- <translation type="unfinished"/>
+ <translation>Ukjent feil</translation>
</message>
<message>
<source>Add a new entry to a database.</source>
- <translation type="unfinished"/>
+ <translation>Legg til en ny oppføring til en database.</translation>
</message>
<message>
<source>Path of the database.</source>
- <translation type="unfinished"/>
+ <translation>Database-sti.</translation>
</message>
<message>
<source>Key file of the database.</source>
- <translation type="unfinished"/>
+ <translation>Nøkkelfil til databasen.</translation>
</message>
<message>
<source>path</source>
- <translation type="unfinished"/>
+ <translation>sti</translation>
</message>
<message>
<source>Username for the entry.</source>
- <translation type="unfinished"/>
+ <translation>Brukernavn for oppføringen.</translation>
</message>
<message>
<source>username</source>
- <translation type="unfinished"/>
+ <translation>brukernamn</translation>
</message>
<message>
<source>URL for the entry.</source>
- <translation type="unfinished"/>
+ <translation>URL for oppføringa.</translation>
</message>
<message>
<source>URL</source>
@@ -3317,171 +3341,177 @@ Using default port 19455.</source>
</message>
<message>
<source>Prompt for the entry&apos;s password.</source>
- <translation type="unfinished"/>
+ <translation>Spør etter oppføringens passord.</translation>
</message>
<message>
<source>Generate a password for the entry.</source>
- <translation type="unfinished"/>
+ <translation>Generer et passord til oppføringen.</translation>
</message>
<message>
<source>Length for the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Lengde for det genererte passordet.</translation>
</message>
<message>
<source>length</source>
- <translation type="unfinished"/>
+ <translation>lengde</translation>
</message>
<message>
<source>Path of the entry to add.</source>
- <translation type="unfinished"/>
+ <translation>Sti til oppføringa som skal legges til.</translation>
</message>
<message>
<source>Copy an entry&apos;s password to the clipboard.</source>
- <translation type="unfinished"/>
+ <translation>Kopier passordet i oppføringa til utklippstavlen.</translation>
</message>
<message>
<source>Path of the entry to clip.</source>
<comment>clip = copy to clipboard</comment>
- <translation type="unfinished"/>
+ <translation>Sti til oppføring som skal klippes ut.</translation>
</message>
<message>
<source>Timeout in seconds before clearing the clipboard.</source>
- <translation type="unfinished"/>
+ <translation>Forsinkelse i sekund før tømming av utklippstavlen.</translation>
</message>
<message>
<source>Edit an entry.</source>
- <translation type="unfinished"/>
+ <translation>Rediger oppføring.</translation>
</message>
<message>
<source>Title for the entry.</source>
- <translation type="unfinished"/>
+ <translation>Tittel for oppføringa.</translation>
</message>
<message>
<source>title</source>
- <translation type="unfinished"/>
+ <translation>tittel</translation>
</message>
<message>
<source>Path of the entry to edit.</source>
- <translation type="unfinished"/>
+ <translation>Sti til oppføringa som skal redigeres.</translation>
</message>
<message>
<source>Estimate the entropy of a password.</source>
- <translation type="unfinished"/>
+ <translation>Beregn entropien til pasordet.</translation>
</message>
<message>
<source>Password for which to estimate the entropy.</source>
- <translation type="unfinished"/>
+ <translation>Passord for beregning av entropi.</translation>
</message>
<message>
<source>Perform advanced analysis on the password.</source>
- <translation type="unfinished"/>
+ <translation>Utfør avansert analyse på passordet.</translation>
</message>
<message>
<source>Extract and print the content of a database.</source>
- <translation type="unfinished"/>
+ <translation>Pakk ut og print innholdet av en database.</translation>
</message>
<message>
<source>Path of the database to extract.</source>
- <translation type="unfinished"/>
+ <translation>Sti til databasen som skal pakkes ut.</translation>
</message>
<message>
<source>Insert password to unlock %1: </source>
- <translation type="unfinished"/>
+ <translation>Sett inn passord for å låse opp %1: </translation>
</message>
<message>
<source>Failed to load key file %1 : %2</source>
- <translation type="unfinished"/>
+ <translation>Klarte ikke å laste nøkkelfil %1 : %2</translation>
</message>
<message>
<source>WARNING: You are using a legacy key file format which may become
unsupported in the future.
Please consider generating a new key file.</source>
- <translation type="unfinished"/>
+ <translation>ADVARSEL: Nøkkelfilen du bruker er av et eldre filformat som kan miste støtten i framtidige programversjoner.
+
+Vurder å opprette en ny nøkkelfil.</translation>
</message>
<message>
<source>
Available commands:
</source>
- <translation type="unfinished"/>
+ <translation>
+
+Tilgjengelige kommandoer:
+</translation>
</message>
<message>
<source>Name of the command to execute.</source>
- <translation type="unfinished"/>
+ <translation>Navn på kommandoen som skal utføres.</translation>
</message>
<message>
<source>List database entries.</source>
- <translation type="unfinished"/>
+ <translation>Liste databaseoppføringer.</translation>
</message>
<message>
<source>Path of the group to list. Default is /</source>
- <translation type="unfinished"/>
+ <translation>Sti til gruppen som skal listes. Standard er /</translation>
</message>
<message>
<source>Find entries quickly.</source>
- <translation type="unfinished"/>
+ <translation>Finn oppføring fort.</translation>
</message>
<message>
<source>Search term.</source>
- <translation type="unfinished"/>
+ <translation>Søkeord.</translation>
</message>
<message>
<source>Merge two databases.</source>
- <translation type="unfinished"/>
+ <translation>Slå sammen to databaser.</translation>
</message>
<message>
<source>Path of the database to merge into.</source>
- <translation type="unfinished"/>
+ <translation>Sti til databasen det skal kombineres til.</translation>
</message>
<message>
<source>Path of the database to merge from.</source>
- <translation type="unfinished"/>
+ <translation>Sti til databasen det skal slås sammen fra.</translation>
</message>
<message>
<source>Use the same credentials for both database files.</source>
- <translation type="unfinished"/>
+ <translation>Bruk samme identifikasjon for begge databasefilene.</translation>
</message>
<message>
<source>Key file of the database to merge from.</source>
- <translation type="unfinished"/>
+ <translation>Nøkkelfil til databasen det skal slås sammen fra.</translation>
</message>
<message>
<source>Show an entry&apos;s information.</source>
- <translation type="unfinished"/>
+ <translation>Vis informasjon i oppføringen.</translation>
</message>
<message>
<source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
- <translation type="unfinished"/>
+ <translation>Navn på attributtene som skal vises. Dette alternativet kan spesifiseres mer enn en gang, med hvert attributt vist ett per linje i den oppgitte rekkefølgen. Hvis ingen attributter er oppgitt, er det gitt en oppsummering av standardattributtene.</translation>
</message>
<message>
<source>attribute</source>
- <translation type="unfinished"/>
+ <translation>attributt</translation>
</message>
<message>
<source>Name of the entry to show.</source>
- <translation type="unfinished"/>
+ <translation>Navn på oppføring som skal vises</translation>
</message>
<message>
<source>NULL device</source>
- <translation type="unfinished"/>
+ <translation>NULL-enhet</translation>
</message>
<message>
<source>error reading from device</source>
- <translation type="unfinished"/>
+ <translation>Feil ved lesing fra enhet</translation>
</message>
<message>
<source>file empty !
</source>
- <translation type="unfinished"/>
+ <translation>Tom fil !
+</translation>
</message>
<message>
<source>malformed string</source>
- <translation type="unfinished"/>
+ <translation>Ugyldig streng</translation>
</message>
<message>
<source>missing closing quote</source>
- <translation type="unfinished"/>
+ <translation>Manglende avsluttende anførselstegn</translation>
</message>
<message>
<source>Group</source>
@@ -3505,11 +3535,11 @@ Available commands:
</message>
<message>
<source>Last Modified</source>
- <translation type="unfinished"/>
+ <translation>Sist endret</translation>
</message>
<message>
<source>Created</source>
- <translation type="unfinished"/>
+ <translation>Oppretta</translation>
</message>
<message>
<source>Legacy Browser Integration</source>
@@ -3521,60 +3551,61 @@ Available commands:
</message>
<message>
<source>YubiKey[%1] Challenge Response - Slot %2 - %3</source>
- <translation type="unfinished"/>
+ <translation>YubiKey[%1] challenge-respons - slot %2 - %3</translation>
</message>
<message>
<source>Press</source>
- <translation type="unfinished"/>
+ <translation>Trykk</translation>
</message>
<message>
<source>Passive</source>
- <translation type="unfinished"/>
+ <translation>Passiv</translation>
</message>
<message>
<source>SSH Agent</source>
- <translation type="unfinished"/>
+ <translation>SSH-agent</translation>
</message>
<message>
<source>Generate a new random diceware passphrase.</source>
- <translation type="unfinished"/>
+ <translation>Generer en ny tilfeldig diceware passordfrase.</translation>
</message>
<message>
<source>Word count for the diceware passphrase.</source>
- <translation type="unfinished"/>
+ <translation>Antall ord i diceware-passordfrasen.</translation>
</message>
<message>
<source>count</source>
- <translation type="unfinished"/>
+ <translation>Antall</translation>
</message>
<message>
<source>Wordlist for the diceware generator.
[Default: EFF English]</source>
- <translation type="unfinished"/>
+ <translation>Ordliste for diceware-generatoren.
+[Standard: EFF engelsk]</translation>
</message>
<message>
<source>Generate a new random password.</source>
- <translation type="unfinished"/>
+ <translation>Lag et nytt tilfeldig passord.</translation>
</message>
<message>
<source>Length of the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Lengde på det genererte passordet.</translation>
</message>
<message>
<source>Use lowercase characters in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Bruk små bokstaver i det genererte passordet.</translation>
</message>
<message>
<source>Use uppercase characters in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Bruk store bokstaver i det genererte passordet.</translation>
</message>
<message>
<source>Use numbers in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Bruk tall i det genererte passordet.</translation>
</message>
<message>
<source>Use special characters in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Bruk spesialtegn i det genererte passordet.</translation>
</message>
<message>
<source>Use extended ASCII in the generated password.</source>
@@ -3585,41 +3616,41 @@ Available commands:
<name>QtIOCompressor</name>
<message>
<source>Internal zlib error when compressing: </source>
- <translation type="unfinished"/>
+ <translation>Intern zlib-feil under pakking:</translation>
</message>
<message>
<source>Error writing to underlying device: </source>
- <translation type="unfinished"/>
+ <translation>Feil ved skriving til underliggende enhet:</translation>
</message>
<message>
<source>Error opening underlying device: </source>
- <translation type="unfinished"/>
+ <translation>Feil ved åpning av underliggende enhet:</translation>
</message>
<message>
<source>Error reading data from underlying device: </source>
- <translation type="unfinished"/>
+ <translation>Feil ved lesing av data fra underliggende enhet:</translation>
</message>
<message>
<source>Internal zlib error when decompressing: </source>
- <translation type="unfinished"/>
+ <translation>Intern zlib-feil under utpakking:</translation>
</message>
</context>
<context>
<name>QtIOCompressor::open</name>
<message>
<source>The gzip format not supported in this version of zlib.</source>
- <translation type="unfinished"/>
+ <translation>Gzip-formatet er ikke støttet i denne versjonen av zlib.</translation>
</message>
<message>
<source>Internal zlib error: </source>
- <translation type="unfinished"/>
+ <translation>Intern zlib-feil:</translation>
</message>
</context>
<context>
<name>SearchWidget</name>
<message>
<source>Search...</source>
- <translation type="unfinished"/>
+ <translation>Søk...</translation>
</message>
<message>
<source>Search</source>
@@ -3627,45 +3658,47 @@ Available commands:
</message>
<message>
<source>Clear</source>
- <translation type="unfinished"/>
+ <translation>Tøm</translation>
</message>
<message>
<source>Case Sensitive</source>
- <translation type="unfinished"/>
+ <translation>Versalsensitiv</translation>
</message>
<message>
<source>Limit search to selected group</source>
- <translation type="unfinished"/>
+ <translation>Avgrens søket til valgt gruppe</translation>
</message>
</context>
<context>
<name>Service</name>
<message>
<source>KeePassXC: New key association request</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Tilknytningsforespørsel for ny nøkkel.</translation>
</message>
<message>
<source>You have received an association request for the above key.
If you would like to allow it access to your KeePassXC database
give it a unique name to identify and accept it.</source>
- <translation type="unfinished"/>
+ <translation>Du har mottatt en tilknytningsforespørsel for den ovennevnte nøkkelen.
+Gi den et unikt navn dersom du vil gi den tilgang til KeePassXC-databasen.</translation>
</message>
<message>
<source>KeePassXC: Overwrite existing key?</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Overskrive eksisterende nøkkel?</translation>
</message>
<message>
<source>A shared encryption-key with the name &quot;%1&quot; already exists.
Do you want to overwrite it?</source>
- <translation type="unfinished"/>
+ <translation>En delt krypteringsnøkkel eksisterer allerede med navn &quot;%1&quot;.
+Ønsker du å overskrive den?</translation>
</message>
<message>
<source>KeePassXC: Update Entry</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Oppdater oppføring.</translation>
</message>
<message>
<source>Do you want to update the information in %1 - %2?</source>
- <translation type="unfinished"/>
+ <translation>Vil du oppdatere informasjonen i %1 - %2?</translation>
</message>
<message>
<source>KeePassXC: Database locked!</source>
@@ -3674,7 +3707,8 @@ Do you want to overwrite it?</source>
<message>
<source>The active database is locked!
Please unlock the selected database or choose another one which is unlocked.</source>
- <translation type="unfinished"/>
+ <translation>Den aktive databasen er låst!
+Lås opp valgt database eller velg en annen som er åpen.</translation>
</message>
<message>
<source>KeePassXC: Removed keys from database</source>
@@ -3682,7 +3716,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message numerus="yes">
<source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Fjerna %n krypteringsnøkkel(er) fra KeePassX/Http-oppføringa.</numerusform><numerusform>Fjerna %n krypteringsnøkkel(er) fra KeePassX/Http-oppføringa.</numerusform></translation>
</message>
<message>
<source>KeePassXC: No keys found</source>
@@ -3690,7 +3724,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>No shared encryption-keys found in KeePassHttp Settings.</source>
- <translation type="unfinished"/>
+ <translation>Ingen delte krypteringsnøkler funnet i KeePassHttp-innstillinger</translation>
</message>
<message>
<source>KeePassXC: Settings not available!</source>
@@ -3698,11 +3732,11 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>The active database does not contain an entry of KeePassHttp Settings.</source>
- <translation type="unfinished"/>
+ <translation>Den aktive databasen mangler oppføring for KeePassHttp-innstillinger.</translation>
</message>
<message>
<source>Removing stored permissions...</source>
- <translation type="unfinished"/>
+ <translation>Fjerner lagrede tillatelser...</translation>
</message>
<message>
<source>Abort</source>
@@ -3710,26 +3744,26 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>KeePassXC: Removed permissions</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Fjernet tillatelser</translation>
</message>
<message numerus="yes">
<source>Successfully removed permissions from %n entries.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Fjernet tillatelser fra %n oppføringer.</numerusform><numerusform>Fjernet tillatelser fra %n oppføringer.</numerusform></translation>
</message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Ingen oppføring med tillatelser funnet!</translation>
</message>
<message>
<source>The active database does not contain an entry with permissions.</source>
- <translation type="unfinished"/>
+ <translation>Den aktive databasen inneholder ikke et oppsett med tillatelser.</translation>
</message>
</context>
<context>
<name>SettingsWidget</name>
<message>
<source>Application Settings</source>
- <translation type="unfinished"/>
+ <translation>Applikasjonsinnstillinger</translation>
</message>
<message>
<source>General</source>
@@ -3788,15 +3822,15 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Use group icon on entry creation</source>
- <translation type="unfinished"/>
+ <translation>Bruk gruppeikon ved ny oppføring</translation>
</message>
<message>
<source>Don&apos;t mark database as modified for non-data changes (e.g., expanding groups)</source>
- <translation type="unfinished"/>
+ <translation>Ikke marker database som endret ved non-dataendringer (f.eks. ekspandere grupper)</translation>
</message>
<message>
<source>Hide the Details view</source>
- <translation type="unfinished"/>
+ <translation>Skjul detaljvisninga</translation>
</message>
<message>
<source>Show a system tray icon</source>
@@ -3804,11 +3838,11 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Hide window to system tray when minimized</source>
- <translation type="unfinished"/>
+ <translation>Skjul vindu til systemstatusfelt når minimert</translation>
</message>
<message>
<source>Hide window to system tray instead of app exit</source>
- <translation type="unfinished"/>
+ <translation>Skjul vindu til systemstatusfelt i stedet for app-avslutning</translation>
</message>
<message>
<source>Dark system tray icon</source>
@@ -3824,28 +3858,28 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Use entry title to match windows for global Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Bruk tittel i oppføringa for å matche vindu ved global Autoskriv</translation>
</message>
<message>
<source>Use entry URL to match windows for global Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Bruk URL i oppføringa for å matche vindu ved global Autoskriv</translation>
</message>
<message>
<source>Always ask before performing Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Alltid spør før utførelse av Autoskriv</translation>
</message>
<message>
<source>Global Auto-Type shortcut</source>
- <translation type="unfinished"/>
+ <translation>Global Autoskriv-hurtigtast</translation>
</message>
<message>
<source>Auto-Type delay</source>
- <translation type="unfinished"/>
+ <translation>Autoskriv tidsforsinkelse</translation>
</message>
<message>
<source> ms</source>
<comment>Milliseconds</comment>
- <translation type="unfinished"/>
+ <translation>ms</translation>
</message>
<message>
<source>Startup</source>
@@ -3857,15 +3891,15 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Safely save database files (may be incompatible with Dropbox, etc)</source>
- <translation type="unfinished"/>
+ <translation>Sikker lagring av database-filer (kan være uforenelig med Dropbox, etc.)</translation>
</message>
<message>
<source>Backup database file before saving</source>
- <translation type="unfinished"/>
+ <translation>Sikkerhetskopier database-filen før lagring</translation>
</message>
<message>
<source>Entry Management</source>
- <translation type="unfinished"/>
+ <translation>Oppførings-administrasjon</translation>
</message>
<message>
<source>General</source>
@@ -3876,16 +3910,16 @@ Please unlock the selected database or choose another one which is unlocked.</so
<name>SettingsWidgetSecurity</name>
<message>
<source>Timeouts</source>
- <translation type="unfinished"/>
+ <translation>Tidsavbrudd</translation>
</message>
<message>
<source>Clear clipboard after</source>
- <translation type="unfinished"/>
+ <translation>Slett utklippstavlen etter</translation>
</message>
<message>
<source> sec</source>
<comment>Seconds</comment>
- <translation type="unfinished"/>
+ <translation>sek</translation>
</message>
<message>
<source>Lock databases after inactivity of</source>
@@ -3893,7 +3927,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Convenience</source>
- <translation type="unfinished"/>
+ <translation>Bekvemmelighet</translation>
</message>
<message>
<source>Lock databases when session is locked or lid is closed</source>
@@ -3905,90 +3939,90 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Don&apos;t require password repeat when it is visible</source>
- <translation type="unfinished"/>
+ <translation>Ikke krev gjentakelse av passord ved klartekst-visning</translation>
</message>
<message>
<source>Show passwords in cleartext by default</source>
- <translation type="unfinished"/>
+ <translation>Vis passord i klartekst som standard</translation>
</message>
<message>
<source>Hide passwords in the preview panel</source>
- <translation type="unfinished"/>
+ <translation>Skjul passord i forhåndsvisnings-panelet</translation>
</message>
<message>
<source>Hide entry notes by default</source>
- <translation type="unfinished"/>
+ <translation>Skjul notater i oppføringa som standard</translation>
</message>
<message>
<source>Privacy</source>
- <translation type="unfinished"/>
+ <translation>Personvern</translation>
</message>
<message>
<source>Use Google as fallback for downloading website icons</source>
- <translation type="unfinished"/>
+ <translation>Bruk Google som reserve ved nedlasting av nettsted-ikon</translation>
</message>
<message>
<source>Re-lock previously locked database after performing Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Lås tidligere låst database etter utført Autoskriv</translation>
</message>
</context>
<context>
<name>SetupTotpDialog</name>
<message>
<source>Setup TOTP</source>
- <translation type="unfinished"/>
+ <translation>Oppsett TOTP</translation>
</message>
<message>
<source>Key:</source>
- <translation type="unfinished"/>
+ <translation>Nøkkel:</translation>
</message>
<message>
<source>Default RFC 6238 token settings</source>
- <translation type="unfinished"/>
+ <translation>Standard RFC 6238 token innstillinger</translation>
</message>
<message>
<source>Steam token settings</source>
- <translation type="unfinished"/>
+ <translation>Steam token-innstillinger</translation>
</message>
<message>
<source>Use custom settings</source>
- <translation type="unfinished"/>
+ <translation>Bruk selvvalgt oppsett</translation>
</message>
<message>
<source>Note: Change these settings only if you know what you are doing.</source>
- <translation type="unfinished"/>
+ <translation>Merk: Endre disse innstillingene bare dersom du vet hva du gjør.</translation>
</message>
<message>
<source>Time step:</source>
- <translation type="unfinished"/>
+ <translation>Tidsintervall:</translation>
</message>
<message>
<source>8 digits</source>
- <translation type="unfinished"/>
+ <translation>8 siffer</translation>
</message>
<message>
<source>6 digits</source>
- <translation type="unfinished"/>
+ <translation>6 siffer</translation>
</message>
<message>
<source>Code size:</source>
- <translation type="unfinished"/>
+ <translation>Kodestørrelse:</translation>
</message>
<message>
<source> sec</source>
<comment>Seconds</comment>
- <translation type="unfinished"/>
+ <translation>sek</translation>
</message>
</context>
<context>
<name>TotpDialog</name>
<message>
<source>Timed Password</source>
- <translation type="unfinished"/>
+ <translation>Tidsbasert passord</translation>
</message>
<message>
<source>000000</source>
- <translation type="unfinished"/>
+ <translation>000000</translation>
</message>
<message>
<source>Copy</source>
@@ -3996,11 +4030,11 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Expires in</source>
- <translation type="unfinished"/>
+ <translation>Utløper om</translation>
</message>
<message>
<source>seconds</source>
- <translation type="unfinished"/>
+ <translation>sekunder</translation>
</message>
</context>
<context>
@@ -4045,15 +4079,15 @@ Please unlock the selected database or choose another one which is unlocked.</so
<name>main</name>
<message>
<source>Remove an entry from the database.</source>
- <translation type="unfinished"/>
+ <translation>Fjern oppføring fra databasen.</translation>
</message>
<message>
<source>Path of the database.</source>
- <translation type="unfinished"/>
+ <translation>Database-sti.</translation>
</message>
<message>
<source>Path of the entry to remove.</source>
- <translation type="unfinished"/>
+ <translation>Sti til oppføring som skal fjernes.</translation>
</message>
<message>
<source>KeePassXC - cross-platform password manager</source>
@@ -4061,23 +4095,23 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>filenames of the password databases to open (*.kdbx)</source>
- <translation type="unfinished"/>
+ <translation>Filnavn på passord-databasene som skal åpnes (*.kdbx)</translation>
</message>
<message>
<source>path to a custom config file</source>
- <translation type="unfinished"/>
+ <translation>Sti til tilpasset konfigurasjonsfil</translation>
</message>
<message>
<source>key file of the database</source>
- <translation type="unfinished"/>
+ <translation>Database-nøkkelfil</translation>
</message>
<message>
<source>read password of the database from stdin</source>
- <translation type="unfinished"/>
+ <translation>Les database-passord fra stdin</translation>
</message>
<message>
<source>Parent window handle</source>
- <translation type="unfinished"/>
+ <translation>Adresse til foreldre-vindu</translation>
</message>
</context>
</TS> \ No newline at end of file
diff --git a/share/translations/keepassx_nl_NL.ts b/share/translations/keepassx_nl_NL.ts
index 9f365e6ee..15bd21554 100644
--- a/share/translations/keepassx_nl_NL.ts
+++ b/share/translations/keepassx_nl_NL.ts
@@ -375,7 +375,7 @@ Geef aan of je toegang wilt verlenen of niet.</translation>
</message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
- <translation>Het spijt ons, maar KeePassXC-Browser wordt momenteel niet ondersteund voor tussentijdse versies.</translation>
+ <translation>Het spijt ons, maar KeePassXC-Browser wordt momenteel niet ondersteund voor Snap releases.</translation>
</message>
</context>
<context>
@@ -1361,7 +1361,7 @@ Wil je de wijzigingen samenvoegen?</translation>
</message>
<message>
<source>Press reveal to view or edit</source>
- <translation>Druk Tonen om te bekijken of bewerken</translation>
+ <translation>Druk Weergeven om te bekijken of bewerken</translation>
</message>
<message>
<source>Tomorrow</source>
@@ -1416,7 +1416,7 @@ Wil je de wijzigingen samenvoegen?</translation>
</message>
<message>
<source>Reveal</source>
- <translation>Tonen</translation>
+ <translation>Weergeven</translation>
</message>
<message>
<source>Attachments</source>
@@ -1470,7 +1470,7 @@ Wil je de wijzigingen samenvoegen?</translation>
<name>EditEntryWidgetHistory</name>
<message>
<source>Show</source>
- <translation>Tonen</translation>
+ <translation>Weergeven</translation>
</message>
<message>
<source>Restore</source>
@@ -1513,7 +1513,7 @@ Wil je de wijzigingen samenvoegen?</translation>
</message>
<message>
<source>Toggle the checkbox to reveal the notes section.</source>
- <translation>Schakelen aan om notities te tonen.</translation>
+ <translation>Selecteer om notities weer te geven.</translation>
</message>
<message>
<source>Username:</source>
@@ -3483,7 +3483,7 @@ Beschikbare opdrachten:
</message>
<message>
<source>Names of the attributes to show. This option can be specified more than once, with each attribute shown one-per-line in the given order. If no attributes are specified, a summary of the default attributes is given.</source>
- <translation>Namen van de te tonen kenmerken. Deze optie kan meer dan eens worden opgegeven, waarbij elk kenmerk op een regel wordt getoond in de opgegeven volgorde. Als er geen kenmerken worden opgegeven, wordt een samenvatting van de standaardkenmerken gegeven.</translation>
+ <translation>Namen van de weer te geven kenmerken. Deze optie kan meer dan eens worden opgegeven, waarbij elk kenmerk op een regel wordt getoond in de opgegeven volgorde. Als er geen kenmerken worden opgegeven, wordt een samenvatting van de standaardkenmerken gegeven.</translation>
</message>
<message>
<source>attribute</source>
@@ -3837,7 +3837,7 @@ Ontgrendel de geselecteerde database of kies een ontgrendelde database.</transla
</message>
<message>
<source>Show a system tray icon</source>
- <translation>Icoon in het systeemvak tonen</translation>
+ <translation>Icoon in het systeemvak weergeven</translation>
</message>
<message>
<source>Hide window to system tray when minimized</source>
diff --git a/share/translations/keepassx_pl.ts b/share/translations/keepassx_pl.ts
index 307ace9fd..1e9608734 100644
--- a/share/translations/keepassx_pl.ts
+++ b/share/translations/keepassx_pl.ts
@@ -3548,7 +3548,7 @@ Dostępne polecenia:
</message>
<message>
<source>Legacy Browser Integration</source>
- <translation>Integracja ze starą przeglądarką</translation>
+ <translation>Przestarzała integracja z przeglądarką</translation>
</message>
<message>
<source>Browser Integration</source>
diff --git a/share/translations/keepassx_pt_BR.ts b/share/translations/keepassx_pt_BR.ts
index a2d258e6a..1295e117d 100644
--- a/share/translations/keepassx_pt_BR.ts
+++ b/share/translations/keepassx_pt_BR.ts
@@ -23,11 +23,11 @@
</message>
<message>
<source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source>
- <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Ver Colaborações no GitHub&lt;/a&gt;</translation>
+ <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Ver colaborações no GitHub&lt;/a&gt;</translation>
</message>
<message>
<source>Debug Info</source>
- <translation>Informações de Depuração</translation>
+ <translation>Informações de depuração</translation>
</message>
<message>
<source>Include the following information whenever you report a bug:</source>
@@ -69,11 +69,11 @@ Kernel: %3 %4</translation>
</message>
<message>
<source>Project Maintainers:</source>
- <translation>Mantedores do Projeto:</translation>
+ <translation>Mantedores do projeto:</translation>
</message>
<message>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
- <translation>A equipe KeePassXC agradece especialmente a debfx pela criação do KeePassX original.</translation>
+ <translation>A equipe do KeePassXC agradece especialmente a debfx pela criação do KeePassX original.</translation>
</message>
<message>
<source>Build Type: %1
@@ -111,7 +111,7 @@ Selecione se deseja permitir o acesso.</translation>
<name>AgentSettingsWidget</name>
<message>
<source>Enable SSH Agent (requires restart)</source>
- <translation>Habilitar Agente SSH (requer reinicialização)</translation>
+ <translation>Habilitar agente SSH (requer reinicialização)</translation>
</message>
</context>
<context>
@@ -122,27 +122,27 @@ Selecione se deseja permitir o acesso.</translation>
</message>
<message>
<source>Auto-Type - KeePassXC</source>
- <translation>Auto-Digitação - KeePassXC</translation>
+ <translation>Autodigitação - KeePassXC</translation>
</message>
<message>
<source>Auto-Type</source>
- <translation>Auto-Digitação</translation>
+ <translation>Autodigitação</translation>
</message>
<message>
<source>The Syntax of your Auto-Type statement is incorrect!</source>
- <translation>A sintaxe da sua sequência de Auto-Digitação está incorreta!</translation>
+ <translation>A sintaxe da sua sequência de autodigitação está incorreta!</translation>
</message>
<message>
<source>This Auto-Type command contains a very long delay. Do you really want to proceed?</source>
- <translation>Este comando de Auto-Digitação contém um tempo de espera muito longo. Você tem certeza que deseja continuar?</translation>
+ <translation>Este comando de autodigitação contém um tempo de espera muito longo. Você tem certeza de que deseja continuar?</translation>
</message>
<message>
<source>This Auto-Type command contains very slow key presses. Do you really want to proceed?</source>
- <translation>Este comando Autotipo contém pressionamentos de teclas muito lentos. Você realmente deseja prosseguir?</translation>
+ <translation>Este comando de autodigitação contém pressionamentos de teclas muito lentos. Você tem certeza de que deseja continuar?</translation>
</message>
<message>
<source>This Auto-Type command contains arguments which are repeated very often. Do you really want to proceed?</source>
- <translation>Este comando Auto-Type contém os argumentos que são repetidos muitas vezes. Você realmente deseja prosseguir?</translation>
+ <translation>Este comando de autodigitação contém parâmetros que são repetidos muitas vezes. Você tem certeza de que deseja continuar?</translation>
</message>
</context>
<context>
@@ -183,11 +183,11 @@ Selecione se deseja permitir o acesso.</translation>
<name>AutoTypeSelectDialog</name>
<message>
<source>Auto-Type - KeePassXC</source>
- <translation>Auto-Digitação - KeePassXC</translation>
+ <translation>Autodigitação - KeePassXC</translation>
</message>
<message>
<source>Select entry to Auto-Type:</source>
- <translation>Escolha uma entrada para Auto-Digitar:</translation>
+ <translation>Escolha uma entrada para digitar automaticamente:</translation>
</message>
</context>
<context>
diff --git a/share/translations/keepassx_ro.ts b/share/translations/keepassx_ro.ts
index 9c5147380..5a6c5ae5c 100644
--- a/share/translations/keepassx_ro.ts
+++ b/share/translations/keepassx_ro.ts
@@ -360,11 +360,11 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Executable Files (*.exe);;All Files (*.*)</source>
- <translation type="unfinished"/>
+ <translation>Fișiere Executabile (*.exe);;Toate Fișierele (*.*)</translation>
</message>
<message>
<source>Executable Files (*)</source>
- <translation type="unfinished"/>
+ <translation>Fișiere Executabile (*)</translation>
</message>
<message>
<source>Select custom proxy location</source>
@@ -390,11 +390,11 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>Save and allow access</source>
- <translation type="unfinished"/>
+ <translation>Salvează și permite acces</translation>
</message>
<message>
<source>KeePassXC: Overwrite existing key?</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Suprascriere cheie existentă?</translation>
</message>
<message>
<source>A shared encryption key with the name &quot;%1&quot; already exists.
@@ -593,7 +593,7 @@ Please consider generating a new key file.</source>
</message>
<message>
<source>Codec</source>
- <translation type="unfinished"/>
+ <translation>Codec</translation>
</message>
<message>
<source>Text is qualified by</source>
@@ -641,7 +641,7 @@ Please consider generating a new key file.</source>
</message>
<message>
<source>Imported from CSV file</source>
- <translation type="unfinished"/>
+ <translation>Importat din fișier CSV</translation>
</message>
<message>
<source>Original data: </source>
@@ -797,7 +797,7 @@ You can now save it.</source>
</message>
<message>
<source>Encryption</source>
- <translation type="unfinished"/>
+ <translation>Criptare</translation>
</message>
<message>
<source>Number of rounds too high</source>
@@ -816,7 +816,7 @@ If you keep this number, your database may take hours or days (or even longer) t
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished"/>
+ <translation>Anulare</translation>
</message>
<message>
<source>Number of rounds too low</source>
@@ -852,7 +852,7 @@ If you keep this number, your database may be too easy to crack!</source>
<name>DatabaseSettingsWidgetEncryption</name>
<message>
<source>Encryption Algorithm:</source>
- <translation type="unfinished"/>
+ <translation>Algoritm Criptare:</translation>
</message>
<message>
<source>AES: 256 Bit (default)</source>
@@ -864,7 +864,7 @@ If you keep this number, your database may be too easy to crack!</source>
</message>
<message>
<source>Key Derivation Function:</source>
- <translation type="unfinished"/>
+ <translation>Funcție Derivare Cheie:</translation>
</message>
<message>
<source>Transform rounds:</source>
@@ -876,18 +876,18 @@ If you keep this number, your database may be too easy to crack!</source>
</message>
<message>
<source>Memory Usage:</source>
- <translation type="unfinished"/>
+ <translation>Utilizare Memorie:</translation>
</message>
<message>
<source>Parallelism:</source>
- <translation type="unfinished"/>
+ <translation>Paralelism:</translation>
</message>
</context>
<context>
<name>DatabaseSettingsWidgetGeneral</name>
<message>
<source>Database Meta Data</source>
- <translation type="unfinished"/>
+ <translation>Meta Date Bază de Date</translation>
</message>
<message>
<source>Database name:</source>
@@ -903,7 +903,7 @@ If you keep this number, your database may be too easy to crack!</source>
</message>
<message>
<source>History Settings</source>
- <translation type="unfinished"/>
+ <translation>Setări Istoric</translation>
</message>
<message>
<source>Max. history items:</source>
@@ -923,7 +923,7 @@ If you keep this number, your database may be too easy to crack!</source>
</message>
<message>
<source>Additional Database Settings</source>
- <translation type="unfinished"/>
+ <translation>Setări Adiționale Bază de Date</translation>
</message>
<message>
<source>Enable &amp;compression (recommended)</source>
@@ -1006,7 +1006,7 @@ Salvați modificările?</translation>
</message>
<message>
<source>Writing the database failed.</source>
- <translation type="unfinished"/>
+ <translation>Scrierea în baza de date a eșuat.</translation>
</message>
<message>
<source>Passwords</source>
@@ -1141,11 +1141,11 @@ Disable safe saves and try again?</source>
</message>
<message>
<source>File has changed</source>
- <translation type="unfinished"/>
+ <translation>Fișierul a fost modificat</translation>
</message>
<message>
<source>The database file has changed. Do you want to load the changes?</source>
- <translation type="unfinished"/>
+ <translation>Fișierul bazei de date a fost modificat. Doriți să încărcați ultimele modificări?</translation>
</message>
<message>
<source>Merge Request</source>
@@ -1264,7 +1264,7 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Icon</source>
- <translation type="unfinished"/>
+ <translation>Icon</translation>
</message>
<message>
<source>Auto-Type</source>
@@ -1583,7 +1583,7 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Icon</source>
- <translation type="unfinished"/>
+ <translation>Icon</translation>
</message>
<message>
<source>Properties</source>
@@ -1653,11 +1653,11 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Add custom icon</source>
- <translation type="unfinished"/>
+ <translation>Adaugă icon personalizat</translation>
</message>
<message>
<source>Delete custom icon</source>
- <translation type="unfinished"/>
+ <translation>Șterge icon personalizat</translation>
</message>
<message>
<source>Download favicon</source>
@@ -1665,7 +1665,7 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Unable to fetch favicon.</source>
- <translation type="unfinished"/>
+ <translation>Nu pot descărca favicon.</translation>
</message>
<message>
<source>Hint: You can enable Google as a fallback under Tools&gt;Settings&gt;Security</source>
@@ -1685,11 +1685,11 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Can&apos;t read icon</source>
- <translation type="unfinished"/>
+ <translation>Nu pot citi icon</translation>
</message>
<message>
<source>Custom icon already exists</source>
- <translation type="unfinished"/>
+ <translation>Icon personalizat deja există</translation>
</message>
<message>
<source>Confirm Delete</source>
@@ -1945,7 +1945,7 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Attachments (icon)</source>
- <translation type="unfinished"/>
+ <translation>Atașamente (icon)</translation>
</message>
</context>
<context>
@@ -2849,7 +2849,7 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>Writing the database failed.</source>
- <translation type="unfinished"/>
+ <translation>Scrierea în baza de date a eșuat.</translation>
</message>
<message>
<source>Please touch the button on your YubiKey!</source>
@@ -3645,7 +3645,7 @@ give it a unique name to identify and accept it.</source>
</message>
<message>
<source>KeePassXC: Overwrite existing key?</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC: Suprascriere cheie existentă?</translation>
</message>
<message>
<source>A shared encryption-key with the name &quot;%1&quot; already exists.
@@ -3918,7 +3918,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Use Google as fallback for downloading website icons</source>
- <translation type="unfinished"/>
+ <translation>Folosește Google ca variantă de rezervă pentru descărcare favicon site</translation>
</message>
<message>
<source>Re-lock previously locked database after performing Auto-Type</source>
diff --git a/share/translations/keepassx_uk.ts b/share/translations/keepassx_uk.ts
index b244f55c6..cf43f88ff 100644
--- a/share/translations/keepassx_uk.ts
+++ b/share/translations/keepassx_uk.ts
@@ -35,7 +35,7 @@
</message>
<message>
<source>Copy to clipboard</source>
- <translation>Скопіювати у буфер обміну</translation>
+ <translation>Скопіювати в кишеню</translation>
</message>
<message>
<source>Version %1
@@ -73,12 +73,13 @@ Kernel: %3 %4</source>
</message>
<message>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
- <translation type="unfinished"/>
+ <translation>Команда KeePassXC щиро дякує debfx за створення первісної версії KeePassX.</translation>
</message>
<message>
<source>Build Type: %1
</source>
- <translation type="unfinished"/>
+ <translation>Тип збірки: %1
+</translation>
</message>
</context>
<context>
@@ -103,7 +104,7 @@ Kernel: %3 %4</source>
<source>%1 has requested access to passwords for the following item(s).
Please select whether you want to allow access.</source>
<translation>%1 запросила доступ до гасел для таких записів(-у).
-Будь ласка, вкажіть чи хочете ви дозволити доступ?</translation>
+Будь ласка, вкажіть чи хочете Ви дозволити доступ?</translation>
</message>
</context>
<context>
@@ -211,7 +212,7 @@ Please select whether you want to allow access.</source>
<source>%1 has requested access to passwords for the following item(s).
Please select whether you want to allow access.</source>
<translation>%1 запросила доступ до гасел для таких записів(-у).
-Будь ласка, вкажіть чи хочете ви дозволити доступ?</translation>
+Будь ласка, вкажіть чи хочете Ви дозволити доступ?</translation>
</message>
</context>
<context>
@@ -374,7 +375,7 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
- <translation type="unfinished"/>
+ <translation>Вибачте, але переглядач KeePassXC поки що не працює у версіях Snap.</translation>
</message>
</context>
<context>
@@ -443,11 +444,11 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>KeePassXC: Removed keys from database</source>
- <translation>KeePassXC: ключі видалені зі сховища</translation>
+ <translation>KeePassXC: ключі видалено зі сховища</translation>
</message>
<message numerus="yes">
<source>Successfully removed %n encryption key(s) from KeePassXC settings.</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Успішно видалено %n шифрувальний ключ з налаштувань KeePassXC.</numerusform><numerusform>Успішно видалено %n шифрувальні ключа з налаштувань KeePassXC.</numerusform><numerusform>Успішно видалено %n шифрувальних ключів з налаштувань KeePassXC.</numerusform></translation>
</message>
<message>
<source>Removing stored permissions…</source>
@@ -459,11 +460,11 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>KeePassXC: Removed permissions</source>
- <translation>KeePassXC: привілеї видалені</translation>
+ <translation>KeePassXC: привілеї видалено</translation>
</message>
<message numerus="yes">
<source>Successfully removed permissions from %n entry(s).</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Успішно видалено привілеї для %n запису.</numerusform><numerusform>Успішно видалено привілеї для %n записів.</numerusform><numerusform>Успішно видалено привілеї для %n записів.</numerusform></translation>
</message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
@@ -788,7 +789,7 @@ Please consider generating a new key file.</source>
</message>
<message>
<source>Database opened fine. Nothing to do.</source>
- <translation>Сховище відкрите без помилок. Обробка не потрібна.</translation>
+ <translation>Сховище відкрито без помилок. Обробка не потрібна.</translation>
</message>
<message>
<source>Success</source>
@@ -797,8 +798,8 @@ Please consider generating a new key file.</source>
<message>
<source>The database has been successfully repaired
You can now save it.</source>
- <translation>Лагодження сховища успішно завершене.
-Тепер ви можете його зберегти.</translation>
+ <translation>Лагодження сховища успішно завершено.
+Тепер Ви можете його зберегти.</translation>
</message>
<message>
<source>Unable to repair the database.</source>
@@ -830,7 +831,7 @@ If you keep this number, your database may take hours or days (or even longer) t
</message>
<message>
<source>Understood, keep number</source>
- <translation>Зрозуміло, зберігайте число</translation>
+ <translation>Зрозуміло, кількість залишено</translation>
</message>
<message>
<source>Cancel</source>
@@ -860,12 +861,12 @@ If you keep this number, your database may be too easy to crack!</source>
<message numerus="yes">
<source> MiB</source>
<comment>Abbreviation for Mebibytes (KDF settings)</comment>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>МіБ</numerusform><numerusform>МіБ</numerusform><numerusform>МіБ</numerusform></translation>
</message>
<message numerus="yes">
<source> thread(s)</source>
<comment>Threads for parallel execution (KDF settings)</comment>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>потік</numerusform><numerusform>потоки</numerusform><numerusform>потоків</numerusform></translation>
</message>
</context>
<context>
@@ -1382,15 +1383,15 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Apply generated password?</source>
- <translation type="unfinished"/>
+ <translation>Застосувати створене гасло?</translation>
</message>
<message>
<source>Do you want to apply the generated password to this entry?</source>
- <translation type="unfinished"/>
+ <translation>Бажаєте застосувати створене гасло до цього запису?</translation>
</message>
<message>
<source>Entry updated successfully.</source>
- <translation type="unfinished"/>
+ <translation>Запис успішно оновлено.</translation>
</message>
</context>
<context>
@@ -1425,11 +1426,11 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Foreground Color:</source>
- <translation type="unfinished"/>
+ <translation>Колір переднього плану:</translation>
</message>
<message>
<source>Background Color:</source>
- <translation type="unfinished"/>
+ <translation> Колір тла:</translation>
</message>
</context>
<context>
@@ -1464,7 +1465,7 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Use a specific sequence for this association:</source>
- <translation type="unfinished"/>
+ <translation>Використовувати певну послідовність для цієї прив&apos;язки:</translation>
</message>
</context>
<context>
@@ -1569,7 +1570,7 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Copy to clipboard</source>
- <translation>Скопіювати у буфер обміну</translation>
+ <translation>Скопіювати в кишеню</translation>
</message>
<message>
<source>Private key</source>
@@ -1746,7 +1747,7 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Plugin Data</source>
- <translation type="unfinished"/>
+ <translation>Дані модуля</translation>
</message>
<message>
<source>Remove</source>
@@ -1754,20 +1755,21 @@ Do you want to merge your changes?</source>
</message>
<message>
<source>Delete plugin data?</source>
- <translation type="unfinished"/>
+ <translation>Видалити дані модуля?</translation>
</message>
<message>
<source>Do you really want to delete the selected plugin data?
This may cause the affected plugins to malfunction.</source>
- <translation type="unfinished"/>
+ <translation>Ви дійсно хочете видалити всі дані позначеного модуля?
+Це може призвести до порушень у роботі інших модулів.</translation>
</message>
<message>
<source>Key</source>
- <translation type="unfinished"/>
+ <translation>Ключ</translation>
</message>
<message>
<source>Value</source>
- <translation type="unfinished"/>
+ <translation>Значення</translation>
</message>
</context>
<context>
@@ -1817,7 +1819,7 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message numerus="yes">
<source>Are you sure you want to remove %n attachment(s)?</source>
- <translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
+ <translation><numerusform>Ви дійсно хочете видалити %n вкладення?</numerusform><numerusform>Ви дійсно хочете видалити %n вкладення?</numerusform><numerusform>Ви дійсно хочете видалити %n вкладень?</numerusform></translation>
</message>
<message>
<source>Confirm Remove</source>
@@ -1976,7 +1978,7 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Attachments (icon)</source>
- <translation type="unfinished"/>
+ <translation>Вкладення (значок)</translation>
</message>
</context>
<context>
@@ -2075,7 +2077,7 @@ This may cause the affected plugins to malfunction.</source>
</message>
<message>
<source>Wrong key or database file is corrupt.</source>
- <translation>Неправильний ключ або файл сховища пошкоджено.</translation>
+ <translation>Неправильний ключ або пошкоджене сховище.</translation>
</message>
</context>
<context>
@@ -2221,7 +2223,7 @@ This may cause the affected plugins to malfunction.</source>
<message>
<source>Invalid symmetric cipher IV size.</source>
<comment>IV = Initialization Vector for symmetric cipher</comment>
- <translation>Хибний розмір IV симетричного шифру.</translation>
+ <translation>Хибний розмір симетричного шифру IV.</translation>
</message>
<message>
<source>Unable to calculate master key</source>
@@ -2441,11 +2443,11 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>Unsupported encryption algorithm.</source>
- <translation>Алгоритм шифрування не підтримується.</translation>
+ <translation>Цей алгоритм шифрування не підтримується.</translation>
</message>
<message>
<source>Unsupported KeePass database version.</source>
- <translation>Версія сховища KeePass не підтримується.</translation>
+ <translation>Ця версія сховища KeePass не підтримується.</translation>
</message>
<message>
<source>Unable to read encryption IV</source>
@@ -2486,7 +2488,7 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>Wrong key or database file is corrupt.</source>
- <translation>Неправильний ключ або файл сховища пошкоджено.</translation>
+ <translation>Неправильний ключ або пошкоджене сховище.</translation>
</message>
<message>
<source>Key transformation failed</source>
@@ -2655,7 +2657,7 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>Copy att&amp;ribute to clipboard</source>
- <translation>Копіювати атрибут до буферу обміну</translation>
+ <translation>Копіювати атрибут до кишені</translation>
</message>
<message>
<source>Time-based one-time password</source>
@@ -2743,7 +2745,7 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>&amp;Find</source>
- <translation>Пошук</translation>
+ <translation>Знайти</translation>
</message>
<message>
<source>Copy &amp;username</source>
@@ -2751,7 +2753,7 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>Copy username to clipboard</source>
- <translation>Копіювати ім’я користувача в буфер обміну</translation>
+ <translation>Копіювати ім’я користувача в кишеню</translation>
</message>
<message>
<source>Cop&amp;y password</source>
@@ -2759,7 +2761,7 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message>
<message>
<source>Copy password to clipboard</source>
- <translation>Копіювати гасло в буфер обміну</translation>
+ <translation>Копіювати гасло в кишеню</translation>
</message>
<message>
<source>&amp;Settings</source>
@@ -2978,23 +2980,23 @@ This version is not meant for production use.</source>
</message>
<message>
<source>Unsupported key type: %1</source>
- <translation type="unfinished"/>
+ <translation>Непідтримуваний вид ключа: %1</translation>
</message>
<message>
<source>Unknown cipher: %1</source>
- <translation type="unfinished"/>
+ <translation>Невідомий шифр: %1</translation>
</message>
<message>
<source>Cipher IV is too short for MD5 kdf</source>
- <translation type="unfinished"/>
+ <translation>Шифр IV занадто короткий для ФОК MD5</translation>
</message>
<message>
<source>Unknown KDF: %1</source>
- <translation type="unfinished"/>
+ <translation>Невідома ФОК: %1</translation>
</message>
<message>
<source>Unknown key type: %1</source>
- <translation type="unfinished"/>
+ <translation>Невідомий тип ключа: %1</translation>
</message>
</context>
<context>
@@ -3372,7 +3374,7 @@ Using default port 19455.</source>
</message>
<message>
<source>Timeout in seconds before clearing the clipboard.</source>
- <translation>Час очікування у </translation>
+ <translation>Час очікування перед очищенням кишені.</translation>
</message>
<message>
<source>Edit an entry.</source>
@@ -3468,7 +3470,7 @@ Available commands:
</message>
<message>
<source>Path of the database to merge from.</source>
- <translation>Шлях до сховища, яке об&apos;єднати.</translation>
+ <translation>Шлях до сховища, яке підлягає об&apos;єднанню.</translation>
</message>
<message>
<source>Use the same credentials for both database files.</source>
@@ -3476,7 +3478,7 @@ Available commands:
</message>
<message>
<source>Key file of the database to merge from.</source>
- <translation>Файл ключа для сховища, з якого треба взяти дані для об&apos;єднання.</translation>
+ <translation>Файл ключа для сховища, яке підлягає об&apos;єднанню.</translation>
</message>
<message>
<source>Show an entry&apos;s information.</source>
@@ -3570,48 +3572,49 @@ Available commands:
</message>
<message>
<source>Generate a new random diceware passphrase.</source>
- <translation type="unfinished"/>
+ <translation>Створити новий вираз гасла методом гральних кісточок (diceware).</translation>
</message>
<message>
<source>Word count for the diceware passphrase.</source>
- <translation type="unfinished"/>
+ <translation>Кількість слів у виразі гасла.</translation>
</message>
<message>
<source>count</source>
- <translation type="unfinished"/>
+ <translation>кількість</translation>
</message>
<message>
<source>Wordlist for the diceware generator.
[Default: EFF English]</source>
- <translation type="unfinished"/>
+ <translation>Список слів для виробника гасел методом diceware.
+[Типово: англійська версія EFF]</translation>
</message>
<message>
<source>Generate a new random password.</source>
- <translation type="unfinished"/>
+ <translation>Створити нове випадкове гасло.</translation>
</message>
<message>
<source>Length of the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Довжина створюваного гасла.</translation>
</message>
<message>
<source>Use lowercase characters in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Використовувати малі літери для створення гасла.</translation>
</message>
<message>
<source>Use uppercase characters in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Використовувати великі літери для створення гасла.</translation>
</message>
<message>
<source>Use numbers in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Використовувати числа для створення гасла.</translation>
</message>
<message>
<source>Use special characters in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Використовувати спеціальні символи для створення гасла.</translation>
</message>
<message>
<source>Use extended ASCII in the generated password.</source>
- <translation type="unfinished"/>
+ <translation>Використовувати розширені ASCII для створення гасла.</translation>
</message>
</context>
<context>
@@ -3652,7 +3655,7 @@ Available commands:
<name>SearchWidget</name>
<message>
<source>Search...</source>
- <translation>Шукати...</translation>
+ <translation>Знайти...</translation>
</message>
<message>
<source>Search</source>
@@ -3715,11 +3718,11 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>KeePassXC: Removed keys from database</source>
- <translation>KeePassXC: ключі видалені зі сховища</translation>
+ <translation>KeePassXC: ключі видалено зі сховища</translation>
</message>
<message numerus="yes">
<source>Successfully removed %n encryption-key(s) from KeePassX/Http Settings.</source>
- <translation><numerusform>Успішно видалив %n шифрувальний ключ з HTTP налаштувань KeePassX.</numerusform><numerusform>Успішно видалив %n шифрувальних ключа з HTTP налаштувань KeePassX.</numerusform><numerusform>Успішно видалив %n шифрувальних ключів з HTTP налаштувань KeePassX.</numerusform></translation>
+ <translation><numerusform>Успішно видалено %n шифрувальний ключ з HTTP налаштувань KeePassX.</numerusform><numerusform>Успішно видалено %n шифрувальних ключа з HTTP налаштувань KeePassX.</numerusform><numerusform>Успішно видалено %n шифрувальних ключів з HTTP налаштувань KeePassX.</numerusform></translation>
</message>
<message>
<source>KeePassXC: No keys found</source>
@@ -3747,11 +3750,11 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>KeePassXC: Removed permissions</source>
- <translation>KeePassXC: привілеї видалені</translation>
+ <translation>KeePassXC: привілеї видалено</translation>
</message>
<message numerus="yes">
<source>Successfully removed permissions from %n entries.</source>
- <translation><numerusform>Успішно видалив привілеї для %n запису.</numerusform><numerusform>Успішно видалив привілеї для %n записів.</numerusform><numerusform>Успішно видалив привілеї для %n записів.</numerusform></translation>
+ <translation><numerusform>Успішно видалено привілеї для %n запису.</numerusform><numerusform>Успішно видалено привілеї для %n записів.</numerusform><numerusform>Успішно видалено привілеї для %n записів.</numerusform></translation>
</message>
<message>
<source>KeePassXC: No entry with permissions found!</source>
@@ -3817,7 +3820,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Minimize when copying to clipboard</source>
- <translation>Згортати при копіюванні до буфера обміну</translation>
+ <translation>Згортати при копіюванні до кишені</translation>
</message>
<message>
<source>Minimize window at application startup</source>
@@ -3917,7 +3920,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Clear clipboard after</source>
- <translation>Очищати буфер обміну через</translation>
+ <translation>Очищати кишеню через</translation>
</message>
<message>
<source> sec</source>
@@ -3966,7 +3969,7 @@ Please unlock the selected database or choose another one which is unlocked.</so
</message>
<message>
<source>Re-lock previously locked database after performing Auto-Type</source>
- <translation type="unfinished"/>
+ <translation>Заблоковувати попередньо заблоковане сховище після завершення автозаповнення</translation>
</message>
</context>
<context>
diff --git a/share/translations/keepassx_zh_CN.ts b/share/translations/keepassx_zh_CN.ts
index 5fd915e92..ad90b9e8a 100644
--- a/share/translations/keepassx_zh_CN.ts
+++ b/share/translations/keepassx_zh_CN.ts
@@ -73,7 +73,7 @@ CPU 架构:%2
</message>
<message>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
- <translation type="unfinished"/>
+ <translation>KeePassXC 团队特别感谢 debfx 开发了最初版 KeePassX</translation>
</message>
<message>
<source>Build Type: %1
@@ -255,7 +255,7 @@ Please select whether you want to allow access.</source>
<message>
<source>Show a &amp;notification when credentials are requested</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>当请求凭据时显示通知 (&amp;N)</translation>
</message>
<message>
<source>Re&amp;quest to unlock the database if it is locked</source>
@@ -280,12 +280,12 @@ Please select whether you want to allow access.</source>
<message>
<source>Sort &amp;matching credentials by title</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>按照名称排列匹配的凭据</translation>
</message>
<message>
<source>Sort matching credentials by &amp;username</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>根据用户名排列匹配的凭据</translation>
</message>
<message>
<source>&amp;Disconnect all browsers</source>
@@ -293,7 +293,7 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Forget all remembered &amp;permissions</source>
- <translation type="unfinished"/>
+ <translation>取消所有记住的权限</translation>
</message>
<message>
<source>Advanced</source>
@@ -302,7 +302,7 @@ Please select whether you want to allow access.</source>
<message>
<source>Never &amp;ask before accessing credentials</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>读取凭据时不再询问</translation>
</message>
<message>
<source>Never ask before &amp;updating credentials</source>
@@ -316,7 +316,7 @@ Please select whether you want to allow access.</source>
<message>
<source>Searc&amp;h in all opened databases for matching credentials</source>
<extracomment>Credentials mean login data requested via browser extension</extracomment>
- <translation type="unfinished"/>
+ <translation>在所有打开的的数据库中搜索相符的凭据</translation>
</message>
<message>
<source>Automatically creating or updating string fields is not supported.</source>
@@ -328,11 +328,11 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Updates KeePassXC or keepassxc-proxy binary path automatically to native messaging scripts on startup.</source>
- <translation type="unfinished"/>
+ <translation>启动时自动将 KeePassXC 或 keepassxc-proxy 执行文件路径更新为 native messaging 脚本。</translation>
</message>
<message>
<source>Update &amp;native messaging manifest files at startup</source>
- <translation type="unfinished"/>
+ <translation>启动时更新 native messaging 的 manifest 文件</translation>
</message>
<message>
<source>Support a proxy application between KeePassXC and browser extension.</source>
@@ -340,16 +340,16 @@ Please select whether you want to allow access.</source>
</message>
<message>
<source>Use a &amp;proxy application between KeePassXC and browser extension</source>
- <translation type="unfinished"/>
+ <translation>在 KeePassXC 与浏览器扩展之间使用代理程序</translation>
</message>
<message>
<source>Use a custom proxy location if you installed a proxy manually.</source>
- <translation type="unfinished"/>
+ <translation>如果手工安装了代理,请设置自定义代理的路径。</translation>
</message>
<message>
<source>Use a &amp;custom proxy location</source>
<comment>Meant is the proxy for KeePassXC-Browser</comment>
- <translation type="unfinished"/>
+ <translation>设置自定义代理路径</translation>
</message>
<message>
<source>Browse...</source>
diff --git a/snapcraft.yaml b/snapcraft.yaml
index 7fe9f9726..16810cd5c 100644
--- a/snapcraft.yaml
+++ b/snapcraft.yaml
@@ -1,5 +1,5 @@
name: keepassxc
-version: 2.3.1
+version: 2.3.2
grade: stable
summary: Community-driven port of the Windows application “KeePass Password Safe”
description: |
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b3c7a650f..61f444e51 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -202,9 +202,6 @@ add_feature_info(SSHAgent WITH_XC_SSHAGENT "SSH agent integration compatible wit
add_feature_info(YubiKey WITH_XC_YUBIKEY "YubiKey HMAC-SHA1 challenge-response")
add_subdirectory(http)
-if(WITH_XC_NETWORKING)
- find_package(CURL REQUIRED)
-endif()
set(BROWSER_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/browser)
add_subdirectory(browser)
@@ -279,7 +276,7 @@ if (UNIX AND NOT APPLE)
target_link_libraries(keepassx_core Qt5::DBus)
endif()
if(MINGW)
- target_link_libraries(keepassx_core Wtsapi32.lib)
+ target_link_libraries(keepassx_core Wtsapi32.lib Ws2_32.lib)
endif()
if(MINGW)
diff --git a/src/autotype/AutoType.cpp b/src/autotype/AutoType.cpp
index aa8064bac..d2d33ea53 100644
--- a/src/autotype/AutoType.cpp
+++ b/src/autotype/AutoType.cpp
@@ -140,13 +140,6 @@ QStringList AutoType::windowTitles()
return m_plugin->windowTitles();
}
-void AutoType::resetInAutoType()
-{
- m_inAutoType.unlock();
-
- emit autotypeRejected();
-}
-
void AutoType::raiseWindow()
{
#if defined(Q_OS_MAC)
@@ -199,9 +192,14 @@ int AutoType::callEventFilter(void* event)
*/
void AutoType::executeAutoTypeActions(const Entry* entry, QWidget* hideWindow, const QString& sequence, WId window)
{
+ if (!m_inAutoType.tryLock()) {
+ return;
+ }
+
// no edit to the sequence beyond this point
if (!verifyAutoTypeSyntax(sequence)) {
emit autotypeRejected();
+ m_inAutoType.unlock();
return;
}
@@ -210,6 +208,7 @@ void AutoType::executeAutoTypeActions(const Entry* entry, QWidget* hideWindow, c
if (!parseActions(sequence, entry, actions)) {
emit autotypeRejected();
+ m_inAutoType.unlock();
return;
}
@@ -221,7 +220,7 @@ void AutoType::executeAutoTypeActions(const Entry* entry, QWidget* hideWindow, c
#endif
}
- Tools::wait(m_plugin->initialTimeout());
+ Tools::wait(qMax(100, config()->get("AutoTypeStartDelay", 500).toInt()));
if (!window) {
window = m_plugin->activeWindow();
@@ -233,6 +232,7 @@ void AutoType::executeAutoTypeActions(const Entry* entry, QWidget* hideWindow, c
if (m_plugin->activeWindow() != window) {
qWarning("Active window changed, interrupting auto-type.");
emit autotypeRejected();
+ m_inAutoType.unlock();
return;
}
@@ -242,6 +242,8 @@ void AutoType::executeAutoTypeActions(const Entry* entry, QWidget* hideWindow, c
// emit signal only if autotype performed correctly
emit autotypePerformed();
+
+ m_inAutoType.unlock();
}
/**
@@ -259,13 +261,7 @@ void AutoType::performAutoType(const Entry* entry, QWidget* hideWindow)
return;
}
- if (!m_inAutoType.tryLock()) {
- return;
- }
-
executeAutoTypeActions(entry, hideWindow, sequences.first());
-
- m_inAutoType.unlock();
}
/**
@@ -278,13 +274,14 @@ void AutoType::performGlobalAutoType(const QList<Database*>& dbList)
return;
}
- QString windowTitle = m_plugin->activeWindowTitle();
-
- if (windowTitle.isEmpty()) {
+ if (!m_inGlobalAutoTypeDialog.tryLock()) {
return;
}
- if (!m_inAutoType.tryLock()) {
+ QString windowTitle = m_plugin->activeWindowTitle();
+
+ if (windowTitle.isEmpty()) {
+ m_inGlobalAutoTypeDialog.unlock();
return;
}
@@ -303,8 +300,6 @@ void AutoType::performGlobalAutoType(const QList<Database*>& dbList)
}
if (matchList.isEmpty()) {
- m_inAutoType.unlock();
-
if (qobject_cast<QApplication*>(QCoreApplication::instance())) {
auto* msgBox = new QMessageBox();
msgBox->setAttribute(Qt::WA_DeleteOnClose);
@@ -318,16 +313,20 @@ void AutoType::performGlobalAutoType(const QList<Database*>& dbList)
msgBox->activateWindow();
}
+ m_inGlobalAutoTypeDialog.unlock();
emit autotypeRejected();
} else if ((matchList.size() == 1) && !config()->get("security/autotypeask").toBool()) {
executeAutoTypeActions(matchList.first().entry, nullptr, matchList.first().sequence);
- m_inAutoType.unlock();
+ m_inGlobalAutoTypeDialog.unlock();
} else {
m_windowFromGlobal = m_plugin->activeWindow();
auto* selectDialog = new AutoTypeSelectDialog();
+
+ // connect slots, both of which must unlock the m_inGlobalAutoTypeDialog mutex
connect(selectDialog, SIGNAL(matchActivated(AutoTypeMatch)),
SLOT(performAutoTypeFromGlobal(AutoTypeMatch)));
- connect(selectDialog, SIGNAL(rejected()), SLOT(resetInAutoType()));
+ connect(selectDialog, SIGNAL(rejected()), SLOT(autoTypeRejectedFromGlobal()));
+
selectDialog->setMatchList(matchList);
#if defined(Q_OS_MAC)
m_plugin->raiseOwnWindow();
@@ -341,14 +340,22 @@ void AutoType::performGlobalAutoType(const QList<Database*>& dbList)
void AutoType::performAutoTypeFromGlobal(AutoTypeMatch match)
{
- // We don't care about the result here, the mutex should already be locked. Now it's locked for sure
- m_inAutoType.tryLock();
-
m_plugin->raiseWindow(m_windowFromGlobal);
-
executeAutoTypeActions(match.entry, nullptr, match.sequence, m_windowFromGlobal);
- m_inAutoType.unlock();
+ // make sure the mutex is definitely locked before we unlock it
+ Q_UNUSED(m_inGlobalAutoTypeDialog.tryLock());
+ m_inGlobalAutoTypeDialog.unlock();
+}
+
+void AutoType::autoTypeRejectedFromGlobal()
+{
+ // this slot can be called twice when the selection dialog is deleted,
+ // so make sure the mutex is locked before we try unlocking it
+ Q_UNUSED(m_inGlobalAutoTypeDialog.tryLock());
+ m_inGlobalAutoTypeDialog.unlock();
+
+ emit autotypeRejected();
}
/**
@@ -358,7 +365,7 @@ bool AutoType::parseActions(const QString& actionSequence, const Entry* entry, Q
{
QString tmpl;
bool inTmpl = false;
- m_autoTypeDelay = config()->get("AutoTypeDelay").toInt();
+ m_autoTypeDelay = qMax(config()->get("AutoTypeDelay").toInt(), 0);
QString sequence = actionSequence;
sequence.replace("{{}", "{LEFTBRACE}");
diff --git a/src/autotype/AutoType.h b/src/autotype/AutoType.h
index 98a7bd7fa..55adac7d1 100644
--- a/src/autotype/AutoType.h
+++ b/src/autotype/AutoType.h
@@ -69,7 +69,7 @@ signals:
private slots:
void performAutoTypeFromGlobal(AutoTypeMatch match);
- void resetInAutoType();
+ void autoTypeRejectedFromGlobal();
void unloadPlugin();
private:
@@ -88,6 +88,7 @@ private:
bool windowMatches(const QString& windowTitle, const QString& windowPattern);
QMutex m_inAutoType;
+ QMutex m_inGlobalAutoTypeDialog;
int m_autoTypeDelay;
Qt::Key m_currentGlobalKey;
Qt::KeyboardModifiers m_currentGlobalModifiers;
diff --git a/src/autotype/AutoTypePlatformPlugin.h b/src/autotype/AutoTypePlatformPlugin.h
index 2945e98c5..96e947a0b 100644
--- a/src/autotype/AutoTypePlatformPlugin.h
+++ b/src/autotype/AutoTypePlatformPlugin.h
@@ -33,7 +33,6 @@ public:
virtual bool registerGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers) = 0;
virtual void unregisterGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers) = 0;
virtual int platformEventFilter(void* event) = 0;
- virtual int initialTimeout() = 0;
virtual bool raiseWindow(WId window) = 0;
virtual void unload() {}
diff --git a/src/autotype/mac/AutoTypeMac.cpp b/src/autotype/mac/AutoTypeMac.cpp
index ffd3c227c..d8fcf6d7f 100644
--- a/src/autotype/mac/AutoTypeMac.cpp
+++ b/src/autotype/mac/AutoTypeMac.cpp
@@ -154,11 +154,6 @@ AutoTypeExecutor* AutoTypePlatformMac::createExecutor()
return new AutoTypeExecutorMac(this);
}
-int AutoTypePlatformMac::initialTimeout()
-{
- return 500;
-}
-
//
// Activate window by process id
//
diff --git a/src/autotype/mac/AutoTypeMac.h b/src/autotype/mac/AutoTypeMac.h
index c554fa6e4..d2c224784 100644
--- a/src/autotype/mac/AutoTypeMac.h
+++ b/src/autotype/mac/AutoTypeMac.h
@@ -42,7 +42,6 @@ public:
bool registerGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers) override;
void unregisterGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers) override;
int platformEventFilter(void* event) override;
- int initialTimeout() override;
bool raiseWindow(WId pid) override;
AutoTypeExecutor* createExecutor() override;
diff --git a/src/autotype/test/AutoTypeTest.cpp b/src/autotype/test/AutoTypeTest.cpp
index 0eaf71602..e2ae7c692 100644
--- a/src/autotype/test/AutoTypeTest.cpp
+++ b/src/autotype/test/AutoTypeTest.cpp
@@ -103,11 +103,6 @@ void AutoTypePlatformTest::addActionKey(AutoTypeKey* action)
m_actionChars.append(keyToString(action->key));
}
-int AutoTypePlatformTest::initialTimeout()
-{
- return 0;
-}
-
bool AutoTypePlatformTest::raiseWindow(WId window)
{
Q_UNUSED(window);
diff --git a/src/autotype/test/AutoTypeTest.h b/src/autotype/test/AutoTypeTest.h
index d9a86c3de..d434c4d34 100644
--- a/src/autotype/test/AutoTypeTest.h
+++ b/src/autotype/test/AutoTypeTest.h
@@ -42,7 +42,6 @@ public:
bool registerGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers) override;
void unregisterGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers) override;
int platformEventFilter(void* event) override;
- int initialTimeout() override;
bool raiseWindow(WId window) override;
AutoTypeExecutor* createExecutor() override;
diff --git a/src/autotype/windows/AutoTypeWindows.cpp b/src/autotype/windows/AutoTypeWindows.cpp
index 3ff2343b9..bcb610f0f 100644
--- a/src/autotype/windows/AutoTypeWindows.cpp
+++ b/src/autotype/windows/AutoTypeWindows.cpp
@@ -109,11 +109,6 @@ AutoTypeExecutor* AutoTypePlatformWin::createExecutor()
return new AutoTypeExecutorWin(this);
}
-int AutoTypePlatformWin::initialTimeout()
-{
- return 500;
-}
-
//
// Set foreground window
//
diff --git a/src/autotype/windows/AutoTypeWindows.h b/src/autotype/windows/AutoTypeWindows.h
index 88b9a9fd2..6d38a2508 100644
--- a/src/autotype/windows/AutoTypeWindows.h
+++ b/src/autotype/windows/AutoTypeWindows.h
@@ -39,7 +39,6 @@ public:
bool registerGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers) override;
void unregisterGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers) override;
int platformEventFilter(void* event) override;
- int initialTimeout() override;
bool raiseWindow(WId window) override;
AutoTypeExecutor* createExecutor() override;
diff --git a/src/autotype/xcb/AutoTypeXCB.cpp b/src/autotype/xcb/AutoTypeXCB.cpp
index 1946c8883..cd5e8acdc 100644
--- a/src/autotype/xcb/AutoTypeXCB.cpp
+++ b/src/autotype/xcb/AutoTypeXCB.cpp
@@ -844,12 +844,6 @@ void AutoTypeExecutorX11::execClearField(AutoTypeClearField* action = nullptr)
nanosleep(&ts, nullptr);
}
-
-int AutoTypePlatformX11::initialTimeout()
-{
- return 500;
-}
-
bool AutoTypePlatformX11::raiseWindow(WId window)
{
if (m_atomNetActiveWindow == None) {
diff --git a/src/autotype/xcb/AutoTypeXCB.h b/src/autotype/xcb/AutoTypeXCB.h
index 600e001aa..4f1d9a3d6 100644
--- a/src/autotype/xcb/AutoTypeXCB.h
+++ b/src/autotype/xcb/AutoTypeXCB.h
@@ -51,7 +51,6 @@ public:
bool registerGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers) override;
void unregisterGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers) override;
int platformEventFilter(void* event) override;
- int initialTimeout() override;
bool raiseWindow(WId window) override;
AutoTypeExecutor* createExecutor() override;
diff --git a/src/browser/BrowserAction.cpp b/src/browser/BrowserAction.cpp
index b15d8ed59..96090258a 100755
--- a/src/browser/BrowserAction.cpp
+++ b/src/browser/BrowserAction.cpp
@@ -20,6 +20,7 @@
#include <QJsonParseError>
#include "BrowserAction.h"
#include "BrowserSettings.h"
+#include "NativeMessagingBase.h"
#include "sodium.h"
#include "sodium/crypto_box.h"
#include "sodium/randombytes.h"
@@ -239,9 +240,17 @@ QJsonObject BrowserAction::handleGetLogins(const QJsonObject& json, const QStrin
return getErrorReply(action, ERROR_KEEPASS_NO_URL_PROVIDED);
}
+ const QJsonArray keys = decrypted.value("keys").toArray();
+
+ StringPairList keyList;
+ for (const QJsonValue val : keys) {
+ const QJsonObject keyObject = val.toObject();
+ keyList.push_back(qMakePair(keyObject.value("id").toString(), keyObject.value("key").toString()));
+ }
+
const QString id = decrypted.value("id").toString();
const QString submit = decrypted.value("submitUrl").toString();
- const QJsonArray users = m_browserService.findMatchingEntries(id, url, submit, "");
+ const QJsonArray users = m_browserService.findMatchingEntries(id, url, submit, "", keyList);
if (users.isEmpty()) {
return getErrorReply(action, ERROR_KEEPASS_NO_LOGINS_FOUND);
@@ -456,7 +465,7 @@ QString BrowserAction::encrypt(const QString plaintext, const QString nonce)
std::vector<unsigned char> sk(sa.cbegin(), sa.cend());
std::vector<unsigned char> e;
- e.resize(max_length);
+ e.resize(NATIVE_MSG_MAX_LENGTH);
if (m.empty() || n.empty() || ck.empty() || sk.empty()) {
return QString();
@@ -484,7 +493,7 @@ QByteArray BrowserAction::decrypt(const QString encrypted, const QString nonce)
std::vector<unsigned char> sk(sa.cbegin(), sa.cend());
std::vector<unsigned char> d;
- d.resize(max_length);
+ d.resize(NATIVE_MSG_MAX_LENGTH);
if (m.empty() || n.empty() || ck.empty() || sk.empty()) {
return QByteArray();
diff --git a/src/browser/BrowserOptionDialog.cpp b/src/browser/BrowserOptionDialog.cpp
index 693e62d26..bcf96a85f 100755
--- a/src/browser/BrowserOptionDialog.cpp
+++ b/src/browser/BrowserOptionDialog.cpp
@@ -67,7 +67,6 @@ void BrowserOptionDialog::loadSettings()
// hide unimplemented options
// TODO: fix this
m_ui->showNotification->hide();
- m_ui->bestMatchOnly->hide();
if (settings.sortByUsername()) {
m_ui->sortByUsername->setChecked(true);
diff --git a/src/browser/BrowserService.cpp b/src/browser/BrowserService.cpp
index fb89e8bcb..af35315a0 100644
--- a/src/browser/BrowserService.cpp
+++ b/src/browser/BrowserService.cpp
@@ -47,7 +47,8 @@ static int KEEPASSXCBROWSER_DEFAULT_ICON = 1;
BrowserService::BrowserService(DatabaseTabWidget* parent) :
m_dbTabWidget(parent),
- m_dialogActive(false)
+ m_dialogActive(false),
+ m_bringToFrontRequested(false)
{
connect(m_dbTabWidget, SIGNAL(databaseLocked(DatabaseWidget*)), this, SLOT(databaseLocked(DatabaseWidget*)));
connect(m_dbTabWidget, SIGNAL(databaseUnlocked(DatabaseWidget*)), this, SLOT(databaseUnlocked(DatabaseWidget*)));
@@ -82,6 +83,7 @@ bool BrowserService::openDatabase(bool triggerUnlock)
if (triggerUnlock) {
KEEPASSXC_MAIN_WINDOW->bringToFront();
+ m_bringToFrontRequested = true;
}
return false;
@@ -224,7 +226,7 @@ QString BrowserService::getKey(const QString& id)
return config->attributes()->value(QLatin1String(ASSOCIATE_KEY_PREFIX) + id);
}
-QJsonArray BrowserService::findMatchingEntries(const QString& id, const QString& url, const QString& submitUrl, const QString& realm)
+QJsonArray BrowserService::findMatchingEntries(const QString& id, const QString& url, const QString& submitUrl, const QString& realm, const StringPairList& keyList)
{
QJsonArray result;
if (thread() != QThread::currentThread()) {
@@ -233,7 +235,8 @@ QJsonArray BrowserService::findMatchingEntries(const QString& id, const QString&
Q_ARG(const QString&, id),
Q_ARG(const QString&, url),
Q_ARG(const QString&, submitUrl),
- Q_ARG(const QString&, realm));
+ Q_ARG(const QString&, realm),
+ Q_ARG(const StringPairList&, keyList));
return result;
}
@@ -244,7 +247,7 @@ QJsonArray BrowserService::findMatchingEntries(const QString& id, const QString&
// Check entries for authorization
QList<Entry*> pwEntriesToConfirm;
QList<Entry*> pwEntries;
- for (Entry* entry : searchEntries(url)) {
+ for (Entry* entry : searchEntries(url, keyList)) {
switch (checkAccess(entry, host, submitHost, realm)) {
case Denied:
continue;
@@ -340,12 +343,18 @@ void BrowserService::updateEntry(const QString& id, const QString& uuid, const Q
}
if (username.compare(login, Qt::CaseSensitive) != 0 || entry->password().compare(password, Qt::CaseSensitive) != 0) {
- QMessageBox::StandardButton dialogResult = QMessageBox::No;
+ int dialogResult = QMessageBox::No;
if (!BrowserSettings::alwaysAllowUpdate()) {
- dialogResult = QMessageBox::warning(0, tr("KeePassXC: Update Entry"),
- tr("Do you want to update the information in %1 - %2?")
- .arg(QUrl(url).host()).arg(username),
- QMessageBox::Yes|QMessageBox::No);
+ QMessageBox msgBox;
+ msgBox.setWindowTitle(tr("KeePassXC: Update Entry"));
+ msgBox.setText(tr("Do you want to update the information in %1 - %2?").arg(QUrl(url).host()).arg(username));
+ msgBox.setStandardButtons(QMessageBox::Yes);
+ msgBox.addButton(QMessageBox::No);
+ msgBox.setDefaultButton(QMessageBox::No);
+ msgBox.setWindowFlags(Qt::WindowStaysOnTopHint);
+ msgBox.activateWindow();
+ msgBox.raise();
+ dialogResult = msgBox.exec();
}
if (BrowserSettings::alwaysAllowUpdate() || dialogResult == QMessageBox::Yes) {
@@ -381,7 +390,7 @@ QList<Entry*> BrowserService::searchEntries(Database* db, const QString& hostnam
return entries;
}
-QList<Entry*> BrowserService::searchEntries(const QString& text)
+QList<Entry*> BrowserService::searchEntries(const QString& text, const StringPairList& keyList)
{
// Get the list of databases to search
QList<Database*> databases;
@@ -390,7 +399,16 @@ QList<Entry*> BrowserService::searchEntries(const QString& text)
for (int i = 0; i < count; ++i) {
if (DatabaseWidget* dbWidget = qobject_cast<DatabaseWidget*>(m_dbTabWidget->widget(i))) {
if (Database* db = dbWidget->database()) {
- databases << db;
+ // Check if database is connected with KeePassXC-Browser
+ for (const StringPair keyPair : keyList) {
+ Entry* entry = db->resolveEntry(KEEPASSXCBROWSER_UUID);
+ if (entry) {
+ QString key = entry->attributes()->value(QLatin1String(ASSOCIATE_KEY_PREFIX) + keyPair.first);
+ if (!key.isEmpty() && keyPair.second == key) {
+ databases << db;
+ }
+ }
+ }
}
}
}
@@ -512,21 +530,30 @@ QList<Entry*> BrowserService::sortEntries(QList<Entry*>& pwEntries, const QStrin
const QString submitUrl = url.toString(QUrl::StripTrailingSlash);
const QString baseSubmitUrl = url.toString(QUrl::StripTrailingSlash | QUrl::RemovePath | QUrl::RemoveQuery | QUrl::RemoveFragment);
- QMultiMap<int, const Entry*> priorities;
- for (const Entry* entry : pwEntries) {
+ // Build map of prioritized entries
+ QMultiMap<int, Entry*> priorities;
+ for (Entry* entry : pwEntries) {
priorities.insert(sortPriority(entry, host, submitUrl, baseSubmitUrl), entry);
}
+ QList<Entry*> results;
QString field = BrowserSettings::sortByTitle() ? "Title" : "UserName";
- std::sort(pwEntries.begin(), pwEntries.end(), [&priorities, &field](const Entry* left, const Entry* right) {
- int res = priorities.key(left) - priorities.key(right);
- if (res == 0) {
- return QString::localeAwareCompare(left->attributes()->value(field), right->attributes()->value(field)) < 0;
+ for (int i = 100; i >= 0; i -= 5) {
+ if (priorities.count(i) > 0) {
+ // Sort same priority entries by Title or UserName
+ auto entries = priorities.values(i);
+ std::sort(entries.begin(), entries.end(), [&priorities, &field](Entry* left, Entry* right) {
+ return QString::localeAwareCompare(left->attributes()->value(field), right->attributes()->value(field)) < 0;
+ });
+ results << entries;
+ if (BrowserSettings::bestMatchOnly() && !pwEntries.isEmpty()) {
+ // Early out once we find the highest batch of matches
+ break;
+ }
}
- return res < 0;
- });
+ }
- return pwEntries;
+ return results;
}
bool BrowserService::confirmEntries(QList<Entry*>& pwEntriesToConfirm, const QString& url, const QString& host, const QString& submitHost, const QString& realm)
@@ -727,6 +754,10 @@ void BrowserService::databaseLocked(DatabaseWidget* dbWidget)
void BrowserService::databaseUnlocked(DatabaseWidget* dbWidget)
{
if (dbWidget) {
+ if (m_bringToFrontRequested) {
+ KEEPASSXC_MAIN_WINDOW->lower();
+ m_bringToFrontRequested = false;
+ }
emit databaseUnlocked();
}
}
diff --git a/src/browser/BrowserService.h b/src/browser/BrowserService.h
index 5a96e1ecd..eb47aac07 100644
--- a/src/browser/BrowserService.h
+++ b/src/browser/BrowserService.h
@@ -25,7 +25,8 @@
#include "gui/DatabaseTabWidget.h"
#include "core/Entry.h"
-enum { max_length = 16*1024 };
+typedef QPair<QString, QString> StringPair;
+typedef QList<StringPair> StringPairList;
class BrowserService : public QObject
{
@@ -42,12 +43,12 @@ public:
QString getKey(const QString& id);
void addEntry(const QString& id, const QString& login, const QString& password, const QString& url, const QString& submitUrl, const QString& realm);
QList<Entry*> searchEntries(Database* db, const QString& hostname);
- QList<Entry*> searchEntries(const QString& text);
+ QList<Entry*> searchEntries(const QString& text, const StringPairList& keyList);
void removeSharedEncryptionKeys();
void removeStoredPermissions();
public slots:
- QJsonArray findMatchingEntries(const QString& id, const QString& url, const QString& submitUrl, const QString& realm);
+ QJsonArray findMatchingEntries(const QString& id, const QString& url, const QString& submitUrl, const QString& realm, const StringPairList& keyList);
QString storeKey(const QString& key);
void updateEntry(const QString& id, const QString& uuid, const QString& login, const QString& password, const QString& url);
void databaseLocked(DatabaseWidget* dbWidget);
@@ -77,6 +78,7 @@ private:
private:
DatabaseTabWidget* const m_dbTabWidget;
bool m_dialogActive;
+ bool m_bringToFrontRequested;
};
#endif // BROWSERSERVICE_H
diff --git a/src/browser/BrowserSettings.h b/src/browser/BrowserSettings.h
index eb59fa5ac..7047d22b3 100755
--- a/src/browser/BrowserSettings.h
+++ b/src/browser/BrowserSettings.h
@@ -32,7 +32,7 @@ public:
static bool showNotification(); //TODO!!
static void setShowNotification(bool showNotification);
- static bool bestMatchOnly(); //TODO!!
+ static bool bestMatchOnly();
static void setBestMatchOnly(bool bestMatchOnly);
static bool unlockDatabase();
static void setUnlockDatabase(bool unlockDatabase);
@@ -46,7 +46,7 @@ public:
static void setAlwaysAllowAccess(bool alwaysAllowAccess);
static bool alwaysAllowUpdate();
static void setAlwaysAllowUpdate(bool alwaysAllowUpdate);
- static bool searchInAllDatabases();//TODO!!
+ static bool searchInAllDatabases();
static void setSearchInAllDatabases(bool searchInAllDatabases);
static bool supportKphFields();
static void setSupportKphFields(bool supportKphFields);
diff --git a/src/browser/NativeMessagingBase.cpp b/src/browser/NativeMessagingBase.cpp
index 743953e95..e696af90d 100644
--- a/src/browser/NativeMessagingBase.cpp
+++ b/src/browser/NativeMessagingBase.cpp
@@ -36,14 +36,17 @@
#include <io.h>
#endif
-NativeMessagingBase::NativeMessagingBase()
+NativeMessagingBase::NativeMessagingBase(const bool enabled)
{
#ifdef Q_OS_WIN
+ Q_UNUSED(enabled);
_setmode(_fileno(stdin), _O_BINARY);
_setmode(_fileno(stdout), _O_BINARY);
#else
- m_notifier.reset(new QSocketNotifier(fileno(stdin), QSocketNotifier::Read, this));
- connect(m_notifier.data(), SIGNAL(activated(int)), this, SLOT(newNativeMessage()));
+ if (enabled) {
+ m_notifier.reset(new QSocketNotifier(fileno(stdin), QSocketNotifier::Read, this));
+ connect(m_notifier.data(), SIGNAL(activated(int)), this, SLOT(newNativeMessage()));
+ }
#endif
}
@@ -121,7 +124,8 @@ void NativeMessagingBase::sendReply(const QJsonObject& json)
void NativeMessagingBase::sendReply(const QString& reply)
{
if (!reply.isEmpty()) {
- uint len = reply.length();
+ QByteArray bytes = reply.toUtf8();
+ uint len = bytes.size();
std::cout << char(((len>>0) & 0xFF)) << char(((len>>8) & 0xFF)) << char(((len>>16) & 0xFF)) << char(((len>>24) & 0xFF));
std::cout << reply.toStdString() << std::flush;
}
diff --git a/src/browser/NativeMessagingBase.h b/src/browser/NativeMessagingBase.h
index 4253b7585..2cd63d24c 100644
--- a/src/browser/NativeMessagingBase.h
+++ b/src/browser/NativeMessagingBase.h
@@ -32,12 +32,19 @@
#include <iostream>
#include <unistd.h>
+#ifndef Q_OS_WIN
+#include <sys/types.h>
+#include <sys/socket.h>
+#endif
+
+static const int NATIVE_MSG_MAX_LENGTH = 1024*1024;
+
class NativeMessagingBase : public QObject
{
Q_OBJECT
public:
- explicit NativeMessagingBase();
+ explicit NativeMessagingBase(const bool enabled);
~NativeMessagingBase() = default;
protected slots:
diff --git a/src/browser/NativeMessagingHost.cpp b/src/browser/NativeMessagingHost.cpp
index 0101e9444..db1a1319d 100755
--- a/src/browser/NativeMessagingHost.cpp
+++ b/src/browser/NativeMessagingHost.cpp
@@ -23,8 +23,12 @@
#include "NativeMessagingHost.h"
#include "BrowserSettings.h"
-NativeMessagingHost::NativeMessagingHost(DatabaseTabWidget* parent) :
- NativeMessagingBase(),
+#ifdef Q_OS_WIN
+#include <Winsock2.h>
+#endif
+
+NativeMessagingHost::NativeMessagingHost(DatabaseTabWidget* parent, const bool enabled) :
+ NativeMessagingBase(enabled),
m_mutex(QMutex::Recursive),
m_browserClients(m_browserService),
m_browserService(parent)
@@ -73,6 +77,11 @@ void NativeMessagingHost::run()
QString serverPath = getLocalServerPath();
QFile::remove(serverPath);
+ // Ensure that STDIN is not being listened when proxy is used
+ if (m_notifier->isEnabled()) {
+ m_notifier->setEnabled(false);
+ }
+
if (m_localServer->isListening()) {
m_localServer->close();
}
@@ -142,11 +151,17 @@ void NativeMessagingHost::newLocalConnection()
void NativeMessagingHost::newLocalMessage()
{
QLocalSocket* socket = qobject_cast<QLocalSocket*>(QObject::sender());
-
if (!socket || socket->bytesAvailable() <= 0) {
return;
}
+ socket->setReadBufferSize(NATIVE_MSG_MAX_LENGTH);
+ int socketDesc = socket->socketDescriptor();
+ if (socketDesc) {
+ int max = NATIVE_MSG_MAX_LENGTH;
+ setsockopt(socketDesc, SOL_SOCKET, SO_SNDBUF, reinterpret_cast<char*>(&max), sizeof(max));
+ }
+
QByteArray arr = socket->readAll();
if (arr.isEmpty()) {
return;
diff --git a/src/browser/NativeMessagingHost.h b/src/browser/NativeMessagingHost.h
index 80825237b..cc0a2e84c 100755
--- a/src/browser/NativeMessagingHost.h
+++ b/src/browser/NativeMessagingHost.h
@@ -31,7 +31,7 @@ class NativeMessagingHost : public NativeMessagingBase
typedef QList<QLocalSocket*> SocketList;
public:
- explicit NativeMessagingHost(DatabaseTabWidget* parent = 0);
+ explicit NativeMessagingHost(DatabaseTabWidget* parent = 0, const bool enabled = false);
~NativeMessagingHost();
int init();
void run();
diff --git a/src/core/Config.cpp b/src/core/Config.cpp
index 461ab1f74..614aee0c4 100644
--- a/src/core/Config.cpp
+++ b/src/core/Config.cpp
@@ -135,6 +135,7 @@ void Config::init(const QString& fileName)
m_defaults.insert("AutoTypeEntryTitleMatch", true);
m_defaults.insert("AutoTypeEntryURLMatch", true);
m_defaults.insert("AutoTypeDelay", 25);
+ m_defaults.insert("AutoTypeStartDelay", 500);
m_defaults.insert("UseGroupIconOnEntryCreation", true);
m_defaults.insert("IgnoreGroupExpansion", true);
m_defaults.insert("security/clearclipboard", true);
diff --git a/src/core/FilePath.cpp b/src/core/FilePath.cpp
index 330542eb9..c6f1907ad 100644
--- a/src/core/FilePath.cpp
+++ b/src/core/FilePath.cpp
@@ -98,6 +98,15 @@ QString FilePath::wordlistPath(const QString& name)
QIcon FilePath::applicationIcon()
{
+#ifdef KEEPASSXC_DIST_SNAP
+ return icon("apps", "keepassxc", false);
+#else
+ return icon("apps", "keepassxc");
+#endif
+}
+
+QIcon FilePath::trayIcon()
+{
bool darkIcon = useDarkIcon();
#ifdef KEEPASSXC_DIST_SNAP
@@ -107,7 +116,6 @@ QIcon FilePath::applicationIcon()
#endif
}
-
QIcon FilePath::trayIconLocked()
{
#ifdef KEEPASSXC_DIST_SNAP
diff --git a/src/core/FilePath.h b/src/core/FilePath.h
index f84f84e0e..b0f0397e2 100644
--- a/src/core/FilePath.h
+++ b/src/core/FilePath.h
@@ -29,6 +29,7 @@ public:
QString pluginPath(const QString& name);
QString wordlistPath(const QString& name);
QIcon applicationIcon();
+ QIcon trayIcon();
QIcon trayIconLocked();
QIcon trayIconUnlocked();
QIcon icon(const QString& category, const QString& name, bool fromTheme = true);
diff --git a/src/gui/DatabaseOpenWidget.cpp b/src/gui/DatabaseOpenWidget.cpp
index 3af0c6e8f..d011e8b63 100644
--- a/src/gui/DatabaseOpenWidget.cpp
+++ b/src/gui/DatabaseOpenWidget.cpp
@@ -173,6 +173,9 @@ void DatabaseOpenWidget::openDatabase()
return;
}
+ m_ui->editPassword->setShowPassword(false);
+ QCoreApplication::processEvents();
+
QFile file(m_filename);
if (!file.open(QIODevice::ReadOnly)) {
m_ui->messageWidget->showMessage(
diff --git a/src/gui/DetailsWidget.cpp b/src/gui/DetailsWidget.cpp
index 77de24666..dcabf964f 100644
--- a/src/gui/DetailsWidget.cpp
+++ b/src/gui/DetailsWidget.cpp
@@ -198,7 +198,7 @@ void DetailsWidget::updateEntryNotesTab()
Q_ASSERT(m_currentEntry);
const QString notes = m_currentEntry->notes();
setTabEnabled(m_ui->entryTabWidget, m_ui->entryNotesTab, !notes.isEmpty());
- m_ui->entryNotesEdit->setText(m_currentEntry->resolveMultiplePlaceholders(notes));
+ m_ui->entryNotesEdit->setText(notes);
}
void DetailsWidget::updateEntryAttributesTab()
diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp
index af4476ac3..837d6ef5c 100644
--- a/src/gui/EditWidgetIcons.cpp
+++ b/src/gui/EditWidgetIcons.cpp
@@ -21,7 +21,6 @@
#include <QFileDialog>
#include <QMessageBox>
-#include <QFileDialog>
#include "core/Config.h"
#include "core/Group.h"
@@ -31,9 +30,7 @@
#include "gui/MessageBox.h"
#ifdef WITH_XC_NETWORKING
-#include <curl/curl.h>
-#include "core/AsyncTask.h"
-#undef MessageBox
+#include <QtNetwork>
#endif
IconStruct::IconStruct()
@@ -42,10 +39,31 @@ IconStruct::IconStruct()
{
}
+UrlFetchProgressDialog::UrlFetchProgressDialog(const QUrl &url, QWidget *parent)
+ : QProgressDialog(parent)
+{
+ setWindowTitle(tr("Download Progress"));
+ setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
+ setLabelText(tr("Downloading %1.").arg(url.toDisplayString()));
+ setMinimum(0);
+ setValue(0);
+ setMinimumDuration(0);
+ setMinimumSize(QSize(400, 75));
+}
+
+void UrlFetchProgressDialog::networkReplyProgress(qint64 bytesRead, qint64 totalBytes)
+{
+ setMaximum(totalBytes);
+ setValue(bytesRead);
+}
+
EditWidgetIcons::EditWidgetIcons(QWidget* parent)
: QWidget(parent)
, m_ui(new Ui::EditWidgetIcons())
, m_database(nullptr)
+#ifdef WITH_XC_NETWORKING
+ , m_reply(nullptr)
+#endif
, m_defaultIconModel(new DefaultIconModel(this))
, m_customIconModel(new CustomIconModel(this))
{
@@ -136,7 +154,7 @@ void EditWidgetIcons::load(const Uuid& currentUuid, Database* database, const Ic
void EditWidgetIcons::setUrl(const QString& url)
{
#ifdef WITH_XC_NETWORKING
- m_url = url;
+ m_url = QUrl(url);
m_ui->faviconButton->setVisible(!url.isEmpty());
#else
Q_UNUSED(url);
@@ -144,87 +162,152 @@ void EditWidgetIcons::setUrl(const QString& url)
#endif
}
+#ifdef WITH_XC_NETWORKING
+namespace {
+ // Try to get the 2nd level domain of the host part of a QUrl. For example,
+ // "foo.bar.example.com" would become "example.com", and "foo.bar.example.co.uk"
+ // would become "example.co.uk".
+ QString getSecondLevelDomain(QUrl url)
+ {
+ QString fqdn = url.host();
+ fqdn.truncate(fqdn.length() - url.topLevelDomain().length());
+ QStringList parts = fqdn.split('.');
+ QString newdom = parts.takeLast() + url.topLevelDomain();
+ return newdom;
+ }
+
+ QUrl convertVariantToUrl(QVariant var)
+ {
+ QUrl url;
+ if (var.canConvert<QUrl>())
+ url = var.value<QUrl>();
+ return url;
+ }
+
+ QUrl getRedirectTarget(QNetworkReply *reply)
+ {
+ QVariant var = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
+ QUrl url = convertVariantToUrl(var);
+ return url;
+ }
+}
+#endif
+
void EditWidgetIcons::downloadFavicon()
{
#ifdef WITH_XC_NETWORKING
m_ui->faviconButton->setDisabled(true);
- QUrl url = QUrl(m_url);
- url.setPath("/favicon.ico");
+ m_redirects = 0;
+ m_urlsToTry.clear();
+
+ QString fullyQualifiedDomain = m_url.host();
+ QString secondLevelDomain = getSecondLevelDomain(m_url);
+
// Attempt to simply load the favicon.ico file
- QImage image = fetchFavicon(url);
+ if (fullyQualifiedDomain != secondLevelDomain) {
+ m_urlsToTry.append(QUrl(m_url.scheme() + "://" + fullyQualifiedDomain + "/favicon.ico"));
+ }
+ m_urlsToTry.append(QUrl(m_url.scheme() + "://" + secondLevelDomain + "/favicon.ico"));
+
+ // Try to use Google fallback, if enabled
+ if (config()->get("security/IconDownloadFallbackToGoogle", false).toBool()) {
+ QUrl urlGoogle = QUrl("https://www.google.com/s2/favicons");
+
+ urlGoogle.setQuery("domain=" + QUrl::toPercentEncoding(secondLevelDomain));
+ m_urlsToTry.append(urlGoogle);
+ }
+
+ startFetchFavicon(m_urlsToTry.takeFirst());
+#endif
+}
+
+void EditWidgetIcons::fetchReadyRead()
+{
+#ifdef WITH_XC_NETWORKING
+ m_bytesReceived += m_reply->readAll();
+#endif
+}
+
+void EditWidgetIcons::fetchFinished()
+{
+#ifdef WITH_XC_NETWORKING
+ QImage image;
+ bool googleFallbackEnabled = config()->get("security/IconDownloadFallbackToGoogle", false).toBool();
+ bool error = (m_reply->error() != QNetworkReply::NoError);
+ QUrl redirectTarget = getRedirectTarget(m_reply);
+
+ m_reply->deleteLater();
+ m_reply = nullptr;
+
+ if (!error) {
+ if (redirectTarget.isValid()) {
+ // Redirected, we need to follow it, or fall through if we have
+ // done too many redirects already.
+ if (m_redirects < 5) {
+ m_redirects++;
+ if (redirectTarget.isRelative())
+ redirectTarget = m_fetchUrl.resolved(redirectTarget);
+ startFetchFavicon(redirectTarget);
+ return;
+ }
+ } else {
+ // No redirect, and we theoretically have some icon data now.
+ image.loadFromData(m_bytesReceived);
+ }
+ }
+
if (!image.isNull()) {
addCustomIcon(image);
- } else if (config()->get("security/IconDownloadFallbackToGoogle", false).toBool()) {
- QUrl faviconUrl = QUrl("https://www.google.com/s2/favicons");
- faviconUrl.setQuery("domain=" + QUrl::toPercentEncoding(url.host()));
- // Attempt to load favicon from Google
- image = fetchFavicon(faviconUrl);
- if (!image.isNull()) {
- addCustomIcon(image);
+ } else if (!m_urlsToTry.empty()) {
+ m_redirects = 0;
+ startFetchFavicon(m_urlsToTry.takeFirst());
+ return;
+ } else {
+ if (!googleFallbackEnabled) {
+ emit messageEditEntry(tr("Unable to fetch favicon.") + "\n" +
+ tr("Hint: You can enable Google as a fallback under Tools>Settings>Security"),
+ MessageWidget::Error);
} else {
emit messageEditEntry(tr("Unable to fetch favicon."), MessageWidget::Error);
}
- } else {
- emit messageEditEntry(tr("Unable to fetch favicon.") + "\n" +
- tr("Hint: You can enable Google as a fallback under Tools>Settings>Security"),
- MessageWidget::Error);
}
m_ui->faviconButton->setDisabled(false);
#endif
}
-#ifdef WITH_XC_NETWORKING
-namespace {
-std::size_t writeCurlResponse(char* ptr, std::size_t size, std::size_t nmemb, void* data)
+void EditWidgetIcons::fetchCanceled()
{
- QByteArray* response = static_cast<QByteArray*>(data);
- std::size_t realsize = size * nmemb;
- response->append(ptr, realsize);
- return realsize;
-}
+#ifdef WITH_XC_NETWORKING
+ m_reply->abort();
+#endif
}
-QImage EditWidgetIcons::fetchFavicon(const QUrl& url)
+void EditWidgetIcons::startFetchFavicon(const QUrl& url)
{
- QImage image;
- CURL* curl = curl_easy_init();
- if (curl) {
- QByteArray imagedata;
- QByteArray baUrl = url.url().toLatin1();
-
- curl_easy_setopt(curl, CURLOPT_URL, baUrl.data());
- curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 5L);
- curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
- curl_easy_setopt(curl, CURLOPT_USERAGENT, "curl");
- curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
- curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10L);
- curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L);
- curl_easy_setopt(curl, CURLOPT_WRITEDATA, &imagedata);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &writeCurlResponse);
-#ifdef Q_OS_WIN
- const QDir appDir = QFileInfo(QCoreApplication::applicationFilePath()).absoluteDir();
- if (appDir.exists("ssl\\certs")) {
- curl_easy_setopt(curl, CURLOPT_CAINFO, (appDir.absolutePath() + "\\ssl\\certs\\ca-bundle.crt").toLatin1().data());
- }
-#endif
+#ifdef WITH_XC_NETWORKING
+ m_bytesReceived.clear();
- // Perform the request in another thread
- CURLcode result = AsyncTask::runAndWaitForFuture([curl]() {
- return curl_easy_perform(curl);
- });
+ m_fetchUrl = url;
- if (result == CURLE_OK) {
- image.loadFromData(imagedata);
- }
+ QNetworkRequest request(url);
- curl_easy_cleanup(curl);
- }
+ m_reply = m_netMgr.get(request);
+ connect(m_reply, &QNetworkReply::finished, this, &EditWidgetIcons::fetchFinished);
+ connect(m_reply, &QIODevice::readyRead, this, &EditWidgetIcons::fetchReadyRead);
- return image;
-}
+ UrlFetchProgressDialog *progress = new UrlFetchProgressDialog(url, this);
+ progress->setAttribute(Qt::WA_DeleteOnClose);
+ connect(m_reply, &QNetworkReply::finished, progress, &QProgressDialog::hide);
+ connect(m_reply, &QNetworkReply::downloadProgress, progress, &UrlFetchProgressDialog::networkReplyProgress);
+ connect(progress, &QProgressDialog::canceled, this, &EditWidgetIcons::fetchCanceled);
+
+ progress->show();
+#else
+ Q_UNUSED(url);
#endif
+}
void EditWidgetIcons::addCustomIconFromFile()
{
diff --git a/src/gui/EditWidgetIcons.h b/src/gui/EditWidgetIcons.h
index 7b5edf80c..82fcdeeb5 100644
--- a/src/gui/EditWidgetIcons.h
+++ b/src/gui/EditWidgetIcons.h
@@ -21,7 +21,9 @@
#include <QWidget>
#include <QSet>
+#include <QProgressDialog>
#include <QUrl>
+#include <QNetworkAccessManager>
#include "config-keepassx.h"
#include "core/Global.h"
@@ -31,6 +33,9 @@
class Database;
class DefaultIconModel;
class CustomIconModel;
+#ifdef WITH_XC_NETWORKING
+class QNetworkReply;
+#endif
namespace Ui {
class EditWidgetIcons;
@@ -44,6 +49,17 @@ struct IconStruct
int number;
};
+class UrlFetchProgressDialog : public QProgressDialog
+{
+ Q_OBJECT
+
+public:
+ explicit UrlFetchProgressDialog(const QUrl &url, QWidget *parent = nullptr);
+
+public slots:
+ void networkReplyProgress(qint64 bytesRead, qint64 totalBytes);
+};
+
class EditWidgetIcons : public QWidget
{
Q_OBJECT
@@ -65,9 +81,10 @@ signals:
private slots:
void downloadFavicon();
-#ifdef WITH_XC_NETWORKING
- QImage fetchFavicon(const QUrl& url);
-#endif
+ void startFetchFavicon(const QUrl& url);
+ void fetchFinished();
+ void fetchReadyRead();
+ void fetchCanceled();
void addCustomIconFromFile();
void addCustomIcon(const QImage& icon);
void removeCustomIcon();
@@ -80,7 +97,15 @@ private:
const QScopedPointer<Ui::EditWidgetIcons> m_ui;
Database* m_database;
Uuid m_currentUuid;
- QString m_url;
+#ifdef WITH_XC_NETWORKING
+ QUrl m_url;
+ QUrl m_fetchUrl;
+ QList<QUrl> m_urlsToTry;
+ QByteArray m_bytesReceived;
+ QNetworkAccessManager m_netMgr;
+ QNetworkReply *m_reply;
+ int m_redirects;
+#endif
DefaultIconModel* const m_defaultIconModel;
CustomIconModel* const m_customIconModel;
diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp
index 1822c48d4..2e87b4d8c 100644
--- a/src/gui/MainWindow.cpp
+++ b/src/gui/MainWindow.cpp
@@ -117,7 +117,7 @@ class BrowserPlugin: public ISettingsPage
{
public:
BrowserPlugin(DatabaseTabWidget* tabWidget) {
- m_nativeMessagingHost = QSharedPointer<NativeMessagingHost>(new NativeMessagingHost(tabWidget));
+ m_nativeMessagingHost = QSharedPointer<NativeMessagingHost>(new NativeMessagingHost(tabWidget, BrowserSettings::isEnabled()));
}
~BrowserPlugin() {
@@ -797,7 +797,7 @@ void MainWindow::closeEvent(QCloseEvent* event)
config()->get("GUI/MinimizeOnClose").toBool();
if (minimizeOnClose && !m_appExitCalled)
{
- event->ignore();
+ event->accept();
hideWindow();
if (config()->get("security/lockdatabaseminimize").toBool()) {
@@ -899,7 +899,7 @@ void MainWindow::updateTrayIcon()
m_trayIcon->setContextMenu(menu);
- m_trayIcon->setIcon(filePath()->applicationIcon());
+ m_trayIcon->setIcon(filePath()->trayIcon());
m_trayIcon->show();
}
if (m_ui->tabWidget->hasLockableDatabases()) {
@@ -971,7 +971,11 @@ void MainWindow::trayIconTriggered(QSystemTrayIcon::ActivationReason reason)
void MainWindow::hideWindow()
{
saveWindowInformation();
-#ifndef Q_OS_MAC
+#if !defined(Q_OS_LINUX) && !defined(Q_OS_MAC)
+ // On some Linux systems, the window should NOT be minimized and hidden (i.e. not shown), at
+ // the same time (which would happen if both minimize on startup and minimize to tray are set)
+ // since otherwise it causes problems on restore as seen on issue #1595. Hiding it is enough.
+ // TODO: Add an explanation for why this is also not done on Mac (or remove the check)
setWindowState(windowState() | Qt::WindowMinimized);
#endif
QTimer::singleShot(0, this, SLOT(hide()));
@@ -983,7 +987,7 @@ void MainWindow::hideWindow()
void MainWindow::toggleWindow()
{
- if ((QApplication::activeWindow() == this) && isVisible() && !isMinimized()) {
+ if (isVisible() && !isMinimized()) {
hideWindow();
} else {
bringToFront();
diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp
index 56b1b2a38..30cc11e5c 100644
--- a/src/gui/SettingsWidget.cpp
+++ b/src/gui/SettingsWidget.cpp
@@ -152,6 +152,7 @@ void SettingsWidget::loadSettings()
}
m_generalUi->autoTypeShortcutWidget->setAttribute(Qt::WA_MacShowFocusRect, true);
m_generalUi->autoTypeDelaySpinBox->setValue(config()->get("AutoTypeDelay").toInt());
+ m_generalUi->autoTypeStartDelaySpinBox->setValue(config()->get("AutoTypeStartDelay").toInt());
}
@@ -227,6 +228,7 @@ void SettingsWidget::saveSettings()
config()->set("GlobalAutoTypeModifiers",
static_cast<int>(m_generalUi->autoTypeShortcutWidget->modifiers()));
config()->set("AutoTypeDelay", m_generalUi->autoTypeDelaySpinBox->value());
+ config()->set("AutoTypeStartDelay", m_generalUi->autoTypeStartDelaySpinBox->value());
}
config()->set("security/clearclipboard", m_secUi->clearClipboardCheckBox->isChecked());
config()->set("security/clearclipboardtimeout", m_secUi->clearClipboardSpinBox->value());
diff --git a/src/gui/SettingsWidgetGeneral.ui b/src/gui/SettingsWidgetGeneral.ui
index 5ed952f1f..2d94892f2 100644
--- a/src/gui/SettingsWidgetGeneral.ui
+++ b/src/gui/SettingsWidgetGeneral.ui
@@ -26,7 +26,7 @@
<item>
<widget class="QTabWidget" name="generalSettingsTabWidget">
<property name="currentIndex">
- <number>0</number>
+ <number>1</number>
</property>
<widget class="QWidget" name="tabGeneral">
<attribute name="title">
@@ -404,7 +404,7 @@
<number>10</number>
</property>
<item row="1" column="0">
- <widget class="QLabel" name="autoTypeShortcutLabel_2">
+ <widget class="QLabel" name="autoTypeShortcutLabel">
<property name="text">
<string>Global Auto-Type shortcut</string>
</property>
@@ -420,14 +420,14 @@
</property>
</widget>
</item>
- <item row="2" column="0">
- <widget class="QLabel" name="autoTypeDelayLabel_2">
+ <item row="3" column="0">
+ <widget class="QLabel" name="autoTypeDelayLabel">
<property name="text">
- <string>Auto-Type delay</string>
+ <string>Auto-Type typing delay</string>
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="3" column="1">
<widget class="QSpinBox" name="autoTypeDelaySpinBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@@ -442,13 +442,48 @@
<string/>
</property>
<property name="maximum">
- <number>999</number>
+ <number>1000</number>
</property>
<property name="value">
<number>25</number>
</property>
</widget>
</item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="autoTypeStartDelayLabel">
+ <property name="text">
+ <string>Auto-Type start delay</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="autoTypeStartDelaySpinBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="suffix">
+ <string comment="Milliseconds"> ms</string>
+ </property>
+ <property name="prefix">
+ <string/>
+ </property>
+ <property name="minimum">
+ <number>100</number>
+ </property>
+ <property name="maximum">
+ <number>10000</number>
+ </property>
+ <property name="singleStep">
+ <number>100</number>
+ </property>
+ <property name="value">
+ <number>500</number>
+ </property>
+ </widget>
+ </item>
</layout>
</item>
<item>
diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp
index 4d12dd16b..6fd65c1a3 100644
--- a/src/gui/entry/EditEntryWidget.cpp
+++ b/src/gui/entry/EditEntryWidget.cpp
@@ -281,6 +281,8 @@ void EditEntryWidget::setupSSHAgent()
connect(m_sshAgentUi->decryptButton, SIGNAL(clicked()), SLOT(decryptPrivateKey()));
connect(m_sshAgentUi->copyToClipboardButton, SIGNAL(clicked()), SLOT(copyPublicKey()));
+ connect(m_advancedUi->attachmentsWidget->entryAttachments(), SIGNAL(modified()), SLOT(updateSSHAgentAttachments()));
+
addPage(tr("SSH Agent"), FilePath::instance()->icon("apps", "utilities-terminal"), m_sshAgentWidget);
}
@@ -299,19 +301,8 @@ void EditEntryWidget::updateSSHAgent()
m_sshAgentUi->removeFromAgentButton->setEnabled(false);
m_sshAgentUi->copyToClipboardButton->setEnabled(false);
- m_sshAgentUi->attachmentComboBox->addItem("");
-
- auto attachments = m_advancedUi->attachmentsWidget->entryAttachments();
- for (const QString& fileName : attachments->keys()) {
- if (fileName == "KeeAgent.settings") {
- continue;
- }
-
- m_sshAgentUi->attachmentComboBox->addItem(fileName);
- }
-
- m_sshAgentUi->attachmentComboBox->setCurrentText(settings.attachmentName());
- m_sshAgentUi->externalFileEdit->setText(settings.fileName());
+ m_sshAgentSettings = settings;
+ updateSSHAgentAttachments();
if (settings.selectedType() == "attachment") {
m_sshAgentUi->attachmentRadioButton->setChecked(true);
@@ -319,8 +310,6 @@ void EditEntryWidget::updateSSHAgent()
m_sshAgentUi->externalFileRadioButton->setChecked(true);
}
- m_sshAgentSettings = settings;
-
updateSSHAgentKeyInfo();
}
@@ -330,6 +319,24 @@ void EditEntryWidget::updateSSHAgentAttachment()
updateSSHAgentKeyInfo();
}
+void EditEntryWidget::updateSSHAgentAttachments()
+{
+ m_sshAgentUi->attachmentComboBox->clear();
+ m_sshAgentUi->attachmentComboBox->addItem("");
+
+ auto attachments = m_advancedUi->attachmentsWidget->entryAttachments();
+ for (const QString& fileName : attachments->keys()) {
+ if (fileName == "KeeAgent.settings") {
+ continue;
+ }
+
+ m_sshAgentUi->attachmentComboBox->addItem(fileName);
+ }
+
+ m_sshAgentUi->attachmentComboBox->setCurrentText(m_sshAgentSettings.attachmentName());
+ m_sshAgentUi->externalFileEdit->setText(m_sshAgentSettings.fileName());
+}
+
void EditEntryWidget::updateSSHAgentKeyInfo()
{
m_sshAgentUi->addToAgentButton->setEnabled(false);
@@ -420,12 +427,16 @@ void EditEntryWidget::browsePrivateKey()
bool EditEntryWidget::getOpenSSHKey(OpenSSHKey& key, bool decrypt)
{
+ QString fileName;
QByteArray privateKeyData;
if (m_sshAgentUi->attachmentRadioButton->isChecked()) {
- privateKeyData = m_advancedUi->attachmentsWidget->getAttachment(m_sshAgentUi->attachmentComboBox->currentText());
+ fileName = m_sshAgentUi->attachmentComboBox->currentText();
+ privateKeyData = m_advancedUi->attachmentsWidget->getAttachment(fileName);
} else {
QFile localFile(m_sshAgentUi->externalFileEdit->text());
+ QFileInfo localFileInfo(localFile);
+ fileName = localFileInfo.fileName();
if (localFile.fileName().isEmpty()) {
return false;
@@ -464,6 +475,10 @@ bool EditEntryWidget::getOpenSSHKey(OpenSSHKey& key, bool decrypt)
key.setComment(m_entry->username());
}
+ if (key.comment().isEmpty()) {
+ key.setComment(fileName);
+ }
+
return true;
}
diff --git a/src/gui/entry/EditEntryWidget.h b/src/gui/entry/EditEntryWidget.h
index a7c8e3271..9b2a919c6 100644
--- a/src/gui/entry/EditEntryWidget.h
+++ b/src/gui/entry/EditEntryWidget.h
@@ -103,6 +103,7 @@ private slots:
#ifdef WITH_XC_SSHAGENT
void updateSSHAgent();
void updateSSHAgentAttachment();
+ void updateSSHAgentAttachments();
void updateSSHAgentKeyInfo();
void browsePrivateKey();
void addKeyToAgent();
diff --git a/src/gui/entry/EntryModel.cpp b/src/gui/entry/EntryModel.cpp
index 6f7ebf6af..8e4fe13db 100644
--- a/src/gui/entry/EntryModel.cpp
+++ b/src/gui/entry/EntryModel.cpp
@@ -185,7 +185,7 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const
return result;
case Notes:
// Display only first line of notes in simplified format
- result = entry->resolveMultiplePlaceholders(entry->notes().section("\n", 0, 0).simplified());
+ result = entry->notes().section("\n", 0, 0).simplified();
if (attr->isReference(EntryAttributes::NotesKey)) {
result.prepend(tr("Ref: ", "Reference abbreviation"));
}
diff --git a/src/main.cpp b/src/main.cpp
index a7fd2d762..2ccbaf257 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -29,6 +29,8 @@
#include "gui/MainWindow.h"
#include "gui/MessageBox.h"
+#include "cli/Utils.h"
+
#if defined(WITH_ASAN) && defined(WITH_LSAN)
#include <sanitizer/lsan_interface.h>
#endif
@@ -43,6 +45,21 @@ Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)
#endif
#endif
+static inline void earlyQNetworkAccessManagerWorkaround()
+{
+ // When QNetworkAccessManager is instantiated it regularly starts polling
+ // all network interfaces to see if anything changes and if so, what. This
+ // creates a latency spike every 10 seconds on Mac OS 10.12+ and Windows 7 >=
+ // when on a wifi connection.
+ // So here we disable it for lack of better measure.
+ // This will also cause this message: QObject::startTimer: Timers cannot
+ // have negative intervals
+ // For more info see:
+ // - https://bugreports.qt.io/browse/QTBUG-40332
+ // - https://bugreports.qt.io/browse/QTBUG-46015
+ qputenv("QT_BEARER_POLL_TIMEOUT", QByteArray::number(-1));
+}
+
int main(int argc, char** argv)
{
#ifdef QT_NO_DEBUG
@@ -50,6 +67,8 @@ int main(int argc, char** argv)
#endif
Tools::setupSearchPaths();
+ earlyQNetworkAccessManagerWorkaround();
+
Application app(argc, argv);
Application::setApplicationName("keepassxc");
Application::setApplicationVersion(KEEPASSX_VERSION);
@@ -125,7 +144,14 @@ int main(int argc, char** argv)
// start minimized if configured
bool minimizeOnStartup = config()->get("GUI/MinimizeOnStartup").toBool();
bool minimizeToTray = config()->get("GUI/MinimizeToTray").toBool();
+#ifndef Q_OS_LINUX
if (minimizeOnStartup) {
+#else
+ // On some Linux systems, the window should NOT be minimized and hidden (i.e. not shown), at
+ // the same time (which would happen if both minimize on startup and minimize to tray are set)
+ // since otherwise it causes problems on restore as seen on issue #1595. Hiding it is enough.
+ if (minimizeOnStartup && !minimizeToTray) {
+#endif
mainWindow.setWindowState(Qt::WindowMinimized);
}
if (!(minimizeOnStartup && minimizeToTray)) {
@@ -148,7 +174,9 @@ int main(int argc, char** argv)
// we always need consume a line of STDIN if --pw-stdin is set to clear out the
// buffer for native messaging, even if the specified file does not exist
static QTextStream in(stdin, QIODevice::ReadOnly);
- password = in.readLine();
+ static QTextStream out(stdout, QIODevice::WriteOnly);
+ out << QCoreApplication::translate("Main", "Database password: ") << flush;
+ password = Utils::getPassword();
}
if (!filename.isEmpty() && QFile::exists(filename) && !filename.endsWith(".json", Qt::CaseInsensitive)) {
diff --git a/src/proxy/CMakeLists.txt b/src/proxy/CMakeLists.txt
index f4c197e39..4972043b5 100755
--- a/src/proxy/CMakeLists.txt
+++ b/src/proxy/CMakeLists.txt
@@ -55,4 +55,7 @@ if(WITH_XC_BROWSER)
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
COMMENT "Changing linking of keepassxc-proxy")
endif()
+ if(MINGW)
+ target_link_libraries(keepassxc-proxy Wtsapi32.lib Ws2_32.lib)
+ endif()
endif()
diff --git a/src/proxy/NativeMessagingHost.cpp b/src/proxy/NativeMessagingHost.cpp
index c5ce60ea9..a0d713d0c 100755
--- a/src/proxy/NativeMessagingHost.cpp
+++ b/src/proxy/NativeMessagingHost.cpp
@@ -18,10 +18,21 @@
#include <QCoreApplication>
#include "NativeMessagingHost.h"
-NativeMessagingHost::NativeMessagingHost() : NativeMessagingBase()
+#ifdef Q_OS_WIN
+#include <Winsock2.h>
+#endif
+
+NativeMessagingHost::NativeMessagingHost() : NativeMessagingBase(true)
{
m_localSocket = new QLocalSocket();
m_localSocket->connectToServer(getLocalServerPath());
+ m_localSocket->setReadBufferSize(NATIVE_MSG_MAX_LENGTH);
+
+ int socketDesc = m_localSocket->socketDescriptor();
+ if (socketDesc) {
+ int max = NATIVE_MSG_MAX_LENGTH;
+ setsockopt(socketDesc, SOL_SOCKET, SO_SNDBUF, reinterpret_cast<char*>(&max), sizeof(max));
+ }
#ifdef Q_OS_WIN
m_running.store(true);
m_future = QtConcurrent::run(this, static_cast<void(NativeMessagingHost::*)()>(&NativeMessagingHost::readNativeMessages));
diff --git a/src/sshagent/OpenSSHKey.cpp b/src/sshagent/OpenSSHKey.cpp
index ccc7606f0..cfff5a400 100644
--- a/src/sshagent/OpenSSHKey.cpp
+++ b/src/sshagent/OpenSSHKey.cpp
@@ -319,9 +319,9 @@ bool OpenSSHKey::openPrivateKey(const QString& passphrase)
if (m_cipherName.compare("aes-128-cbc", Qt::CaseInsensitive) == 0) {
cipher.reset(new SymmetricCipher(SymmetricCipher::Aes128, SymmetricCipher::Cbc, SymmetricCipher::Decrypt));
- } else if (m_cipherName == "aes256-cbc") {
+ } else if (m_cipherName == "aes256-cbc" || m_cipherName.compare("aes-256-cbc", Qt::CaseInsensitive) == 0) {
cipher.reset(new SymmetricCipher(SymmetricCipher::Aes256, SymmetricCipher::Cbc, SymmetricCipher::Decrypt));
- } else if (m_cipherName == "aes256-ctr") {
+ } else if (m_cipherName == "aes256-ctr" || m_cipherName.compare("aes-256-ctr", Qt::CaseInsensitive) == 0) {
cipher.reset(new SymmetricCipher(SymmetricCipher::Aes256, SymmetricCipher::Ctr, SymmetricCipher::Decrypt));
} else if (m_cipherName != "none") {
m_error = tr("Unknown cipher: %1").arg(m_cipherName);
@@ -372,10 +372,22 @@ bool OpenSSHKey::openPrivateKey(const QString& passphrase)
return false;
}
- QCryptographicHash hash(QCryptographicHash::Md5);
- hash.addData(passphrase.toUtf8());
- hash.addData(m_cipherIV.data(), 8);
- QByteArray keyData = hash.result();
+ QByteArray keyData;
+ QByteArray mdBuf;
+ do {
+ QCryptographicHash hash(QCryptographicHash::Md5);
+ hash.addData(mdBuf);
+ hash.addData(passphrase.toUtf8());
+ hash.addData(m_cipherIV.data(), 8);
+ mdBuf = hash.result();
+ keyData.append(mdBuf);
+ } while(keyData.size() < cipher->keySize());
+
+ if (keyData.size() > cipher->keySize()) {
+ // If our key size isn't a multiple of 16 (e.g. AES-192 or something),
+ // then we will need to truncate it.
+ keyData.resize(cipher->keySize());
+ }
if (!cipher->init(keyData, m_cipherIV)) {
m_error = cipher->errorString();
diff --git a/src/sshagent/SSHAgent.cpp b/src/sshagent/SSHAgent.cpp
index 45d774aab..973e03054 100644
--- a/src/sshagent/SSHAgent.cpp
+++ b/src/sshagent/SSHAgent.cpp
@@ -186,7 +186,17 @@ bool SSHAgent::addIdentity(OpenSSHKey& key, quint32 lifetime, bool confirm)
}
if (responseData.length() < 1 || static_cast<quint8>(responseData[0]) != SSH_AGENT_SUCCESS) {
- m_error = tr("Agent refused this identity.");
+ m_error = tr("Agent refused this identity. Possible reasons include:")
+ + "\n" + tr("The key has already been added.");
+
+ if (lifetime > 0) {
+ m_error += "\n" + tr("Restricted lifetime is not supported by the agent (check options).");
+ }
+
+ if (confirm) {
+ m_error += "\n" + tr("A confirmation request is not supported by the agent (check options).");
+ }
+
return false;
}
@@ -268,10 +278,15 @@ void SSHAgent::databaseModeChanged(DatabaseWidget::Mode mode)
}
QByteArray keyData;
+ QString fileName;
if (settings.selectedType() == "attachment") {
- keyData = e->attachments()->value(settings.attachmentName());
+ fileName = settings.attachmentName();
+ keyData = e->attachments()->value(fileName);
} else if (!settings.fileName().isEmpty()) {
QFile file(settings.fileName());
+ QFileInfo fileInfo(file);
+
+ fileName = fileInfo.fileName();
if (file.size() > 1024 * 1024) {
continue;
@@ -302,6 +317,10 @@ void SSHAgent::databaseModeChanged(DatabaseWidget::Mode mode)
key.setComment(e->username());
}
+ if (key.comment().isEmpty()) {
+ key.setComment(fileName);
+ }
+
if (settings.removeAtDatabaseClose()) {
removeIdentityAtLock(key, uuid);
}
diff --git a/src/sshagent/blf.h b/src/sshagent/blf.h
index 4878e5588..f1ac5a5c2 100644
--- a/src/sshagent/blf.h
+++ b/src/sshagent/blf.h
@@ -34,17 +34,7 @@
#ifndef _BLF_H_
#define _BLF_H_
-#ifdef _WIN32
-
-#include <stdint.h>
-
-typedef uint32_t u_int32_t;
-typedef uint16_t u_int16_t;
-typedef uint8_t u_int8_t;
-
-#define bzero(p,s) memset(p, 0, s)
-
-#endif
+#include "includes.h"
#if !defined(HAVE_BCRYPT_PBKDF) && !defined(HAVE_BLH_H)
diff --git a/src/sshagent/blowfish.c b/src/sshagent/blowfish.c
index 02e9ac0bd..e10f7e7d9 100644
--- a/src/sshagent/blowfish.c
+++ b/src/sshagent/blowfish.c
@@ -39,7 +39,7 @@
* Bruce Schneier.
*/
-#define HAVE_BLF_H
+#include "includes.h"
#if !defined(HAVE_BCRYPT_PBKDF) && (!defined(HAVE_BLOWFISH_INITSTATE) || \
!defined(HAVE_BLOWFISH_EXPAND0STATE) || !defined(HAVE_BLF_ENC))
@@ -51,7 +51,7 @@
#include <sys/types.h>
#ifdef HAVE_BLF_H
-#include "blf.h"
+#include <blf.h>
#endif
#undef inline
diff --git a/src/sshagent/includes.h b/src/sshagent/includes.h
new file mode 100644
index 000000000..c6bb4d32e
--- /dev/null
+++ b/src/sshagent/includes.h
@@ -0,0 +1,20 @@
+// mimic openSSH-portable's includes.h file to be able to use
+// its unmodified blowfish code
+
+#define HAVE_BLF_H
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE /* activate extra prototypes for glibc */
+#endif
+#include <sys/types.h>
+
+
+#ifdef _WIN32
+#include <stdint.h>
+
+typedef uint32_t u_int32_t;
+typedef uint16_t u_int16_t;
+typedef uint8_t u_int8_t;
+
+#define bzero(p,s) memset(p, 0, s)
+#endif
diff --git a/tests/TestOpenSSHKey.cpp b/tests/TestOpenSSHKey.cpp
index 8ac129866..3f91ab4df 100644
--- a/tests/TestOpenSSHKey.cpp
+++ b/tests/TestOpenSSHKey.cpp
@@ -90,39 +90,39 @@ void TestOpenSSHKey::testParseDSA()
QCOMPARE(key.fingerprint(), QString("SHA256:tbbNuLN1hja8JNASDTlLOZQsbTlJDzJlz/oAGK3sX18"));
}
-void TestOpenSSHKey::testDecryptAES128CBC()
+void TestOpenSSHKey::testDecryptRSAAES128CBC()
{
const QString keyString = QString(
- "-----BEGIN RSA PRIVATE KEY-----\n"
- "Proc-Type: 4,ENCRYPTED\n"
- "DEK-Info: AES-128-CBC,804E4D214D1263FF94E3743FE799DBB4\n"
- "\n"
- "lM9TDfOTbiRhaGGDh7Hn+rqw8CCWcYBZYu7smyYLdnWKXKPmbne8CQFZBAS1FJwZ\n"
- "6Mj6n075yFGyzN9/OfeqKiUA4adlbwLbGwB+yyKsC2FlsvRIEr4hup02WWM47vHj\n"
- "DS4TRmNkE7MKFLhpNCyt5OGGM45s+/lwVTw51K0Hm99TBd72IrX4jfY9ZxAVbL3l\n"
- "aTohL8x6oOTe7q318QgJoFi+DjJhDWLGLLJ7fBqD2imz2fmrY4j8Jpw2sDe1rj82\n"
- "gMqqNG3FrfN0S4uYlWYH5pAh+BUcB1UdmTU/rV5wJMK1oUytmZv/J2+X/0k3Y93F\n"
- "aw6JWOy28OizW+TQXvv8gREWsp5PEclqUZhhGQbVbCQCiDOxg+xiXNySdRH1IqjR\n"
- "zQiKgD4SPzkxQekExPaIQT/KutWZdMNYybEqooCx8YyeDoN31z7Wa2rv6OulOn/j\n"
- "wJFvyd2PT/6brHKI4ky8RYroDf4FbVYKfyEW5CSAg2OyL/tY/kSPgy/k0WT7fDwq\n"
- "dPSuYM9yeWNL6kAhDqDOv8+s3xvOVEljktBvQvItQwVLmHszC3E2AcnaxzdblKPu\n"
- "e3+mBT80NXHjERK2ht+/9JYseK1ujNbNAaG8SbKfU3FF0VlyJ0QW6TuIEdpNnymT\n"
- "0fm0cDfKNaoeJIFnBRZhgIOJAic9DM0cTe/vSG69DaUYsaQPp36al7Fbux3GpFHS\n"
- "OtJEySYGro/6zvJ9dDIEfIGZjA3RaMt6+DuyJZXQdT2RNXa9j60xW7dXh0En4n82\n"
- "JUKTxYhDPLS5c8BzpJqoopxpKwElmrJ7Y3xpd6z2vIlD8ftuZrkk6siTMNQ2s7MI\n"
- "Xl332O+0H4k7uSfczHPOOw36TFhNjGQAP0b7O+0/RVG0ttOIoAn7ZkX3nfdbtG5B\n"
- "DWKvDaopvrcC2/scQ5uLUnqnBiGw1XiYpdg5ang7knHNzHZAIekVaYYZigpCAKp+\n"
- "OtoaDeUEzqFhYVmF8ad1fgvC9ZUsuxS4XUHCKl0H6CJcvW9MJPVbveqYoK+j9qKd\n"
- "iMIkQBP1kE2rzGZVGUkZTpM9LVD9nP0nsbr6E8BatFcNgRirsg2BTJglNpXlCmY6\n"
- "ldzJ/ELBbzoXIn+0wTGai0o4eBPx55baef69JfPuZqEB9pLNE+mHstrqIwcfqYu4\n"
- "M+Vzun1QshRMj9a1PVkIHfs1fLeebI4QCHO0vJlc9K4iYPM4rsDNO3YaAgGRuARS\n"
- "f3McGiGFxkv5zxe8i05ZBnn+exE77jpRKxd223jAMe2wu4WiFB7ZVo4Db6b5Oo2T\n"
- "TPh3VuY7TNMEKkcUi+mGLKjroocQ5j8WQYlfnyOaTalUVQDzOTNb67QIIoiszR0U\n"
- "+AXGyxHj0QtotZFoPME+AbS9Zqy3SgSOuIzPBPU5zS4uoKNdD5NPE5YAuafCjsDy\n"
- "MT4DVy+cPOQYUK022S7T2nsA1btmvUvD5LL2Mc8VuKsWOn/7FKZua6OCfipt6oX0\n"
- "1tzYrw0/ALK+CIdVdYIiPPfxGZkr+JSLOOg7u50tpmen9GzxgNTv63miygwUAIDF\n"
- "u0GbQwOueoA453/N75FcXOgrbqTdivyadUbRP+l7YJk/SfIytyJMOigejp+Z1lzF\n"
- "-----END RSA PRIVATE KEY-----\n"
+ "-----BEGIN RSA PRIVATE KEY-----\n"
+ "Proc-Type: 4,ENCRYPTED\n"
+ "DEK-Info: AES-128-CBC,804E4D214D1263FF94E3743FE799DBB4\n"
+ "\n"
+ "lM9TDfOTbiRhaGGDh7Hn+rqw8CCWcYBZYu7smyYLdnWKXKPmbne8CQFZBAS1FJwZ\n"
+ "6Mj6n075yFGyzN9/OfeqKiUA4adlbwLbGwB+yyKsC2FlsvRIEr4hup02WWM47vHj\n"
+ "DS4TRmNkE7MKFLhpNCyt5OGGM45s+/lwVTw51K0Hm99TBd72IrX4jfY9ZxAVbL3l\n"
+ "aTohL8x6oOTe7q318QgJoFi+DjJhDWLGLLJ7fBqD2imz2fmrY4j8Jpw2sDe1rj82\n"
+ "gMqqNG3FrfN0S4uYlWYH5pAh+BUcB1UdmTU/rV5wJMK1oUytmZv/J2+X/0k3Y93F\n"
+ "aw6JWOy28OizW+TQXvv8gREWsp5PEclqUZhhGQbVbCQCiDOxg+xiXNySdRH1IqjR\n"
+ "zQiKgD4SPzkxQekExPaIQT/KutWZdMNYybEqooCx8YyeDoN31z7Wa2rv6OulOn/j\n"
+ "wJFvyd2PT/6brHKI4ky8RYroDf4FbVYKfyEW5CSAg2OyL/tY/kSPgy/k0WT7fDwq\n"
+ "dPSuYM9yeWNL6kAhDqDOv8+s3xvOVEljktBvQvItQwVLmHszC3E2AcnaxzdblKPu\n"
+ "e3+mBT80NXHjERK2ht+/9JYseK1ujNbNAaG8SbKfU3FF0VlyJ0QW6TuIEdpNnymT\n"
+ "0fm0cDfKNaoeJIFnBRZhgIOJAic9DM0cTe/vSG69DaUYsaQPp36al7Fbux3GpFHS\n"
+ "OtJEySYGro/6zvJ9dDIEfIGZjA3RaMt6+DuyJZXQdT2RNXa9j60xW7dXh0En4n82\n"
+ "JUKTxYhDPLS5c8BzpJqoopxpKwElmrJ7Y3xpd6z2vIlD8ftuZrkk6siTMNQ2s7MI\n"
+ "Xl332O+0H4k7uSfczHPOOw36TFhNjGQAP0b7O+0/RVG0ttOIoAn7ZkX3nfdbtG5B\n"
+ "DWKvDaopvrcC2/scQ5uLUnqnBiGw1XiYpdg5ang7knHNzHZAIekVaYYZigpCAKp+\n"
+ "OtoaDeUEzqFhYVmF8ad1fgvC9ZUsuxS4XUHCKl0H6CJcvW9MJPVbveqYoK+j9qKd\n"
+ "iMIkQBP1kE2rzGZVGUkZTpM9LVD9nP0nsbr6E8BatFcNgRirsg2BTJglNpXlCmY6\n"
+ "ldzJ/ELBbzoXIn+0wTGai0o4eBPx55baef69JfPuZqEB9pLNE+mHstrqIwcfqYu4\n"
+ "M+Vzun1QshRMj9a1PVkIHfs1fLeebI4QCHO0vJlc9K4iYPM4rsDNO3YaAgGRuARS\n"
+ "f3McGiGFxkv5zxe8i05ZBnn+exE77jpRKxd223jAMe2wu4WiFB7ZVo4Db6b5Oo2T\n"
+ "TPh3VuY7TNMEKkcUi+mGLKjroocQ5j8WQYlfnyOaTalUVQDzOTNb67QIIoiszR0U\n"
+ "+AXGyxHj0QtotZFoPME+AbS9Zqy3SgSOuIzPBPU5zS4uoKNdD5NPE5YAuafCjsDy\n"
+ "MT4DVy+cPOQYUK022S7T2nsA1btmvUvD5LL2Mc8VuKsWOn/7FKZua6OCfipt6oX0\n"
+ "1tzYrw0/ALK+CIdVdYIiPPfxGZkr+JSLOOg7u50tpmen9GzxgNTv63miygwUAIDF\n"
+ "u0GbQwOueoA453/N75FcXOgrbqTdivyadUbRP+l7YJk/SfIytyJMOigejp+Z1lzF\n"
+ "-----END RSA PRIVATE KEY-----\n"
);
const QByteArray keyData = keyString.toLatin1();
@@ -181,7 +181,7 @@ void TestOpenSSHKey::testParseRSA()
QCOMPARE(key.fingerprint(), QString("SHA256:DYdaZciYNxCejr+/8x+OKYxeTU1D5UsuIFUG4PWRFkk"));
}
-void TestOpenSSHKey::testDecryptAES256CBC()
+void TestOpenSSHKey::testDecryptOpenSSHAES256CBC()
{
const QString keyString = QString(
"-----BEGIN OPENSSH PRIVATE KEY-----\n"
@@ -215,7 +215,55 @@ void TestOpenSSHKey::testDecryptAES256CBC()
QVERIFY(privateKey.length() == 158);
}
-void TestOpenSSHKey::testDecryptAES256CTR()
+void TestOpenSSHKey::testDecryptRSAAES256CBC()
+{
+ const QString keyString = QString(
+ "-----BEGIN RSA PRIVATE KEY-----\n"
+ "Proc-Type: 4,ENCRYPTED\n"
+ "DEK-Info: AES-256-CBC,D51E3F558B621BD9384627762CBD16AC\n"
+ "\n"
+ "b6nr/06Gj8/Nw3ZFMePFyZeuBodExvZZtZPSH3t/2ArcxXOkoqUhLmlcY/JrvnBF\n"
+ "JHc34wx/6Yng7mqtUMuk2iMemTzOj3JRx8zHUhwPLnjM/tmeOm0wBUb3WB4+rFZW\n"
+ "s1PaIgeKywKgFK0UkcSRpMuSaxheWmHrtJkBsHTF7Tg3ogPL8Dc+nhQlbe/ZGaQb\n"
+ "vMdSYcBMaXngS5ZiOafXeY8+l+IMMOZwy5vPTFQGqKHIzOxFhShs1hSExnwOXy69\n"
+ "wxrA/QftjNEy5ixIeGT7iQfRB04tEVg0DjYphTPmI2ophzFlwJVBjhj2cmmnsMZg\n"
+ "a2TdT/78KZsw2cA5ieMcU6d7Yz5p5nu5dyTbZonn6qWficdZRJwZnVb5ikPnJYbZ\n"
+ "1YJRHHND+RWtpanxz7WhStscTCLeI9w9j2gqBJSjKDPgJaoMiA+tyEoakNlPYg+9\n"
+ "DadJkBGP0g5E9zw0n4niqQ7eCxk7qolmW6Wtn2zL4UyeJKGi9NWFSGW9x/PmAIse\n"
+ "E2KVodiJMRNa8/qUZcW58ZG2uRnFTsW4BXdmzOy/Zp53TVGWStBVLDcldSD03ItD\n"
+ "JIWQWDgWp5xyVqPl+8mkW7xDY0GRVSJCyRkctQeGTGysy0BcNjgQQtiA3lPC0rY5\n"
+ "m2VxrCYU1KuyHsAjs/V8THcW4a1UdPcVBg1QbCh29bMoM6u4MuXVt7rkwxAV9HJa\n"
+ "VbwPsKy7V6G60KaAFIiOs0wdOzBZBoPGd9vBQOEzATh2FYJruDo2OfzEnhv25RxE\n"
+ "1q+C/Jds9cWqaNY8kNtUG799XIKkjrC6KvnoV6UA4BkGs2DAcO9rnwtl/hToEoBe\n"
+ "ZVj72dlTuS6l9rHqKaz2GI0k0SEt/ZoakPHeDRgPNcDvEZWitV8MuD6Mwb47Y88u\n"
+ "sjBmS5k4sJOtB4bLg/UShcqYfkv2OTsK90qGQtba9vMk04Xh1FuxB4fHa5VoKrsX\n"
+ "Th/LB34xoYugd16NPmLuawhSo70o4bT70GYpxnb4brGfjWiuthRdegAG9ESSX+M6\n"
+ "rNKQPnn2GSroIpkoA4k0PaflcE5tpzeIiJdv0h65N3vw6MFnCaWy8sRSy9fMyRim\n"
+ "U8QZB2jcp+YjUU/eny3scuh0Vqt6g1tfFbI84pCC5bArBirf63MeMtwDU/IVImax\n"
+ "xzKOzl7k8ropA+rhAJ4Z9X35EmUncBXhf8g39w6nFuSlqjE6rMxCrsrehljQ1Iuz\n"
+ "bujaJ2PKpf98OejHDKnMDOfBBq0DdeERCYWlCcqWSgrEgHh4vB5dEQAPP5bAkdZj\n"
+ "m0Dq+gF99yadioxf3/MUZVTa1dHklBJJkXTYVPeyH07Th5j7bGCcVb9Zd2Ao/Dia\n"
+ "MPWf6xViCC6d0njCLQY2R8mOR5OMVsdlFrsKZMQ/lqjS/WSM6URDkuGb0Cq94TQd\n"
+ "7DoblcA50FTwYrVXMygWygbjzJxhcoJDHztzwoqLT/ghh+6zRg6R/fY222tHHbhz\n"
+ "nePf421NILzfxnuW+GOwRCM5+IHE3OBS/PYDGijjRFHU4ky0rRRDE64m9CeFzeBh\n"
+ "CnFvW6Yx3Hrh5tXBP7kRZ6KjyrPP7tI4ciVSJceSBLRzFmoBr10kRMm+VsUh2xZH\n"
+ "-----END RSA PRIVATE KEY-----\n"
+ );
+
+ const QByteArray keyData = keyString.toLatin1();
+
+ OpenSSHKey key;
+ QVERIFY(key.parse(keyData));
+ QVERIFY(key.encrypted());
+ QCOMPARE(key.cipherName(), QString("AES-256-CBC"));
+ QVERIFY(!key.openPrivateKey("incorrectpassphrase"));
+ QVERIFY(key.openPrivateKey("correctpassphrase"));
+ QCOMPARE(key.type(), QString("ssh-rsa"));
+ QCOMPARE(key.comment(), QString(""));
+ QCOMPARE(key.fingerprint(), QString("SHA256:1Hsebt2WWnmc72FERsUOgvaajIGHkrMONxXylcmk87U"));
+}
+
+void TestOpenSSHKey::testDecryptOpenSSHAES256CTR()
{
const QString keyString = QString(
"-----BEGIN OPENSSH PRIVATE KEY-----\n"
@@ -248,3 +296,51 @@ void TestOpenSSHKey::testDecryptAES256CTR()
QVERIFY(publicKey.length() == 51);
QVERIFY(privateKey.length() == 158);
}
+
+void TestOpenSSHKey::testDecryptRSAAES256CTR()
+{
+ const QString keyString = QString(
+ "-----BEGIN RSA PRIVATE KEY-----\n"
+ "Proc-Type: 4,ENCRYPTED\n"
+ "DEK-Info: AES-256-CTR,192421854316290DFA8F469A1E8CB9BB\n"
+ "\n"
+ "3h7gUWua+jcvhYj1vUusbMdOG9j8SmNWFV5Hfersi8nF4ddsWEQDnMrRuhtIn4tU\n"
+ "GcLY+SXguim5XXwF8gG1tmvpvFMhudTfX+0cIAX7eAVmqLy2RTA18DWqDwWokVP0\n"
+ "RJPgRJJSorjMtu2F0YGVVjElW7pHIal7luNk3BDgYUMlgSg0BGOWb+9BkXcEnfc8\n"
+ "KEwsJw2onoR2eXo6rYnczGaqPhAPu+I+PfUn0J8PFiffWc1KebRntLdRWeNsBS4p\n"
+ "oxtqByzMYIu/WPSJJ5iFoNdKaWQPiZJB+juwI1wNLEtpzKkhpc7/6mOy87h+0eGV\n"
+ "fF7javrbHv37eE+k2iZXrcLfvRpiBqt5+uhhCaM8TivBeUho5J38ru/wt/dk+OvY\n"
+ "tzXboWA4zVnaYmqta1CkXYKOmb5a8TWEwtxmAuE6kCz/n3pPa6gwkwsyGI65IEyX\n"
+ "ycJsbwUilAzXTcz5bIruGx38Sa9fndAN9llOQMS/hdyNs5W5dO1XZ5gU+ARPce+j\n"
+ "+A2R8oCUv+2ciEu8z3F++U9aTRmTlD3xeIM0IWUFXKt8Y9fSRC5XoPCbZYNxnV6/\n"
+ "hn9NPKCb890Faxies3MABOB5IZ0aTPWkx9ntxFhMaXyfkX2YthNO0GzAENPP9Knt\n"
+ "DYhQePlKQ7sNi8+wzsHNeDxNuL/+Rib2MN3ankDtHIsqFz/Em+rD0+3ya8bLy3pP\n"
+ "eeUiNpezL+uxI5llq/pikzK4sOgvH1r5YEkMxt9I09grkBwxR7DMBo0vgRE2MLiL\n"
+ "nlri8TDwArC1+0gE8NspkkClsBOHXuVlGZo5lup2tn5MzERQcLvuFnAby/GnaVXQ\n"
+ "Hm76teb1wMdL58FrdZsKR6e80E+F6JpTsz0a3XJqptgAwGsoxqizkUNJG5hRP8bi\n"
+ "NBCFQZPeYi/GxgN5O2UkxhgRkKAcrHg+G87nhLk1ipsc214rb6iOspNizP6fGDuv\n"
+ "/bsNTpYRgMNxCLh5Nv0HSUqckoNKOcIVe/9nF5/LLFGfhz95agjKTbBygThFK28N\n"
+ "bnHq5fO9yKCMrGCRBQ6No1wwexyS4IAq17LcQP3k4w4n+Wt2GjO5HIldGOEyGqCE\n"
+ "zeHYrPpGXF/yf3XTm00XghdQtVtRJptdddXVGZN3EN2w7/ghOSIIlsJO9C4IRgU3\n"
+ "WkhX7oOpSE4wmXd5Ada+D1U46snW5nWANWko2NmQNVDeJcvuymL6t2ccNYeFWiA+\n"
+ "Hlv0avBnqng7ZWPxYacqZI3+vU0rN9usN1pzwY/4NsBa34o3M7u6KvzEkyewbyUT\n"
+ "VfXLJ8XRzb2u4NqQv0WiTBIRxvVB1sRPcrwB4HWKHwRFT8T7f1fefteROrKV7aKm\n"
+ "Q48pckidDM0ORh1yIET8u24Mreo5eeWXjVJ9MHoM0486VySYxMwk8yp4tnaHx5kd\n"
+ "fGlBbbwFOifhzjAk0u3KJRAG85t2GZhfTMo1IHS2kdu4Xs1N00ZmK0hjeGG+DCwy\n"
+ "06ZKHOF5BHWU3SpQEjCsPDwfIpOINWGAJJnp6NIVf7FkHwViV50GWWGSZal4NqZy\n"
+ "kR19buHiOb7KnGoPCw8MUmIym8v30FePhM4YQ7ASmRtsXlAhQNRX\n"
+ "-----END RSA PRIVATE KEY-----\n"
+ );
+
+ const QByteArray keyData = keyString.toLatin1();
+
+ OpenSSHKey key;
+ QVERIFY(key.parse(keyData));
+ QVERIFY(key.encrypted());
+ QCOMPARE(key.cipherName(), QString("AES-256-CTR"));
+ QVERIFY(!key.openPrivateKey("incorrectpassphrase"));
+ QVERIFY(key.openPrivateKey("correctpassphrase"));
+ QCOMPARE(key.type(), QString("ssh-rsa"));
+ QCOMPARE(key.comment(), QString(""));
+ QCOMPARE(key.fingerprint(), QString("SHA256:1Hsebt2WWnmc72FERsUOgvaajIGHkrMONxXylcmk87U"));
+}
diff --git a/tests/TestOpenSSHKey.h b/tests/TestOpenSSHKey.h
index 5d2724410..2d791dee8 100644
--- a/tests/TestOpenSSHKey.h
+++ b/tests/TestOpenSSHKey.h
@@ -31,9 +31,11 @@ private slots:
void testParse();
void testParseDSA();
void testParseRSA();
- void testDecryptAES128CBC();
- void testDecryptAES256CBC();
- void testDecryptAES256CTR();
+ void testDecryptRSAAES128CBC();
+ void testDecryptOpenSSHAES256CBC();
+ void testDecryptRSAAES256CBC();
+ void testDecryptOpenSSHAES256CTR();
+ void testDecryptRSAAES256CTR();
};
#endif // TESTOPENSSHKEY_H
diff --git a/tests/gui/TestGui.cpp b/tests/gui/TestGui.cpp
index b2ccd332d..54203c284 100644
--- a/tests/gui/TestGui.cpp
+++ b/tests/gui/TestGui.cpp
@@ -71,6 +71,8 @@ void TestGui::initTestCase()
Config::createTempFileInstance();
// Disable autosave so we can test the modified file indicator
Config::instance()->set("AutoSaveAfterEveryChange", false);
+ // Enable the tray icon so we can test hiding/restoring the window
+ Config::instance()->set("GUI/ShowTrayIcon", true);
m_mainWindow = new MainWindow();
m_tabWidget = m_mainWindow->findChild<DatabaseTabWidget*>("tabWidget");
@@ -1091,6 +1093,32 @@ void TestGui::testDragAndDropKdbxFiles()
QCOMPARE(m_tabWidget->count(), openedDatabasesCount);
}
+void TestGui::testTrayRestoreHide()
+{
+ if (!QSystemTrayIcon::isSystemTrayAvailable()) {
+ QSKIP("QSystemTrayIcon::isSystemTrayAvailable() = false, skipping tray restore/hide test...");
+ }
+
+ QSystemTrayIcon* trayIcon = m_mainWindow->findChild<QSystemTrayIcon*>();
+ QVERIFY(m_mainWindow->isVisible());
+
+ trayIcon->activated(QSystemTrayIcon::Trigger);
+ Tools::wait(100);
+ QVERIFY(!m_mainWindow->isVisible());
+
+ trayIcon->activated(QSystemTrayIcon::Trigger);
+ Tools::wait(100);
+ QVERIFY(m_mainWindow->isVisible());
+
+ trayIcon->activated(QSystemTrayIcon::Trigger);
+ Tools::wait(100);
+ QVERIFY(!m_mainWindow->isVisible());
+
+ trayIcon->activated(QSystemTrayIcon::Trigger);
+ Tools::wait(100);
+ QVERIFY(m_mainWindow->isVisible());
+}
+
void TestGui::cleanupTestCase()
{
delete m_mainWindow;
diff --git a/tests/gui/TestGui.h b/tests/gui/TestGui.h
index 0b403731d..e7232ccab 100644
--- a/tests/gui/TestGui.h
+++ b/tests/gui/TestGui.h
@@ -63,6 +63,7 @@ private slots:
void testKeePass1Import();
void testDatabaseLocking();
void testDragAndDropKdbxFiles();
+ void testTrayRestoreHide();
private:
int addCannedEntries();