Merge branch 'master' into develop

This commit is contained in:
Jonathan White 2019-03-19 19:01:31 -04:00
commit 31bd90a8df
No known key found for this signature in database
GPG key ID: 440FC65F2E0C6E01
99 changed files with 4428 additions and 3872 deletions

View file

@ -1,7 +1,7 @@
[main] [main]
host = https://www.transifex.com host = https://www.transifex.com
[keepassxc.keepassx_ents] [keepassxc.keepassxc]
source_file = share/translations/keepassx_en.ts source_file = share/translations/keepassx_en.ts
file_filter = share/translations/keepassx_<lang>.ts file_filter = share/translations/keepassx_<lang>.ts
source_lang = en source_lang = en

View file

@ -1,8 +1,34 @@
2.4.0-preview (TBD) 2.4.0 (2019-03-19)
========================= =========================
This is a pre-release build, view merged PR's at - New Database Wizard [#1952]
https://github.com/keepassxreboot/keepassxc/pulls?q=is%3Apr+milestone%3Av2.4.0+is%3Aclosed - Advanced Search [#1797]
- Automatic update checker [#2648]
- KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739]
- Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439]
- Remove KeePassHttp support [#1752]
- CLI: output info to stderr for easier scripting [#2558]
- CLI: Add --quiet option [#2507]
- CLI: Add create command [#2540]
- CLI: Add recursive listing of entries [#2345]
- CLI: Fix stdin/stdout encoding on Windows [#2425]
- SSH Agent: Support OpenSSH for Windows [#1994]
- macOS: TouchID Quick Unlock [#1851]
- macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583]
- Linux: Prevent Klipper from storing secrets in clipboard [#1969]
- Linux: Use polling based file watching for NFS [#2171]
- Linux: Enable use of browser plugin in Snap build [#2802]
- TOTP QR Code Generator [#1167]
- High-DPI Scaling for 4k screens [#2404]
- Make keyboard shortcuts more consistent [#2431]
- Warn user if deleting referenced entries [#1744]
- Allow toolbar to be hidden and repositioned [#1819, #2357]
- Increase max allowed database timeout to 12 hours [#2173]
- Password generator uses existing password length by default [#2318]
- Improve alert message box button labels [#2376]
- Show message when a database merge makes no changes [#2551]
- Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790]
- Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731]
2.3.4 (2018-08-21) 2.3.4 (2018-08-21)
========================= =========================

View file

@ -236,15 +236,8 @@ checkGitRepository() {
fi fi
} }
checkTagExists() {
git tag | grep -q "$TAG_NAME"
if [ $? -ne 0 ]; then
exitError "Tag '${TAG_NAME}' does not exist!"
fi
}
checkReleaseDoesNotExist() { checkReleaseDoesNotExist() {
git tag | grep -q "$TAG_NAME" git tag | grep -q "^$TAG_NAME$"
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
exitError "Release '$RELEASE_NAME' (tag: '$TAG_NAME') already exists!" exitError "Release '$RELEASE_NAME' (tag: '$TAG_NAME') already exists!"
fi fi
@ -325,6 +318,11 @@ checkSnapcraft() {
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
exitError "'snapcraft.yaml' has not been updated to the '${RELEASE_NAME}' release!" exitError "'snapcraft.yaml' has not been updated to the '${RELEASE_NAME}' release!"
fi fi
grep -qPzo "KEEPASSXC_BUILD_TYPE=Release" snapcraft.yaml
if [ $? -ne 0 ]; then
exitError "'snapcraft.yaml' is not set for a release build!"
fi
} }
checkTransifexCommandExists() { checkTransifexCommandExists() {
@ -333,12 +331,6 @@ checkTransifexCommandExists() {
fi fi
} }
checkOsslsigncodeCommandExists() {
if ! cmdExists osslsigncode; then
exitError "osslsigncode command not found on the PATH! Please install it using 'pacman -S mingw-w64-osslsigncode'."
fi
}
checkSigntoolCommandExists() { checkSigntoolCommandExists() {
if ! cmdExists signtool; then if ! cmdExists signtool; then
exitError "signtool command not found on the PATH! Add the Windows SDK binary folder to your PATH." exitError "signtool command not found on the PATH! Add the Windows SDK binary folder to your PATH."
@ -818,6 +810,10 @@ build() {
shift shift
done done
if [[ ${build_appsign} && ! -f ${build_key} ]]; then
exitError "--appsign specified with invalid key file\n"
fi
init init
OUTPUT_DIR="$(realpath "$OUTPUT_DIR")" OUTPUT_DIR="$(realpath "$OUTPUT_DIR")"
@ -912,7 +908,7 @@ build() {
make ${MAKE_OPTIONS} package make ${MAKE_OPTIONS} package
# Appsign the executables if desired # Appsign the executables if desired
if [[ ${build_appsign} && ! -z ${build_key} ]]; then if [[ ${build_appsign} ]]; then
logInfo "Signing executable files" logInfo "Signing executable files"
appsign "-f" "./${APP_NAME}-${RELEASE_NAME}.dmg" "-k" "${build_key}" appsign "-f" "./${APP_NAME}-${RELEASE_NAME}.dmg" "-k" "${build_key}"
fi fi
@ -928,9 +924,9 @@ build() {
mingw32-make ${MAKE_OPTIONS} preinstall mingw32-make ${MAKE_OPTIONS} preinstall
# Appsign the executables if desired # Appsign the executables if desired
if [[ ${build_appsign} && ! -z ${build_key} ]]; then if [[ ${build_appsign} ]]; then
logInfo "Signing executable files" logInfo "Signing executable files"
appsign "-f" $(find src | grep '\.exe') "-k" "${build_key}" appsign "-f" $(find src | grep -P '\.exe$|\.dll$') "-k" "${build_key}"
fi fi
# Call cpack directly instead of calling make package. # Call cpack directly instead of calling make package.
@ -1172,8 +1168,6 @@ appsign() {
done done
elif [ "$(uname -o)" == "Msys" ]; then elif [ "$(uname -o)" == "Msys" ]; then
checkOsslsigncodeCommandExists
if [[ ! -f "${key}" ]]; then if [[ ! -f "${key}" ]]; then
exitError "Key file was not found!" exitError "Key file was not found!"
fi fi
@ -1182,20 +1176,8 @@ appsign() {
echo echo
for f in "${sign_files[@]}"; do for f in "${sign_files[@]}"; do
if [[ ${f: -4} == ".exe" ]]; then ext=${f: -4}
logInfo "Signing file '${f}' using osslsigncode..." if [[ $ext == ".msi" || $ext == ".exe" || $ext == ".dll" ]]; then
# output a signed exe; we have to use a different name due to osslsigntool limitations
osslsigncode sign -pkcs12 "${key}" -pass "${password}" -n "KeePassXC" \
-t "http://timestamp.comodoca.com/authenticode" -in "${f}" -out "${f}.signed"
if [ 0 -ne $? ]; then
rm -f "${f}.signed"
exitError "Signing failed!"
fi
# overwrite the original exe with the signed exe
mv -f "${f}.signed" "${f}"
elif [[ ${f: -4} == ".msi" ]]; then
# Make sure we can find the signtool # Make sure we can find the signtool
checkSigntoolCommandExists checkSigntoolCommandExists

View file

@ -50,11 +50,38 @@
</screenshots> </screenshots>
<releases> <releases>
<release version="2.4.0-preview" date="TBD"> <release version="2.4.0" date="2019-03-19">
<description> <description>
<p> <ul>
This is a pre-release build, <a href="https://github.com/keepassxreboot/keepassxc/pulls?q=is%3Apr+milestone%3Av2.4.0+is%3Aclosed">click to view merged PR's</a> <li>New Database Wizard [#1952]</li>
</p> <li>Advanced Search [#1797]</li>
<li>Automatic update checker [#2648]</li>
<li>KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739]</li>
<li>Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439]</li>
<li>Remove KeePassHttp support [#1752]</li>
<li>CLI: output info to stderr for easier scripting [#2558]</li>
<li>CLI: Add --quiet option [#2507]</li>
<li>CLI: Add create command [#2540]</li>
<li>CLI: Add recursive listing of entries [#2345]</li>
<li>CLI: Fix stdin/stdout encoding on Windows [#2425]</li>
<li>SSH Agent: Support OpenSSH for Windows [#1994]</li>
<li>macOS: TouchID Quick Unlock [#1851]</li>
<li>macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583]</li>
<li>Linux: Prevent Klipper from storing secrets in clipboard [#1969]</li>
<li>Linux: Use polling based file watching for NFS [#2171]</li>
<li>Linux: Enable use of browser plugin in Snap build [#2802]</li>
<li>TOTP QR Code Generator [#1167]</li>
<li>High-DPI Scaling for 4k screens [#2404]</li>
<li>Make keyboard shortcuts more consistent [#2431]</li>
<li>Warn user if deleting referenced entries [#1744]</li>
<li>Allow toolbar to be hidden and repositioned [#1819, #2357]</li>
<li>Increase max allowed database timeout to 12 hours [#2173]</li>
<li>Password generator uses existing password length by default [#2318]</li>
<li>Improve alert message box button labels [#2376]</li>
<li>Show message when a database merge makes no changes [#2551]</li>
<li>Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790]</li>
<li>Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731]</li>
</ul>
</description> </description>
</release> </release>
<release version="2.3.4" date="2018-08-21"> <release version="2.3.4" date="2018-08-21">

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>نسخ إلى الحافظة</translation> <translation>نسخ إلى الحافظة</translation>
</message> </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> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>مشرفي المشروع:</translation> <translation>مشرفي المشروع:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</source>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>شكر خاص من فريق KeePassXC يذهب إلى debfx لإنشاء KeePassX الأصلي.</translation> <translation>شكر خاص من فريق KeePassXC يذهب إلى debfx لإنشاء KeePassX الأصلي.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Build Type: %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Auto-Type</source>
<translation>الطباعة التلقائية</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>تكامل المتصفح</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>وكيل SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation type="unfinished"/>
</message>
<message>
<source>TouchID</source>
<translation type="unfinished"/>
</message>
<message>
<source>None</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -655,14 +587,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>حدد موقع خادم الوكيل المخصص</translation> <translation>حدد موقع خادم الوكيل المخصص</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>نحن متأسفون, ولكن KeePassXC-Browser غير مدعوم لإصدارات Snap في الوقت الراهن.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -684,6 +608,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -757,9 +693,19 @@ Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -921,6 +867,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1664,6 +1614,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2101,6 +2055,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Clear</source>
<translation>مسح</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2572,14 +2542,6 @@ This may cause the affected plugins to malfunction.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3172,6 +3134,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3816,10 +3794,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -4853,6 +4827,10 @@ Available commands:
<source>Database password: </source> <source>Database password: </source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5126,8 +5104,7 @@ Available commands:
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5145,10 +5122,6 @@ Available commands:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5225,14 +5198,6 @@ Available commands:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5257,6 +5222,34 @@ Available commands:
<source>Export to %1</source> <source>Export to %1</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -7,7 +7,7 @@
</message> </message>
<message> <message>
<source>About</source> <source>About</source>
<translation>Quant</translation> <translation>Quant a</translation>
</message> </message>
<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> <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>
@ -23,7 +23,7 @@
</message> </message>
<message> <message>
<source>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;See Contributions on GitHub&lt;/a&gt;</source> <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;Veure els contribuïdors a GitHub&lt;/a&gt;</translation> <translation>&lt;a href=&quot;https://github.com/keepassxreboot/keepassxc/graphs/contributors&quot;&gt;Vegeu les contribucions a GitHub&lt;/a&gt;</translation>
</message> </message>
<message> <message>
<source>Debug Info</source> <source>Debug Info</source>
@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Copia al porta-retalls</translation> <translation>Copia al porta-retalls</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revisió: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribució: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Llibreries</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Sistema operatiu: %1
Arquitectura de la CPU: %2
Nucli: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Extensions habilitades:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Mantenidors del projecte:</translation> <translation>Mantenidors del projecte:</translation>
@ -69,50 +45,6 @@ Nucli: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Agraïments de l&apos;equip de KeePassXC a debfx per crear el KeePassX original.</translation> <translation>Agraïments de l&apos;equip de KeePassXC a debfx per crear el KeePassX original.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Build Type: %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Auto-Type</source>
<translation>Compleció automàtica</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Integració amb el navegador</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>Agent SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation type="unfinished"/>
</message>
<message>
<source>TouchID</source>
<translation type="unfinished"/>
</message>
<message>
<source>None</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -145,19 +77,19 @@ Nucli: %3 %4</translation>
</message> </message>
<message> <message>
<source>Icon only</source> <source>Icon only</source>
<translation type="unfinished"/> <translation>Només la icona</translation>
</message> </message>
<message> <message>
<source>Text only</source> <source>Text only</source>
<translation type="unfinished"/> <translation>Només text</translation>
</message> </message>
<message> <message>
<source>Text beside icon</source> <source>Text beside icon</source>
<translation type="unfinished"/> <translation>Text enlloc d&apos;icona</translation>
</message> </message>
<message> <message>
<source>Text under icon</source> <source>Text under icon</source>
<translation type="unfinished"/> <translation>Text sota la icona</translation>
</message> </message>
<message> <message>
<source>Follow style</source> <source>Follow style</source>
@ -337,7 +269,7 @@ Nucli: %3 %4</translation>
</message> </message>
<message> <message>
<source> min</source> <source> min</source>
<translation type="unfinished"/> <translation>min</translation>
</message> </message>
<message> <message>
<source>Forget TouchID after inactivity of</source> <source>Forget TouchID after inactivity of</source>
@ -655,14 +587,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -677,13 +601,25 @@ Please select the correct database for saving credentials.</source>
</message> </message>
<message> <message>
<source>All Files</source> <source>All Files</source>
<translation type="unfinished"/> <translation>Tots els fitxers</translation>
</message> </message>
<message> <message>
<source>Do not ask permission for HTTP &amp;Basic Auth</source> <source>Do not ask permission for HTTP &amp;Basic Auth</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -754,9 +690,19 @@ Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -875,20 +821,20 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<name>CsvParserModel</name> <name>CsvParserModel</name>
<message numerus="yes"> <message numerus="yes">
<source>%n column(s)</source> <source>%n column(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation> <translation><numerusform>%n columna(es)</numerusform><numerusform>%n columna(es)</numerusform></translation>
</message> </message>
<message> <message>
<source>%1, %2, %3</source> <source>%1, %2, %3</source>
<comment>file info: bytes, rows, columns</comment> <comment>file info: bytes, rows, columns</comment>
<translation type="unfinished"/> <translation>%1, %2, %3</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%n byte(s)</source> <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>
<message numerus="yes"> <message numerus="yes">
<source>%n row(s)</source> <source>%n row(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation> <translation><numerusform>%n fila(es)</numerusform><numerusform>%n fila(es)</numerusform></translation>
</message> </message>
</context> </context>
<context> <context>
@ -918,6 +864,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1005,7 +955,7 @@ Please consider generating a new key file.</source>
<name>DatabaseSettingsDialog</name> <name>DatabaseSettingsDialog</name>
<message> <message>
<source>Advanced Settings</source> <source>Advanced Settings</source>
<translation type="unfinished"/> <translation>Configuració avançada</translation>
</message> </message>
<message> <message>
<source>General</source> <source>General</source>
@ -1017,11 +967,11 @@ Please consider generating a new key file.</source>
</message> </message>
<message> <message>
<source>Master Key</source> <source>Master Key</source>
<translation type="unfinished"/> <translation>Clau Mestra</translation>
</message> </message>
<message> <message>
<source>Encryption Settings</source> <source>Encryption Settings</source>
<translation type="unfinished"/> <translation>Configuració del xifrat</translation>
</message> </message>
<message> <message>
<source>Browser Integration</source> <source>Browser Integration</source>
@ -1048,7 +998,7 @@ Please consider generating a new key file.</source>
</message> </message>
<message> <message>
<source>Stored keys</source> <source>Stored keys</source>
<translation type="unfinished"/> <translation>Claus emmagatzemades</translation>
</message> </message>
<message> <message>
<source>Remove</source> <source>Remove</source>
@ -1056,7 +1006,7 @@ Please consider generating a new key file.</source>
</message> </message>
<message> <message>
<source>Delete the selected key?</source> <source>Delete the selected key?</source>
<translation type="unfinished"/> <translation>Voleu eliminar la clau seleccionada?</translation>
</message> </message>
<message> <message>
<source>Do you really want to delete the selected key? <source>Do you really want to delete the selected key?
@ -1065,11 +1015,11 @@ This may prevent connection to the browser plugin.</source>
</message> </message>
<message> <message>
<source>Key</source> <source>Key</source>
<translation type="unfinished"/> <translation>Clau</translation>
</message> </message>
<message> <message>
<source>Value</source> <source>Value</source>
<translation type="unfinished"/> <translation>Valor</translation>
</message> </message>
<message> <message>
<source>Enable Browser Integration to access these settings.</source> <source>Enable Browser Integration to access these settings.</source>
@ -1171,7 +1121,7 @@ This is necessary to maintain compatibility with the browser plugin.</source>
</message> </message>
<message> <message>
<source>Memory Usage:</source> <source>Memory Usage:</source>
<translation type="unfinished"/> <translation>Ús de memòria:</translation>
</message> </message>
<message> <message>
<source>Parallelism:</source> <source>Parallelism:</source>
@ -1179,11 +1129,11 @@ This is necessary to maintain compatibility with the browser plugin.</source>
</message> </message>
<message> <message>
<source>Decryption Time:</source> <source>Decryption Time:</source>
<translation type="unfinished"/> <translation>Temps de desxifrat:</translation>
</message> </message>
<message> <message>
<source>?? s</source> <source>?? s</source>
<translation type="unfinished"/> <translation>?? s</translation>
</message> </message>
<message> <message>
<source>Change</source> <source>Change</source>
@ -1191,11 +1141,11 @@ This is necessary to maintain compatibility with the browser plugin.</source>
</message> </message>
<message> <message>
<source>100 ms</source> <source>100 ms</source>
<translation type="unfinished"/> <translation>100 ms</translation>
</message> </message>
<message> <message>
<source>5 s</source> <source>5 s</source>
<translation type="unfinished"/> <translation>5 s</translation>
</message> </message>
<message> <message>
<source>Higher values offer more protection, but opening the database will take longer.</source> <source>Higher values offer more protection, but opening the database will take longer.</source>
@ -1211,11 +1161,11 @@ This is necessary to maintain compatibility with the browser plugin.</source>
</message> </message>
<message> <message>
<source>KDBX 4.0 (recommended)</source> <source>KDBX 4.0 (recommended)</source>
<translation type="unfinished"/> <translation>KDBX 4.0 (recomanat)</translation>
</message> </message>
<message> <message>
<source>KDBX 3.1</source> <source>KDBX 3.1</source>
<translation type="unfinished"/> <translation>KDBX 3.1</translation>
</message> </message>
<message> <message>
<source>unchanged</source> <source>unchanged</source>
@ -1263,7 +1213,7 @@ If you keep this number, your database may be too easy to crack!</source>
<message numerus="yes"> <message numerus="yes">
<source> MiB</source> <source> MiB</source>
<comment>Abbreviation for Mebibytes (KDF settings)</comment> <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>
<message numerus="yes"> <message numerus="yes">
<source> thread(s)</source> <source> thread(s)</source>
@ -1273,12 +1223,12 @@ If you keep this number, your database may be too easy to crack!</source>
<message numerus="yes"> <message numerus="yes">
<source>%1 ms</source> <source>%1 ms</source>
<comment>milliseconds</comment> <comment>milliseconds</comment>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation> <translation><numerusform>%1 ms</numerusform><numerusform>%1 ms</numerusform></translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 s</source> <source>%1 s</source>
<comment>seconds</comment> <comment>seconds</comment>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation> <translation><numerusform>%1 s</numerusform><numerusform>%1 s</numerusform></translation>
</message> </message>
</context> </context>
<context> <context>
@ -1340,19 +1290,19 @@ If you keep this number, your database may be too easy to crack!</source>
</message> </message>
<message> <message>
<source>Type</source> <source>Type</source>
<translation type="unfinished"/> <translation>Tipus</translation>
</message> </message>
<message> <message>
<source>Path</source> <source>Path</source>
<translation type="unfinished"/> <translation>Camí</translation>
</message> </message>
<message> <message>
<source>Last Signer</source> <source>Last Signer</source>
<translation type="unfinished"/> <translation>Últim signant</translation>
</message> </message>
<message> <message>
<source>Certificates</source> <source>Certificates</source>
<translation type="unfinished"/> <translation>Certificats</translation>
</message> </message>
<message> <message>
<source> &gt; </source> <source> &gt; </source>
@ -1386,22 +1336,22 @@ Are you sure you want to continue without a password?</source>
</message> </message>
<message> <message>
<source>Unknown error</source> <source>Unknown error</source>
<translation type="unfinished"/> <translation>Error desconegut</translation>
</message> </message>
<message> <message>
<source>Failed to change master key</source> <source>Failed to change master key</source>
<translation type="unfinished"/> <translation>No s&apos;ha pogut canviar la clau mestra</translation>
</message> </message>
</context> </context>
<context> <context>
<name>DatabaseSettingsWidgetMetaDataSimple</name> <name>DatabaseSettingsWidgetMetaDataSimple</name>
<message> <message>
<source>Database Name:</source> <source>Database Name:</source>
<translation type="unfinished"/> <translation>Nom de la base de dades:</translation>
</message> </message>
<message> <message>
<source>Description:</source> <source>Description:</source>
<translation type="unfinished"/> <translation>Descripció:</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1461,7 +1411,7 @@ This is definitely a bug, please report it to the developers.</source>
</message> </message>
<message> <message>
<source>New Database</source> <source>New Database</source>
<translation type="unfinished"/> <translation>Base de dades nova</translation>
</message> </message>
<message> <message>
<source>%1 [New Database]</source> <source>%1 [New Database]</source>
@ -1652,6 +1602,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2089,6 +2043,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Clear</source>
<translation>Neteja</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2233,11 +2203,11 @@ This may cause the affected plugins to malfunction.</source>
</message> </message>
<message> <message>
<source>Key</source> <source>Key</source>
<translation type="unfinished"/> <translation>Clau</translation>
</message> </message>
<message> <message>
<source>Value</source> <source>Value</source>
<translation type="unfinished"/> <translation>Valor</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2555,14 +2525,6 @@ This may cause the affected plugins to malfunction.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3155,6 +3117,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3640,7 +3618,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>Advanced Settings</source> <source>Advanced Settings</source>
<translation type="unfinished"/> <translation>Configuració avançada</translation>
</message> </message>
<message> <message>
<source>Simple Settings</source> <source>Simple Settings</source>
@ -3651,7 +3629,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
<name>NewDatabaseWizardPageEncryption</name> <name>NewDatabaseWizardPageEncryption</name>
<message> <message>
<source>Encryption Settings</source> <source>Encryption Settings</source>
<translation type="unfinished"/> <translation>Opcions de xifrat</translation>
</message> </message>
<message> <message>
<source>Here you can adjust the database encryption settings. Don&apos;t worry, you can change them later in the database settings.</source> <source>Here you can adjust the database encryption settings. Don&apos;t worry, you can change them later in the database settings.</source>
@ -3797,10 +3775,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -4135,7 +4109,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>Unknown error</source> <source>Unknown error</source>
<translation type="unfinished"/> <translation>Error desconegut</translation>
</message> </message>
<message> <message>
<source>Add a new entry to a database.</source> <source>Add a new entry to a database.</source>
@ -4827,6 +4801,10 @@ Available commands:
<source>Database password: </source> <source>Database password: </source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5048,7 +5026,7 @@ Available commands:
</message> </message>
<message> <message>
<source>Path</source> <source>Path</source>
<translation type="unfinished"/> <translation>Camí</translation>
</message> </message>
<message> <message>
<source>Status</source> <source>Status</source>
@ -5100,8 +5078,7 @@ Available commands:
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5119,10 +5096,6 @@ Available commands:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5199,14 +5172,6 @@ Available commands:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5231,6 +5196,34 @@ Available commands:
<source>Export to %1</source> <source>Export to %1</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Zkopírovat do schránky</translation> <translation>Zkopírovat do schránky</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revize: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribuce: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Knihovny:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Operační systém: %1
Architektura procesoru: %2
Jádro systému: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Zapnutá rozšíření:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Správci projektu:</translation> <translation>Správci projektu:</translation>
@ -69,52 +45,6 @@ Jádro systému: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Tým KeePassXC děkuje zvláště vývojáři debfx za vytvoření původního KeePassX.</translation> <translation>Tým KeePassXC děkuje zvláště vývojáři debfx za vytvoření původního KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Verze %1
</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Typ sestavení: %1
</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Automatické vyplňování</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Napojení webového prohlížeče</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH agent</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Žádné</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (podepsané a nepodepsané sdílení)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (pouze podepsané sdílení)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (pouze nepodepsané sdílení)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -658,14 +588,6 @@ Vyberte databázi, do které chcete přihlašovací údaje uložit.</translation
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Vybrat uživatelem určené umístění zprostředkovávající aplikace</translation> <translation>Vybrat uživatelem určené umístění zprostředkovávající aplikace</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Je nám líto, ale KeePassXC-Browser v tuto chvíli není ve snap vydáních podporován.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>Aby fungovalo napojení na prohlížeč, je třeba KeePassXC. &lt;br /&gt; Stáhnete ho pro %1 a %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Browser</translation> <translation>&amp;Tor Browser</translation>
@ -687,6 +609,18 @@ Vyberte databázi, do které chcete přihlašovací údaje uložit.</translation
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Neptat se na oprávnění pro HTTP &amp;Basic Auth</translation> <translation>Neptat se na oprávnění pro HTTP &amp;Basic Auth</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -761,12 +695,20 @@ Přesunuto %2 klíčů do uživatelsky určených dat.</translation>
<translation>KeePassXC: zjištěna nastavení starého napojení na webový prohlížeč</translation> <translation>KeePassXC: zjištěna nastavení starého napojení na webový prohlížeč</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Byla zjištěna nastavení starého napojení na prohlížeč. <message>
Chcete povýšit nastavení na nejnovější standard? <source>A request for creating a new group &quot;%1&quot; has been received.
Toto je nezbytné pro zachování kompatibility se zásuvným modulem pro prohlížeč.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -928,6 +870,10 @@ Toto je nezbytné pro zachování kompatibility se zásuvným modulem pro prohl
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Do souboru nelze zapisovat, protože je otevřen v režimu pouze pro čtení.</translation> <translation>Do souboru nelze zapisovat, protože je otevřen v režimu pouze pro čtení.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1682,6 +1628,10 @@ Vypnout bezpečné ukládání a zkusit to znovu?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Databáze nebyla operací slučování upravena.</translation> <translation>Databáze nebyla operací slučování upravena.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2119,6 +2069,22 @@ Vypnout bezpečné ukládání a zkusit to znovu?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Vybrat importní/exportní soubor</translation> <translation>Vybrat importní/exportní soubor</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Vyčistit</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2594,14 +2560,6 @@ Dotčený zásuvný modul to může rozbít.</translation>
<translation>[prázdné]</translation> <translation>[prázdné]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3196,6 +3154,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Synchronizovat s</translation> <translation>Synchronizovat s</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3845,10 +3819,6 @@ Očekávejte chyby a drobné problémy, tato verze není určena pro produkční
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;Heslo je hlavní metodou zabezpečení databáze.&lt;/p&gt;&lt;p&gt;Dobrá hesla jsou dlouhá a nepoužívaná stejná na více místech. KeePassXC ho pro vás může vytvořit.&lt;/p&gt;</translation> <translation>&lt;p&gt;Heslo je hlavní metodou zabezpečení databáze.&lt;/p&gt;&lt;p&gt;Dobrá hesla jsou dlouhá a nepoužívaná stejná na více místech. KeePassXC ho pro vás může vytvořit.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Heslo nemůže zůstat nevyplněné.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Zadání hesla se neshodují.</translation> <translation>Zadání hesla se neshodují.</translation>
@ -4884,6 +4854,10 @@ Příkazy k dispozici:
<source>Database password: </source> <source>Database password: </source>
<translation>Heslo databáze:</translation> <translation>Heslo databáze:</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5157,9 +5131,8 @@ Příkazy k dispozici:
<translation>Exportovaný certifikát se liší od toho, který je používán. Chcete exportovat stávající certifikát?</translation> <translation>Exportovaný certifikát se liší od toho, který je používán. Chcete exportovat stávající certifikát?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5176,10 +5149,6 @@ Příkazy k dispozici:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Importovat z kontejneru s certifikátem</translation> <translation>Importovat z kontejneru s certifikátem</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>Chcete věřit %1 s otiskem %2 z %3</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Tentokrát ne</translation> <translation>Tentokrát ne</translation>
@ -5256,14 +5225,6 @@ Příkazy k dispozici:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Nedaří se zapsat exportní kontejner (%1)</translation> <translation>Nedaří se zapsat exportní kontejner (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Nedaří se zapouzdřit podpis (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Nedaří se zapouzdřit databázi (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>Přepsání nepodepsaného kontejneru sdílení není podporováno exportu zabráněno</translation> <translation>Přepsání nepodepsaného kontejneru sdílení není podporováno exportu zabráněno</translation>
@ -5288,6 +5249,34 @@ Příkazy k dispozici:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Exportovat do %1</translation> <translation>Exportovat do %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>Věříte %1 s otiskem %2 od %3? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Kopier til udklipsholder</translation> <translation>Kopier til udklipsholder</translation>
</message> </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>Biblioteker:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Operativsystem: %1
CPU-arkitektur: %2
Kerne: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Aktiverede udvidelser:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Projektet vedligeholdes af:</translation> <translation>Projektet vedligeholdes af:</translation>
@ -69,50 +45,6 @@ Kerne: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Særlig tak fra KeePassXC holdet går til debfx for at udvikle den oprindelige KeePassX.</translation> <translation>Særlig tak fra KeePassXC holdet går til debfx for at udvikle den oprindelige KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Build Type: %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Auto-Type</source>
<translation>Auto-Indsæt</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Browser-integration</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH Agent</translation>
</message>
<message>
<source>YubiKey</source>
<translation type="unfinished"/>
</message>
<message>
<source>TouchID</source>
<translation type="unfinished"/>
</message>
<message>
<source>None</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -655,14 +587,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Vælg en brugerdefineret proxy lokation</translation> <translation>Vælg en brugerdefineret proxy lokation</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>KeePassXC-Browser er desværre ikke understøttet for Snap udgivelser endnu.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -684,6 +608,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -757,9 +693,19 @@ Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -921,6 +867,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1662,6 +1612,10 @@ Så sikre gem fra og prøv igen?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2099,6 +2053,22 @@ Så sikre gem fra og prøv igen?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Clear</source>
<translation>Ryd</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2570,14 +2540,6 @@ Dette kan få det påvirkede plugin til at svigte.</translation>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3170,6 +3132,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3814,10 +3792,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -4850,6 +4824,10 @@ Tilgængelige kommandoer:
<source>Database password: </source> <source>Database password: </source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5123,8 +5101,7 @@ Tilgængelige kommandoer:
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5142,10 +5119,6 @@ Tilgængelige kommandoer:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5222,14 +5195,6 @@ Tilgængelige kommandoer:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5254,6 +5219,34 @@ Tilgængelige kommandoer:
<source>Export to %1</source> <source>Export to %1</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -11,7 +11,7 @@
</message> </message>
<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> <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>Melden Sie Bugs auf: &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> <translation>Melden Sie Fehler auf: &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>
<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> <source>KeePassXC is distributed under the terms of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
@ -31,36 +31,12 @@
</message> </message>
<message> <message>
<source>Include the following information whenever you report a bug:</source> <source>Include the following information whenever you report a bug:</source>
<translation>Geben Sie folgende Informationen an, wenn Sie einen Bug melden:</translation> <translation>Geben Sie folgende Informationen an, wenn Sie einen Fehler melden:</translation>
</message> </message>
<message> <message>
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>In die Zwischenablage kopieren</translation> <translation>In die Zwischenablage kopieren</translation>
</message> </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>Bibliotheken:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Betriebssystem: %1
CPU-Architektur: %2
Kernel: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Aktivierte Erweiterungen:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Projekt-Maintainer:</translation> <translation>Projekt-Maintainer:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Das KeePassXC-Team möchte ganz besonders debfx danken für die Entwicklung des ursprünglichen KeePassX.</translation> <translation>Das KeePassXC-Team möchte ganz besonders debfx danken für die Entwicklung des ursprünglichen KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Version %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Build Typ: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Auto-Type</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Browser-Integration</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH-Agent</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Keine</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (bestätigtes und unbestätigtes Teilen)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (nur bestätigtes Teilen)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (nur unbestätigtes Teilen)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -180,7 +112,7 @@ Kernel: %3 %4</translation>
</message> </message>
<message> <message>
<source>Remember last databases</source> <source>Remember last databases</source>
<translation>Letzte Datenbank merken</translation> <translation>Letzte Datenbanken merken</translation>
</message> </message>
<message> <message>
<source>Remember last key files and security dongles</source> <source>Remember last key files and security dongles</source>
@ -389,7 +321,7 @@ Kernel: %3 %4</translation>
</message> </message>
<message> <message>
<source>Use DuckDuckGo as fallback for downloading website icons</source> <source>Use DuckDuckGo as fallback for downloading website icons</source>
<translation>Verwende DuckDuckGo als Ersatz für das Herunterladen von Website-Symbole</translation> <translation>DuckDuckGo als Ersatz für das Herunterladen von Website-Symbolen verwenden</translation>
</message> </message>
</context> </context>
<context> <context>
@ -656,14 +588,6 @@ Bitte wähle die richtige Datenbank zum speichern der Anmeldedaten.</translation
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Benutzerdefinierten Proxy-Pfad auswählen</translation> <translation>Benutzerdefinierten Proxy-Pfad auswählen</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Sorry, aber KeePassXC-Browser wird derzeit für Snap-Releases nicht unterstützt.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser wird für die Funktion der Browserintegration benötig. &lt;br /&gt;Lade es für %1 und %2 herunter.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Browser</translation> <translation>&amp;Tor Browser</translation>
@ -685,6 +609,18 @@ Bitte wähle die richtige Datenbank zum speichern der Anmeldedaten.</translation
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Nicht nach HTTP Basic Auth fragen</translation> <translation>Nicht nach HTTP Basic Auth fragen</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,12 +695,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC: native Browser-Integrations-Einstellungen gefunden</translation> <translation>KeePassXC: native Browser-Integrations-Einstellungen gefunden</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Einstellungen zur veralteten Browserintegration gefunden <message>
Sollen diese Einstellungen zur aktuellen Version migriert werden? <source>A request for creating a new group &quot;%1&quot; has been received.
Das ist nötig um das Browser-Plugin kompatibel zu halten.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -925,6 +869,10 @@ Das ist nötig um das Browser-Plugin kompatibel zu halten.</translation>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Datei ist schreibgeschützt</translation> <translation>Datei ist schreibgeschützt</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1145,7 +1093,7 @@ Zugriffserlaubnisse zu allen Einträgen werden gelöscht.</translation>
</message> </message>
<message> <message>
<source>The active database does not contain an entry with permissions.</source> <source>The active database does not contain an entry with permissions.</source>
<translation>Diese Datenbank enthält keinen Eintrag mit Zugangsdaten.</translation> <translation>Die aktive Datenbank enthält keinen Eintrag mit Zugangsdaten.</translation>
</message> </message>
<message> <message>
<source>Move KeePassHTTP attributes to custom data</source> <source>Move KeePassHTTP attributes to custom data</source>
@ -1162,7 +1110,7 @@ Das ist nötig um das Browser-Plugin kompatibel zu halten.</translation>
<name>DatabaseSettingsWidgetEncryption</name> <name>DatabaseSettingsWidgetEncryption</name>
<message> <message>
<source>Encryption Algorithm:</source> <source>Encryption Algorithm:</source>
<translation>Verschlüsselungs-Algorithmus.</translation> <translation>Verschlüsselungs-Algorithmus:</translation>
</message> </message>
<message> <message>
<source>AES: 256 Bit (default)</source> <source>AES: 256 Bit (default)</source>
@ -1174,7 +1122,7 @@ Das ist nötig um das Browser-Plugin kompatibel zu halten.</translation>
</message> </message>
<message> <message>
<source>Key Derivation Function:</source> <source>Key Derivation Function:</source>
<translation>Schlüssel-Ableitungsfunktion</translation> <translation>Schlüssel-Ableitungsfunktion:</translation>
</message> </message>
<message> <message>
<source>Transform rounds:</source> <source>Transform rounds:</source>
@ -1218,7 +1166,7 @@ Das ist nötig um das Browser-Plugin kompatibel zu halten.</translation>
</message> </message>
<message> <message>
<source>Database format:</source> <source>Database format:</source>
<translation>Datenbanformat:</translation> <translation>Datenbankformat:</translation>
</message> </message>
<message> <message>
<source>This is only important if you need to use your database with other programs.</source> <source>This is only important if you need to use your database with other programs.</source>
@ -1479,7 +1427,7 @@ Das ist definitiv ein Fehler, teile das bitte den Entwicklern mit.</translation>
</message> </message>
<message> <message>
<source>Select CSV file</source> <source>Select CSV file</source>
<translation>Ausgewählte CSV-Datei</translation> <translation>CSV-Datei auswählen</translation>
</message> </message>
<message> <message>
<source>New Database</source> <source>New Database</source>
@ -1680,6 +1628,10 @@ Sicheres Speichern deaktivieren und erneut versuchen?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Datenbank wurde nicht zusammengeführt</translation> <translation>Datenbank wurde nicht zusammengeführt</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -1729,7 +1681,7 @@ Sicheres Speichern deaktivieren und erneut versuchen?</translation>
</message> </message>
<message> <message>
<source>Failed to open private key</source> <source>Failed to open private key</source>
<translation>Privatschlüsel konnte nicht geöffnet werden</translation> <translation>Privatschlüssel konnte nicht geöffnet werden</translation>
</message> </message>
<message> <message>
<source>Entry history</source> <source>Entry history</source>
@ -2117,6 +2069,22 @@ Sicheres Speichern deaktivieren und erneut versuchen?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Wähle Datei für Import/Export</translation> <translation>Wähle Datei für Import/Export</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Löschen</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2197,7 +2165,7 @@ Sicheres Speichern deaktivieren und erneut versuchen?</translation>
</message> </message>
<message> <message>
<source>Hint: You can enable DuckDuckGo as a fallback under Tools&gt;Settings&gt;Security</source> <source>Hint: You can enable DuckDuckGo as a fallback under Tools&gt;Settings&gt;Security</source>
<translation>Tipp: Sie können DuckDuckgo als Ausweichelösung unter Werkzeuge&gt;Einstellungen&gt;Sicherheit festlegen</translation> <translation>Tipp: Sie können DuckDuckGo als Ersatz unter Werkzeuge&gt;Einstellungen&gt;Sicherheit aktivieren</translation>
</message> </message>
<message> <message>
<source>Select Image(s)</source> <source>Select Image(s)</source>
@ -2221,7 +2189,7 @@ Sicheres Speichern deaktivieren und erneut versuchen?</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it?</source> <source>This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation><numerusform>Dieses Symbol wird von %n Eintrag/Einträgen benutzt und wird mit dem Standardsymbol ersetzt. Bist du sicher, dass es gelöscht werden soll?</numerusform><numerusform>Dieses Symbol wird von %n Eintrag/Einträgen benutzt und wird mit dem Standardsymbol ersetzt. Bist du sicher, dass es gelöscht werden soll?</numerusform></translation> <translation><numerusform>Dieses Symbol wird von %n Eintrag benutzt und wird mit dem Standardsymbol ersetzt. Sind Sie sicher, dass es gelöscht werden soll?</numerusform><numerusform>Dieses Symbol wird von %n Einträgen benutzt und wird mit dem Standardsymbol ersetzt. Sind Sie sicher, dass es gelöscht werden soll?</numerusform></translation>
</message> </message>
</context> </context>
<context> <context>
@ -2315,7 +2283,7 @@ Dies kann dazu führen, dass die jeweiligen Plugins nicht mehr richtig funktioni
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Are you sure you want to remove %n attachment(s)?</source> <source>Are you sure you want to remove %n attachment(s)?</source>
<translation><numerusform>Sind Sie sicher, dass sie einen Anhang löschen möchten?</numerusform><numerusform>Sind Sie sicher, dass sie %n Anhänge löschen möchten?</numerusform></translation> <translation><numerusform>Sind Sie sicher, dass Sie einen Anhang löschen möchten?</numerusform><numerusform>Sind Sie sicher, dass Sie %n Anhänge löschen möchten?</numerusform></translation>
</message> </message>
<message> <message>
<source>Save attachments</source> <source>Save attachments</source>
@ -2350,7 +2318,7 @@ Dies kann dazu führen, dass die jeweiligen Plugins nicht mehr richtig funktioni
<message> <message>
<source>Unable to open attachments: <source>Unable to open attachments:
%1</source> %1</source>
<translation>Öffnen des Anhangs nicht möglich: <translation>Öffnen der Anhänge nicht möglich:
%1</translation> %1</translation>
</message> </message>
<message> <message>
@ -2590,14 +2558,6 @@ Dies kann dazu führen, dass die jeweiligen Plugins nicht mehr richtig funktioni
<translation>[leer]</translation> <translation>[leer]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3192,6 +3152,22 @@ Zeile %2, Spalte %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Synchronisieren mit</translation> <translation>Synchronisieren mit</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3532,7 +3508,7 @@ Wir empfehlen dir die Verwendung des auf unserer Downloadseite verfügbaren AppI
</message> </message>
<message> <message>
<source>&amp;Database settings...</source> <source>&amp;Database settings...</source>
<translation>&amp;Datenbankeinstellungen</translation> <translation>&amp;Datenbankeinstellungen...</translation>
</message> </message>
<message> <message>
<source>Copy &amp;password</source> <source>Copy &amp;password</source>
@ -3617,7 +3593,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins
</message> </message>
<message> <message>
<source>Adding backup for older target %1 [%2]</source> <source>Adding backup for older target %1 [%2]</source>
<translation>Backup für alten Eintrag %1 hinzugefügt [%2]</translation> <translation>Backup für älteres Ziel %1 hinzugefügt [%2]</translation>
</message> </message>
<message> <message>
<source>Adding backup for older source %1 [%2]</source> <source>Adding backup for older source %1 [%2]</source>
@ -3744,7 +3720,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins
</message> </message>
<message> <message>
<source>Key file magic header id invalid</source> <source>Key file magic header id invalid</source>
<translation>Magic-Header-ID der Schlüsseldate ungültig</translation> <translation>Magic-Header-ID der Schlüsseldatei ungültig</translation>
</message> </message>
<message> <message>
<source>Found zero keys</source> <source>Found zero keys</source>
@ -3756,7 +3732,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins
</message> </message>
<message> <message>
<source>Corrupted key file, reading private key failed</source> <source>Corrupted key file, reading private key failed</source>
<translation>Korrupte Schlüsseldatei, lesen des Privatschlüssels fehlgeschlagen</translation> <translation>Korrupte Schlüsseldatei, Lesen des Privatschlüssels fehlgeschlagen</translation>
</message> </message>
<message> <message>
<source>No private key payload to decrypt</source> <source>No private key payload to decrypt</source>
@ -3839,11 +3815,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins
</message> </message>
<message> <message>
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>1</translation> <translation>&lt;p&gt;Ein Passwort ist die primäre Methode, Ihre Datenbank abzusichern.&lt;/p&gt;&lt;p&gt;Gute Passwörter sind lang und einzigartig. KeepassXC kann eins für Sie generieren.&lt;/p&gt;</translation>
</message>
<message>
<source>Password cannot be empty.</source>
<translation>Passwort kann nicht leer sein.</translation>
</message> </message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
@ -3943,7 +3915,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins
</message> </message>
<message> <message>
<source>Password Quality: %1</source> <source>Password Quality: %1</source>
<translation>Passwort Qualität: %1</translation> <translation>Passwort-Qualität: %1</translation>
</message> </message>
<message> <message>
<source>Poor</source> <source>Poor</source>
@ -4215,7 +4187,7 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins
</message> </message>
<message> <message>
<source>Prompt for the entry&apos;s password.</source> <source>Prompt for the entry&apos;s password.</source>
<translation>Nach dem Passwort des Eintrags fragen</translation> <translation>Nach dem Passwort des Eintrags fragen.</translation>
</message> </message>
<message> <message>
<source>Generate a password for the entry.</source> <source>Generate a password for the entry.</source>
@ -4260,11 +4232,11 @@ Da sie Fehler beinhalten könnte, ist diese Version nicht für den Produktiveins
</message> </message>
<message> <message>
<source>Path of the entry to edit.</source> <source>Path of the entry to edit.</source>
<translation>Pfad des zu bearbeitenden Eintrags</translation> <translation>Pfad des zu bearbeitenden Eintrags.</translation>
</message> </message>
<message> <message>
<source>Estimate the entropy of a password.</source> <source>Estimate the entropy of a password.</source>
<translation>Entropy des Passworts abschätzen</translation> <translation>Entropie des Passworts abschätzen.</translation>
</message> </message>
<message> <message>
<source>Password for which to estimate the entropy.</source> <source>Password for which to estimate the entropy.</source>
@ -4445,7 +4417,7 @@ Verfügbare Kommandos:
</message> </message>
<message> <message>
<source>Invalid value for password length %1.</source> <source>Invalid value for password length %1.</source>
<translation>Passwortlänge ungültig %1</translation> <translation>Ungültiger Wert für Passwortlänge %1.</translation>
</message> </message>
<message> <message>
<source>Could not create entry with path %1.</source> <source>Could not create entry with path %1.</source>
@ -4506,7 +4478,7 @@ Verfügbare Kommandos:
</message> </message>
<message> <message>
<source>Invalid value for password length: %1</source> <source>Invalid value for password length: %1</source>
<translation>Passwortlänge ungültig %1</translation> <translation>Ungültiger Wert für Passwortlänge: %1</translation>
</message> </message>
<message> <message>
<source>Could not find entry with path %1.</source> <source>Could not find entry with path %1.</source>
@ -4724,7 +4696,7 @@ Verfügbare Kommandos:
</message> </message>
<message> <message>
<source>Show the entry&apos;s current TOTP.</source> <source>Show the entry&apos;s current TOTP.</source>
<translation>Zeige TOTP</translation> <translation>Aktuelles TOTP des Eintrags zeigen.</translation>
</message> </message>
<message> <message>
<source>ERROR: unknown attribute %1.</source> <source>ERROR: unknown attribute %1.</source>
@ -4802,7 +4774,7 @@ Verfügbare Kommandos:
</message> </message>
<message> <message>
<source>No key is set. Aborting database creation.</source> <source>No key is set. Aborting database creation.</source>
<translation>Kein Schlüssel gewählt. Datenbankerstellung wird abgebrochen</translation> <translation>Kein Schlüssel gewählt. Datenbankerstellung wird abgebrochen.</translation>
</message> </message>
<message> <message>
<source>Failed to save the database: %1.</source> <source>Failed to save the database: %1.</source>
@ -4814,7 +4786,7 @@ Verfügbare Kommandos:
</message> </message>
<message> <message>
<source>Insert password to encrypt database (Press enter to leave blank): </source> <source>Insert password to encrypt database (Press enter to leave blank): </source>
<translation>Passwort zur Datenbankverschlüsselung eingeben (Enter drücken um es leer zu lassen)</translation> <translation>Passwort zur Datenbankverschlüsselung eingeben (Enter drücken, um es leer zu lassen):</translation>
</message> </message>
<message> <message>
<source>Creating KeyFile %1 failed: %2</source> <source>Creating KeyFile %1 failed: %2</source>
@ -4880,6 +4852,10 @@ Verfügbare Kommandos:
<source>Database password: </source> <source>Database password: </source>
<translation>Datenbankpasswort:</translation> <translation>Datenbankpasswort:</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5153,9 +5129,8 @@ Verfügbare Kommandos:
<translation>Das exportierte Zertifikat ist nicht das selbe wie das benutzte. Soll das aktuelle Zertifikat exportiert werden?</translation> <translation>Das exportierte Zertifikat ist nicht das selbe wie das benutzte. Soll das aktuelle Zertifikat exportiert werden?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5172,10 +5147,6 @@ Verfügbare Kommandos:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Von Container mit Zertifikat importieren</translation> <translation>Von Container mit Zertifikat importieren</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>Soll %1 mit dem Fingerabdruck %2 von %3 vertraut werden?</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Nicht diesmal</translation> <translation>Nicht diesmal</translation>
@ -5252,14 +5223,6 @@ Verfügbare Kommandos:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Export-Container (%1) kann nicht gespeichert werden</translation> <translation>Export-Container (%1) kann nicht gespeichert werden</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Unterschrift kann nicht eingebettet werden (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Datenbank kann nicht eingebettet werden (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>Überschreiben von nicht unterzeichneten geteilten Containern nicht unterstützt. Export verhindert.</translation> <translation>Überschreiben von nicht unterzeichneten geteilten Containern nicht unterstützt. Export verhindert.</translation>
@ -5284,6 +5247,34 @@ Verfügbare Kommandos:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Export nach %1</translation> <translation>Export nach %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>Möchten Sie %1 mit dem Fingerabdruck %2 von %3 vertrauen? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>
@ -5412,7 +5403,7 @@ Verfügbare Kommandos:
</message> </message>
<message> <message>
<source>KeePassXC %1 is now available you have %2.</source> <source>KeePassXC %1 is now available you have %2.</source>
<translation>Version %1 ist verfügbar, aktuell: %2.</translation> <translation>KeepassXC %1 ist jetzt verfügbar Sie haben %2.</translation>
</message> </message>
<message> <message>
<source>Download it at keepassxc.org</source> <source>Download it at keepassxc.org</source>

View file

@ -590,14 +590,6 @@ Please select the correct database for saving credentials.</translation>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Select custom proxy location</translation> <translation>Select custom proxy location</translation>
</message> </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>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Browser</translation> <translation>&amp;Tor Browser</translation>
@ -619,6 +611,18 @@ Please select the correct database for saving credentials.</translation>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Do not ask permission for HTTP &amp;Basic Auth</translation> <translation>Do not ask permission for HTTP &amp;Basic Auth</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -696,12 +700,20 @@ Moved %2 keys to custom data.</translation>
<translation>KeePassXC: Legacy browser integration settings detected</translation> <translation>KeePassXC: Legacy browser integration settings detected</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"></translation>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Legacy browser integration settings have been detected. <message>
Do you want to upgrade the settings to the latest standard? <source>A request for creating a new group &quot;%1&quot; has been received.
This is necessary to maintain compatibility with the browser plugin.</translation> Do you want to create this group?
</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>
@ -875,6 +887,10 @@ This is necessary to maintain compatibility with the browser plugin.</translatio
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>File cannot be written as it is opened in read-only mode.</translation> <translation>File cannot be written as it is opened in read-only mode.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1663,6 +1679,10 @@ Disable safe saves and try again?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Database was not modified by merge operation.</translation> <translation>Database was not modified by merge operation.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2109,6 +2129,22 @@ Disable safe saves and try again?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Select import/export file</translation> <translation>Select import/export file</translation>
</message> </message>
<message>
<source>Clear</source>
<translation type="unfinished">Clear</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2600,14 +2636,6 @@ This may cause the affected plugins to malfunction.</translation>
<translation>[empty]</translation> <translation>[empty]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3202,6 +3230,22 @@ Line %2, column %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Synchronize with</translation> <translation>Synchronize with</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3852,10 +3896,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</translation> <translation>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Password cannot be empty.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Passwords do not match.</translation> <translation>Passwords do not match.</translation>
@ -4647,6 +4687,26 @@ Available commands:
<source>Failed to load key file %1: %2</source> <source>Failed to load key file %1: %2</source>
<translation>Failed to load key file %1: %2</translation> <translation>Failed to load key file %1: %2</translation>
</message> </message>
<message>
<source>File %1 does not exist.</source>
<translation>File %1 does not exist.</translation>
</message>
<message>
<source>Unable to open file %1.</source>
<translation>Unable to open file %1.</translation>
</message>
<message>
<source>Error while reading the database:
%1</source>
<translation>Error while reading the database:
%1</translation>
</message>
<message>
<source>Error while parsing the database:
%1</source>
<translation>Error while parsing the database:
%1</translation>
</message>
<message> <message>
<source>Length of the generated password</source> <source>Length of the generated password</source>
<translation>Length of the generated password</translation> <translation>Length of the generated password</translation>
@ -4876,7 +4936,7 @@ Available commands:
<translation>Database password: </translation> <translation>Database password: </translation>
</message> </message>
<message> <message>
<source>Unable to extract database %1</source> <source>Cannot create new group</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -5152,9 +5212,8 @@ Available commands:
<translation>The exported certificate is not the same as the one in use. Do you want to export the current certificate?</translation> <translation>The exported certificate is not the same as the one in use. Do you want to export the current certificate?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"></translation>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5247,14 +5306,6 @@ Available commands:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Could not write export container (%1)</translation> <translation>Could not write export container (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Could not embed signature (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Could not embed database (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>Overwriting unsigned share container is not supported - export prevented</translation> <translation>Overwriting unsigned share container is not supported - export prevented</translation>
@ -5283,6 +5334,30 @@ Available commands:
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source> <source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished">Do you want to trust %1 with the fingerprint of %2 from %3? {1 ?} {2 ?}</translation> <translation type="unfinished">Do you want to trust %1 with the fingerprint of %2 from %3? {1 ?} {2 ?}</translation>
</message> </message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
<?xml version="1.0" ?><!DOCTYPE TS><TS language="en" version="2.1"> <?xml version="1.0" ?><!DOCTYPE TS><TS language="en_US" version="2.1">
<context> <context>
<name>AboutDialog</name> <name>AboutDialog</name>
<message> <message>
@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Copy to clipboard</translation> <translation>Copy to clipboard</translation>
</message> </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> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Project Maintainers:</translation> <translation>Project Maintainers:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <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> <translation>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Version %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Build Type: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Auto-Type</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Browser Integration</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH Agent</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>None</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (signed and unsigned sharing)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (only signed sharing)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (only unsigned sharing)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Please select the correct database for saving credentials.</translation>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Select custom proxy location</translation> <translation>Select custom proxy location</translation>
</message> </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>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Browser</translation> <translation>&amp;Tor Browser</translation>
@ -685,6 +609,18 @@ Please select the correct database for saving credentials.</translation>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Do not ask permission for HTTP &amp;Basic Auth</translation> <translation>Do not ask permission for HTTP &amp;Basic Auth</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</translation>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation>Please see special instructions for browser extension use below</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</translation>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,12 +695,24 @@ Moved %2 keys to custom data.</translation>
<translation>KeePassXC: Legacy browser integration settings detected</translation> <translation>KeePassXC: Legacy browser integration settings detected</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation>KeePassXC: Create a new group</translation>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Legacy browser integration settings have been detected. <message>
Do you want to upgrade the settings to the latest standard? <source>A request for creating a new group &quot;%1&quot; has been received.
This is necessary to maintain compatibility with the browser plugin.</translation> Do you want to create this group?
</source>
<translation>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</translation>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</translation>
</message> </message>
</context> </context>
<context> <context>
@ -926,6 +874,10 @@ This is necessary to maintain compatibility with the browser plugin.</translatio
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>File cannot be written as it is opened in read-only mode.</translation> <translation>File cannot be written as it is opened in read-only mode.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation>Key not transformed. This is a bug, please report it to the developers!</translation>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1289,7 +1241,7 @@ If you keep this number, your database may be too easy to crack!</translation>
<message numerus="yes"> <message numerus="yes">
<source> thread(s)</source> <source> thread(s)</source>
<comment>Threads for parallel execution (KDF settings)</comment> <comment>Threads for parallel execution (KDF settings)</comment>
<translation><numerusform> thread(s)</numerusform><numerusform> thread(s)</numerusform></translation> <translation><numerusform> thread</numerusform><numerusform> threads</numerusform></translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%1 ms</source> <source>%1 ms</source>
@ -1519,7 +1471,7 @@ This is definitely a bug, please report it to the developers.</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Do you really want to move %n entry(s) to the recycle bin?</source> <source>Do you really want to move %n entry(s) to the recycle bin?</source>
<translation><numerusform>Do you really want to move %n entry(s) to the recycle bin?</numerusform><numerusform>Do you really want to move %n entry(s) to the recycle bin?</numerusform></translation> <translation><numerusform>Do you really want to move %n entry to the recycle bin?</numerusform><numerusform>Do you really want to move %n entries to the recycle bin?</numerusform></translation>
</message> </message>
<message> <message>
<source>Execute command?</source> <source>Execute command?</source>
@ -1581,15 +1533,15 @@ Do you want to merge your changes?</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Do you really want to delete %n entry(s) for good?</source> <source>Do you really want to delete %n entry(s) for good?</source>
<translation><numerusform>Do you really want to delete %n entry(s) for good?</numerusform><numerusform>Do you really want to delete %n entry(s) for good?</numerusform></translation> <translation><numerusform>Do you really want to delete %n entry for good?</numerusform><numerusform>Do you really want to delete %n entries for good?</numerusform></translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Delete entry(s)?</source> <source>Delete entry(s)?</source>
<translation><numerusform>Delete entry(s)?</numerusform><numerusform>Delete entry(s)?</numerusform></translation> <translation><numerusform>Delete entry?</numerusform><numerusform>Delete entries?</numerusform></translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Move entry(s) to recycle bin?</source> <source>Move entry(s) to recycle bin?</source>
<translation><numerusform>Move entry(s) to recycle bin?</numerusform><numerusform>Move entry(s) to recycle bin?</numerusform></translation> <translation><numerusform>Move entry to recycle bin?</numerusform><numerusform>Move entries to recycle bin?</numerusform></translation>
</message> </message>
<message> <message>
<source>File opened in read only mode.</source> <source>File opened in read only mode.</source>
@ -1659,7 +1611,7 @@ Disable safe saves and try again?</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Entry &quot;%1&quot; has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway?</source> <source>Entry &quot;%1&quot; has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway?</source>
<translation><numerusform>Entry &quot;%1&quot; has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway?</numerusform><numerusform>Entry &quot;%1&quot; has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway?</numerusform></translation> <translation><numerusform>Entry &quot;%1&quot; has %2 reference. Do you want to overwrite references with values, skip this entry, or delete anyway?</numerusform><numerusform>Entry &quot;%1&quot; has %2 references. Do you want to overwrite references with values, skip this entry, or delete anyway?</numerusform></translation>
</message> </message>
<message> <message>
<source>Delete group</source> <source>Delete group</source>
@ -1681,6 +1633,10 @@ Disable safe saves and try again?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Database was not modified by merge operation.</translation> <translation>Database was not modified by merge operation.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation>Shared group...</translation>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -1762,11 +1718,11 @@ Disable safe saves and try again?</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%n week(s)</source> <source>%n week(s)</source>
<translation><numerusform>%n week(s)</numerusform><numerusform>%n week(s)</numerusform></translation> <translation><numerusform>%n week</numerusform><numerusform>%n weeks</numerusform></translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%n month(s)</source> <source>%n month(s)</source>
<translation><numerusform>%n month(s)</numerusform><numerusform>%n month(s)</numerusform></translation> <translation><numerusform>%n month</numerusform><numerusform>%n months</numerusform></translation>
</message> </message>
<message> <message>
<source>Apply generated password?</source> <source>Apply generated password?</source>
@ -1794,7 +1750,7 @@ Disable safe saves and try again?</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%n year(s)</source> <source>%n year(s)</source>
<translation><numerusform>%n year(s)</numerusform><numerusform>%n year(s)</numerusform></translation> <translation><numerusform>%n year</numerusform><numerusform>%n years</numerusform></translation>
</message> </message>
<message> <message>
<source>Confirm Removal</source> <source>Confirm Removal</source>
@ -2118,6 +2074,22 @@ Disable safe saves and try again?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Select import/export file</translation> <translation>Select import/export file</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Clear</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation>The export container %1 is already referenced.</translation>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation>The import container %1 is already imported.</translation>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation>The container %1 imported and export by different groups.</translation>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2206,7 +2178,7 @@ Disable safe saves and try again?</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Successfully loaded %1 of %n icon(s)</source> <source>Successfully loaded %1 of %n icon(s)</source>
<translation><numerusform>Successfully loaded %1 of %n icon(s)</numerusform><numerusform>Successfully loaded %1 of %n icon(s)</numerusform></translation> <translation><numerusform>Successfully loaded %1 of %n icon</numerusform><numerusform>Successfully loaded %1 of %n icons</numerusform></translation>
</message> </message>
<message> <message>
<source>No icons were loaded</source> <source>No icons were loaded</source>
@ -2214,15 +2186,15 @@ Disable safe saves and try again?</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>%n icon(s) already exist in the database</source> <source>%n icon(s) already exist in the database</source>
<translation><numerusform>%n icon(s) already exist in the database</numerusform><numerusform>%n icon(s) already exist in the database</numerusform></translation> <translation><numerusform>%n icon already exist in the database</numerusform><numerusform>%n icons already exist in the database</numerusform></translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>The following icon(s) failed:</source> <source>The following icon(s) failed:</source>
<translation><numerusform>The following icon(s) failed:</numerusform><numerusform>The following icon(s) failed:</numerusform></translation> <translation><numerusform>The following icon failed:</numerusform><numerusform>The following icons failed:</numerusform></translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it?</source> <source>This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation><numerusform>This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it?</numerusform><numerusform>This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it?</numerusform></translation> <translation><numerusform>This icon is used by %n entry, and will be replaced by the default icon. Are you sure you want to delete it?</numerusform><numerusform>This icon is used by %n entries, and will be replaced by the default icon. Are you sure you want to delete it?</numerusform></translation>
</message> </message>
</context> </context>
<context> <context>
@ -2316,7 +2288,7 @@ This may cause the affected plugins to malfunction.</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Are you sure you want to remove %n attachment(s)?</source> <source>Are you sure you want to remove %n attachment(s)?</source>
<translation><numerusform>Are you sure you want to remove %n attachment(s)?</numerusform><numerusform>Are you sure you want to remove %n attachment(s)?</numerusform></translation> <translation><numerusform>Are you sure you want to remove %n attachment?</numerusform><numerusform>Are you sure you want to remove %n attachments?</numerusform></translation>
</message> </message>
<message> <message>
<source>Save attachments</source> <source>Save attachments</source>
@ -2361,8 +2333,8 @@ This may cause the affected plugins to malfunction.</translation>
<message numerus="yes"> <message numerus="yes">
<source>Unable to open file(s): <source>Unable to open file(s):
%1</source> %1</source>
<translation><numerusform>Unable to open file(s): <translation><numerusform>Unable to open file:
%1</numerusform><numerusform>Unable to open file(s): %1</numerusform><numerusform>Unable to open files:
%1</numerusform></translation> %1</numerusform></translation>
</message> </message>
</context> </context>
@ -2591,14 +2563,6 @@ This may cause the affected plugins to malfunction.</translation>
<translation>[empty]</translation> <translation>[empty]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3193,6 +3157,22 @@ Line %2, column %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Synchronize with</translation> <translation>Synchronize with</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation>Disabled share %1</translation>
</message>
<message>
<source>Import from share %1</source>
<translation>Import from share %1</translation>
</message>
<message>
<source>Export to share %1</source>
<translation>Export to share %1</translation>
</message>
<message>
<source>Synchronize with share %1</source>
<translation>Synchronize with share %1</translation>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3843,10 +3823,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</translation> <translation>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Password cannot be empty.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Passwords do not match.</translation> <translation>Passwords do not match.</translation>
@ -4492,7 +4468,7 @@ Available commands:
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Clearing the clipboard in %1 second(s)...</source> <source>Clearing the clipboard in %1 second(s)...</source>
<translation><numerusform>Clearing the clipboard in %1 second(s)...</numerusform><numerusform>Clearing the clipboard in %1 second(s)...</numerusform></translation> <translation><numerusform>Clearing the clipboard in %1 second...</numerusform><numerusform>Clearing the clipboard in %1 seconds...</numerusform></translation>
</message> </message>
<message> <message>
<source>Clipboard cleared!</source> <source>Clipboard cleared!</source>
@ -4883,6 +4859,10 @@ Available commands:
<source>Database password: </source> <source>Database password: </source>
<translation>Database password: </translation> <translation>Database password: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation>Cannot create new group</translation>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5156,9 +5136,8 @@ Available commands:
<translation>The exported certificate is not the same as the one in use. Do you want to export the current certificate?</translation> <translation>The exported certificate is not the same as the one in use. Do you want to export the current certificate?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation>Signer:</translation>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5175,10 +5154,6 @@ Available commands:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Import from container with certificate</translation> <translation>Import from container with certificate</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>Do you want to trust %1 with the fingerprint of %2 from %3</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Not this time</translation> <translation>Not this time</translation>
@ -5255,14 +5230,6 @@ Available commands:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Could not write export container (%1)</translation> <translation>Could not write export container (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Could not embed signature (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Could not embed database (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>Overwriting unsigned share container is not supported - export prevented</translation> <translation>Overwriting unsigned share container is not supported - export prevented</translation>
@ -5287,6 +5254,34 @@ Available commands:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Export to %1</translation> <translation>Export to %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>Do you want to trust %1 with the fingerprint of %2 from %3? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation>Multiple import source path to %1 in %2</translation>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation>Conflicting export target path %1 in %2</translation>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation>Could not embed signature: Could not open file to write (%1)</translation>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation>Could not embed signature: Could not write file (%1)</translation>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation>Could not embed database: Could not open file to write (%1)</translation>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation>Could not embed database: Could not write file (%1)</translation>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>
@ -5304,7 +5299,7 @@ Available commands:
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Expires in &lt;b&gt;%n&lt;/b&gt; second(s)</source> <source>Expires in &lt;b&gt;%n&lt;/b&gt; second(s)</source>
<translation><numerusform>Expires in &lt;b&gt;%n&lt;/b&gt; second(s)</numerusform><numerusform>Expires in &lt;b&gt;%n&lt;/b&gt; second(s)</numerusform></translation> <translation><numerusform>Expires in &lt;b&gt;%n&lt;/b&gt; second</numerusform><numerusform>Expires in &lt;b&gt;%n&lt;/b&gt; seconds</numerusform></translation>
</message> </message>
</context> </context>
<context> <context>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Copiar al portapapeles</translation> <translation>Copiar al portapapeles</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revisión: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribución: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Bibliotecas:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Sistema operativo: %1
Arquitectura de CPU: %2
Núcleo: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Extensiones habilitadas:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Mantenedores del proyecto:</translation> <translation>Mantenedores del proyecto:</translation>
@ -69,50 +45,6 @@ Núcleo: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>El equipo de KeePassXC quiere agradecer de manera especial el trabajo de debfx por la creación de KeePassX.</translation> <translation>El equipo de KeePassXC quiere agradecer de manera especial el trabajo de debfx por la creación de KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Versión %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Tipo de Compilación: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Auto-Escritura</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Integración con Navegadores</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>Agente de SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Ninguno</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (compartir firmado y sin firmar)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (compartir solo firmado)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (compartir solo sin firmar)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Por favor, seleccione la base de datos correcta para guardar las credenciales.</
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Elegir una ubicación de proxy personalizada</translation> <translation>Elegir una ubicación de proxy personalizada</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Lo sentimos, pero KeePassXC-Browser no está soportado en las versiones Snap por el momento.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser es necesario para que la integración con el navegador funcione. Descárguelo para %1 y %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>Navegador &amp;Tor</translation> <translation>Navegador &amp;Tor</translation>
@ -685,6 +609,18 @@ Por favor, seleccione la base de datos correcta para guardar las credenciales.</
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>No pedir permiso para Autenticación HTTP &amp;Básica</translation> <translation>No pedir permiso para Autenticación HTTP &amp;Básica</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -760,12 +696,20 @@ Movió %2 claves a datos personalizados.</translation>
<translation>KeePassXC: detectada configuración de integración del navegador heredada </translation> <translation>KeePassXC: detectada configuración de integración del navegador heredada </translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Se han detectado configuraciones de integración del navegador heredadas. <message>
¿Desea actualizar la configuración al último estándar? <source>A request for creating a new group &quot;%1&quot; has been received.
Esto es necesario para mantener la compatibilidad con el complemento del navegador.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -927,6 +871,10 @@ Esto es necesario para mantener la compatibilidad con el complemento del navegad
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>El archivo no se puede escribir, ya que se ha abierto en modo de solo lectura.</translation> <translation>El archivo no se puede escribir, ya que se ha abierto en modo de solo lectura.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1681,6 +1629,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>La base de datos no fue modificada por la operación de unir</translation> <translation>La base de datos no fue modificada por la operación de unir</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2118,6 +2070,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Seleccione el archivo de importación/exportación</translation> <translation>Seleccione el archivo de importación/exportación</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Limpiar</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2591,14 +2559,6 @@ Esto puede causar un mal funcionamiento de los complementos afectados.</translat
<translation>[vacío]</translation> <translation>[vacío]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3193,6 +3153,22 @@ Linea %2, columna %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Sincronizar con</translation> <translation>Sincronizar con</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3843,10 +3819,6 @@ Espere algunos errores y problemas menores, esta versión no está destinada par
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;La contraseña es el método principal para asegurar su base de datos.&lt;p&gt;&lt;p&gt;Las contraseñas buenas son largas y únicas. KeePassXC puede generar una para usted.&lt;p&gt;</translation> <translation>&lt;p&gt;La contraseña es el método principal para asegurar su base de datos.&lt;p&gt;&lt;p&gt;Las contraseñas buenas son largas y únicas. KeePassXC puede generar una para usted.&lt;p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>La contraseña no puede ser vacía.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Las contraseñas no coinciden.</translation> <translation>Las contraseñas no coinciden.</translation>
@ -4883,6 +4855,10 @@ Comandos disponibles:
<source>Database password: </source> <source>Database password: </source>
<translation>Contraseña de la Base de Datos:</translation> <translation>Contraseña de la Base de Datos:</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5156,9 +5132,8 @@ Comandos disponibles:
<translation>El certificado exportado no es lo mismo que el que está en uso. ¿Desea exportar el certificado actual?</translation> <translation>El certificado exportado no es lo mismo que el que está en uso. ¿Desea exportar el certificado actual?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5175,10 +5150,6 @@ Comandos disponibles:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Importar desde contenedor con certificado</translation> <translation>Importar desde contenedor con certificado</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>¿Desea confiar en %1 con la huella digital de %2 desde %3?</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>No esta vez</translation> <translation>No esta vez</translation>
@ -5255,14 +5226,6 @@ Comandos disponibles:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>No podría escribir el contenedor de exportación (%1)</translation> <translation>No podría escribir el contenedor de exportación (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>No puede incrustar la firma (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>No se puede incrustar la base de datos (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>No se soporta la sobrescritura de contenedor compartido sin firmar - exportación prevenida</translation> <translation>No se soporta la sobrescritura de contenedor compartido sin firmar - exportación prevenida</translation>
@ -5287,6 +5250,34 @@ Comandos disponibles:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Exportar a %1</translation> <translation>Exportar a %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>¿Desea confiar a %1 con la huella digital de %2 de %3? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Kopioi leikepöydälle</translation> <translation>Kopioi leikepöydälle</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revisio: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Jakelu: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Kirjastot:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Käyttöjärjestelmä: %1
Suoritinarkkitehtuuri: %2
Ydin: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Käytössä olevat laajennukset:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Projektin ylläpitäjät:</translation> <translation>Projektin ylläpitäjät:</translation>
@ -69,50 +45,6 @@ Ydin: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>KeePassXC-tiimi antaa erityiskiitokset KeePassX-ohjelman alkuperäiselle luojalle debfx:lle</translation> <translation>KeePassXC-tiimi antaa erityiskiitokset KeePassX-ohjelman alkuperäiselle luojalle debfx:lle</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Versio %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Ohjelmiston tyyppi</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Automaattisyöttö</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Selainintegraatio</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH-agentti</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Ei mitään</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (allekirjoitettu ja allekirjoittamaton jakaminen)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (vain allekirjoitettu jakaminen)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (vain allekirjoittamaton jakaminen)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Valitse oikea tietokanta tietueen tallentamiseksi</translation>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Valitse mukautettu välitysohjelma</translation> <translation>Valitse mukautettu välitysohjelma</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Valitettavasti KeePassXC-Browser ei tällä hetkellä tue Snap-julkaisuja.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser tarvitaan selainintegraation toimimiseksi. &lt;br /&gt;Lataa se selaimille %1 ja %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor-selain</translation> <translation>&amp;Tor-selain</translation>
@ -685,6 +609,18 @@ Valitse oikea tietokanta tietueen tallentamiseksi</translation>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Ä kysy lupaa HTTP-autentikointiin</translation> <translation>Ä kysy lupaa HTTP-autentikointiin</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -758,12 +694,20 @@ Siirrettiin %2 avainta mukautettuihin tietoihin.</translation>
<translation>KeePassXC: Vanhoja selainintegraatioasetuksia havaittu</translation> <translation>KeePassXC: Vanhoja selainintegraatioasetuksia havaittu</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Vanhoja selainintegraatioasetuksia on havaittu. <message>
Haluatko päivittää tiedot uuteen muotoon? <source>A request for creating a new group &quot;%1&quot; has been received.
Tämä on välttämätöntä selainintegraation yhteensopivuuden takaamiseksi.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -925,6 +869,10 @@ Tämä on välttämätöntä selainintegraation yhteensopivuuden takaamiseksi.</
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Tiedostoa ei voitu tallentaa, sillä se on avattu vain lukuoikeuksin.</translation> <translation>Tiedostoa ei voitu tallentaa, sillä se on avattu vain lukuoikeuksin.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1680,6 +1628,10 @@ Ota turvallinen tallennus pois käytöstä ja yritä uudelleen?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Tietokannan sisältö ei muuttunut yhdistämisen yhteydessä.</translation> <translation>Tietokannan sisältö ei muuttunut yhdistämisen yhteydessä.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2117,6 +2069,22 @@ Ota turvallinen tallennus pois käytöstä ja yritä uudelleen?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Valitse tuonti-/vientitiedosto</translation> <translation>Valitse tuonti-/vientitiedosto</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Tyhjennä</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2590,14 +2558,6 @@ Tämä voi vikaannuttaa tietoa käyttävän liitännäisen.</translation>
<translation>[tyhjä]</translation> <translation>[tyhjä]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3192,6 +3152,22 @@ Rivi %2, sarake %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Synkronoi</translation> <translation>Synkronoi</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3841,10 +3817,6 @@ Bugeja ja ongelmia voi esiintyä. Tämä versio ei ole tarkoitettu päivittäise
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;Salasana on kaikkein tärkein asia tietokannan suojauksessa.&lt;/p&gt;&lt;p&gt;Hyvät salasanat ovat pitkiä ja uniikkeja. KeePassXC voi luoda sellaisen sinulle.&lt;/p&gt;</translation> <translation>&lt;p&gt;Salasana on kaikkein tärkein asia tietokannan suojauksessa.&lt;/p&gt;&lt;p&gt;Hyvät salasanat ovat pitkiä ja uniikkeja. KeePassXC voi luoda sellaisen sinulle.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Salasana ei voi olla tyhjä.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Salasanat eivät ole samoja.</translation> <translation>Salasanat eivät ole samoja.</translation>
@ -4881,6 +4853,10 @@ Käytettävissä olevat komennot:
<source>Database password: </source> <source>Database password: </source>
<translation>Tietokannan salasana:</translation> <translation>Tietokannan salasana:</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5154,9 +5130,8 @@ Käytettävissä olevat komennot:
<translation>Viety sertifikaatti ei ole sama kuin käytössä oleva. Haluatko viedä tämän hetkisen sertifikaatin?</translation> <translation>Viety sertifikaatti ei ole sama kuin käytössä oleva. Haluatko viedä tämän hetkisen sertifikaatin?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5173,10 +5148,6 @@ Käytettävissä olevat komennot:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Tuo säiliöstä sertifikaatin kanssa</translation> <translation>Tuo säiliöstä sertifikaatin kanssa</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>Haluatko luottaa kohteeseen %1 sormenjäljen %2 kanssa, jonka lähde on %3</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Ei tällä kertaa</translation> <translation>Ei tällä kertaa</translation>
@ -5253,14 +5224,6 @@ Käytettävissä olevat komennot:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Vietyä säiliötä ei voitu kirjoittaa (%1)</translation> <translation>Vietyä säiliötä ei voitu kirjoittaa (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Allekirjoitusta ei voitu sisällyttää (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Tietokantaa ei voitu sisällyttää (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>Allekirjoittamattoman jaetun säiliön ylikirjoitus ei ole tuettu - vienti estettiin</translation> <translation>Allekirjoittamattoman jaetun säiliön ylikirjoitus ei ole tuettu - vienti estettiin</translation>
@ -5285,6 +5248,34 @@ Käytettävissä olevat komennot:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Vie kohteeseen %1</translation> <translation>Vie kohteeseen %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Copier dans le presse-papiers</translation> <translation>Copier dans le presse-papiers</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Révision : %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribution : %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Bibliothèques :</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Système dexploitation : %1
Architecture dUCT : %2
Noyau : %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Extensions activées :</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Mainteneurs du projet :</translation> <translation>Mainteneurs du projet :</translation>
@ -69,50 +45,6 @@ Noyau : %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Léquipe de KeePassXC remercie tout particulièrement debfx pour la création du KeePassX original.</translation> <translation>Léquipe de KeePassXC remercie tout particulièrement debfx pour la création du KeePassX original.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Version %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Type de Version : %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Saisie automatique</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Intégration aux navigateurs</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>Agent SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Aucun</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (partage signé et non signé)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (partage signé uniquement)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (partage non signé uniquement)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Veuillez sélectionner la base de donnée souhaitée pour enregistrer les identi
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Sélectionner un proxy personnalisé</translation> <translation>Sélectionner un proxy personnalisé</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Nous sommes désolés, mais KeePassXC-Browser nest pas disponible via Snap pour le moment.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser est nécessaire pour que l&apos;intégration au navigateur fonctionne. &lt;br /&gt;Téléchargez-le pour %1 et%2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Navigateur Tor</translation> <translation>&amp;Navigateur Tor</translation>
@ -685,6 +609,18 @@ Veuillez sélectionner la base de donnée souhaitée pour enregistrer les identi
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Ne pas demander d&apos;autorisation pour l&apos;authentification HTTP &amp;Basic</translation> <translation>Ne pas demander d&apos;autorisation pour l&apos;authentification HTTP &amp;Basic</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,9 +695,19 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC : Ancienne integration au navigateur détectée</translation> <translation>KeePassXC : Ancienne integration au navigateur détectée</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -924,6 +870,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Le fichier ne peut pas être enregistré car il est ouvert en lecture seule.</translation> <translation>Le fichier ne peut pas être enregistré car il est ouvert en lecture seule.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1676,6 +1626,10 @@ Désactiver les enregistrements sécurisés et ressayer?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>La base de données n&apos;a pas é modifiée par l&apos;opération de fusion.</translation> <translation>La base de données n&apos;a pas é modifiée par l&apos;opération de fusion.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2113,6 +2067,22 @@ Désactiver les enregistrements sécurisés et ressayer?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Sélectionner le fichier d&apos;import/export</translation> <translation>Sélectionner le fichier d&apos;import/export</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Effacer</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2585,14 +2555,6 @@ This may cause the affected plugins to malfunction.</source>
<translation>[vide]</translation> <translation>[vide]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3187,6 +3149,22 @@ Ligne %2, colonne %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Synchroniser avec</translation> <translation>Synchroniser avec</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3836,10 +3814,6 @@ Attendez-vous à des bogues et des problèmes mineurs. Cette version nest pas
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;Le mot de passe est le moyen principal pour sécuriser votre base de données.&lt;/p&gt;&lt;p&gt;Un bon mot de passe est long et unique. KeePassXC peut en générer un pour vous.&lt;/p&gt;</translation> <translation>&lt;p&gt;Le mot de passe est le moyen principal pour sécuriser votre base de données.&lt;/p&gt;&lt;p&gt;Un bon mot de passe est long et unique. KeePassXC peut en générer un pour vous.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Le mot de passe ne peut pas être vide.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Les mots de passe ne correspondent pas.</translation> <translation>Les mots de passe ne correspondent pas.</translation>
@ -4875,6 +4849,10 @@ Commandes disponibles :
<source>Database password: </source> <source>Database password: </source>
<translation>Mot de passe de la base de données :</translation> <translation>Mot de passe de la base de données :</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -4993,7 +4971,7 @@ Commandes disponibles :
</message> </message>
<message> <message>
<source>logical OR</source> <source>logical OR</source>
<translation type="unfinished"/> <translation>OU logique</translation>
</message> </message>
<message> <message>
<source>Examples</source> <source>Examples</source>
@ -5137,7 +5115,7 @@ Commandes disponibles :
</message> </message>
<message> <message>
<source>Select path</source> <source>Select path</source>
<translation type="unfinished"/> <translation>Sélectionner le chemin</translation>
</message> </message>
<message> <message>
<source>Exporting changed certificate</source> <source>Exporting changed certificate</source>
@ -5148,8 +5126,7 @@ Commandes disponibles :
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5167,10 +5144,6 @@ Commandes disponibles :
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Pas cette fois</translation> <translation>Pas cette fois</translation>
@ -5247,14 +5220,6 @@ Commandes disponibles :
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5279,6 +5244,34 @@ Commandes disponibles :
<source>Export to %1</source> <source>Export to %1</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Vágólapra másolás</translation> <translation>Vágólapra másolás</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revízió: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Disztribúció: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Függvénykönyvtárak:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Operációs rendszer: %1
CPU architektúra: %2
Kernel: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Engedélyezett kiterjesztések:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Projektkarbantartók:</translation> <translation>Projektkarbantartók:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>A KeePassXC fejlesztőcsapata ezúton külön köszönetet mond debfx-nek az eredetei KeePassX létrehozásáért.</translation> <translation>A KeePassXC fejlesztőcsapata ezúton külön köszönetet mond debfx-nek az eredetei KeePassX létrehozásáért.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Verzió: %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Összeállítás típusa: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Automatikus beírás</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Böngészőintegráció</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH ügynök</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Nincs</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (aláírt és nem aláírt megosztás)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (csak aláírt megoszás)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (csak nem aláírt megosztás)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Válassza ki a helyes adatbázist a hitelesítő adatok mentéséhez.</translati
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Egyedi proxyhely kijelölése</translation> <translation>Egyedi proxyhely kijelölése</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Sajnáljuk, de a KeePassXC-Browser pillanatnyilag nem támogatja a Snap kiadásokat.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>A böngészőintegráció működéséhez a KeePassXC-böngészőre van szükség. &lt;br /&gt;Letölthető ezen böngészőkre: %1 és %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor böngésző</translation> <translation>&amp;Tor böngésző</translation>
@ -685,6 +609,18 @@ Válassza ki a helyes adatbázist a hitelesítő adatok mentéséhez.</translati
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Ne kérjen engedélyt a HTTP &amp;Basic Auth számára</translation> <translation>Ne kérjen engedélyt a HTTP &amp;Basic Auth számára</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -758,12 +694,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC: Örökölt böngészőintegrációs beállítások észlelve</translation> <translation>KeePassXC: Örökölt böngészőintegrációs beállítások észlelve</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Örökölt böngészőintegrációs beállítások észlelve <message>
Frissíti a beállításokat a legfrissebb szabványra? <source>A request for creating a new group &quot;%1&quot; has been received.
Ez szükséges a böngészőbővítménnyel történő kompatibilitáshoz.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -925,6 +869,10 @@ Ez szükséges a böngészőbővítménnyel történő kompatibilitáshoz.</tran
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>A fájlba nem lehet írni, mert csak olvasható módban van megnyitva.</translation> <translation>A fájlba nem lehet írni, mert csak olvasható módban van megnyitva.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1679,6 +1627,10 @@ Letiltható a biztonságos mentés és úgy megkísérelhető a mentés?</transl
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Az adatbázis nem változott az összeolvasztási művelet során.</translation> <translation>Az adatbázis nem változott az összeolvasztási művelet során.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2116,6 +2068,22 @@ Letiltható a biztonságos mentés és úgy megkísérelhető a mentés?</transl
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Importálási vagy exportálási fájl kijelölése</translation> <translation>Importálási vagy exportálási fájl kijelölése</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Törlés</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2589,14 +2557,6 @@ Ez a kijelölt bővítmény hibás működését eredményezheti.</translation>
<translation>[üres]</translation> <translation>[üres]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3191,6 +3151,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Szinkronizálás ezzel</translation> <translation>Szinkronizálás ezzel</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3839,10 +3815,6 @@ Néhány hiba és kisebb nehézségek várhatóak, ezért ez a verzió nem aján
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;A jelszó az adatbázis biztonságban tartásának elsődleges módja.&lt;/p&gt;&lt;p&gt;A jó jelszavak hosszúak és egyediek. A KeePassXC elő tud állítani egyet Önnek.&lt;/p&gt;</translation> <translation>&lt;p&gt;A jelszó az adatbázis biztonságban tartásának elsődleges módja.&lt;/p&gt;&lt;p&gt;A jó jelszavak hosszúak és egyediek. A KeePassXC elő tud állítani egyet Önnek.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>A jelszó nem lehet üres.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>A jelszavak nem egyeznek</translation> <translation>A jelszavak nem egyeznek</translation>
@ -4274,11 +4246,11 @@ Néhány hiba és kisebb nehézségek várhatóak, ezért ez a verzió nem aján
</message> </message>
<message> <message>
<source>Extract and print the content of a database.</source> <source>Extract and print the content of a database.</source>
<translation>Adatbázis tartalmának kinyerése és kiírása.</translation> <translation>Adatbázis tartalmának kibontása és kiírása.</translation>
</message> </message>
<message> <message>
<source>Path of the database to extract.</source> <source>Path of the database to extract.</source>
<translation>Kinyerendő adatbázis útvonala.</translation> <translation>Kibontandó adatbázis útvonala.</translation>
</message> </message>
<message> <message>
<source>Insert password to unlock %1: </source> <source>Insert password to unlock %1: </source>
@ -4636,7 +4608,7 @@ Elérhető parancsok:
</message> </message>
<message> <message>
<source>Unable to open file %1.</source> <source>Unable to open file %1.</source>
<translation>A(z) %1 fájl nem nyitható meg</translation> <translation>A(z) %1 fájl nem nyitható meg.</translation>
</message> </message>
<message> <message>
<source>Error while reading the database: <source>Error while reading the database:
@ -4878,6 +4850,10 @@ Elérhető parancsok:
<source>Database password: </source> <source>Database password: </source>
<translation>Adatbázis jelszava</translation> <translation>Adatbázis jelszava</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5151,9 +5127,8 @@ Elérhető parancsok:
<translation>Az exportált tanúsítvány nem egyezik meg a jelenleg használattal. Exportálható a jelenlegi?</translation> <translation>Az exportált tanúsítvány nem egyezik meg a jelenleg használattal. Exportálható a jelenlegi?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5170,10 +5145,6 @@ Elérhető parancsok:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Importálás a tárolóból aláírással</translation> <translation>Importálás a tárolóból aláírással</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>Megbízhatónak minősíthető a(z) %1, melynek ujjlenyomata %2 / %3?</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Most nem</translation> <translation>Most nem</translation>
@ -5250,14 +5221,6 @@ Elérhető parancsok:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Nem írható az exportálási tároló (%1)</translation> <translation>Nem írható az exportálási tároló (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Az aláírás nem beágyazható (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Az adatbázis nem beágyazható (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>A nem aláírt tárolók felülírása nem támogatott az exportálás megakadályozva</translation> <translation>A nem aláírt tárolók felülírása nem támogatott az exportálás megakadályozva</translation>
@ -5282,6 +5245,34 @@ Elérhető parancsok:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Exportálás: %1</translation> <translation>Exportálás: %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>Megbízhatónak minősíthető a(z) %1, melynek ujjlenyomata %2 / %3? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Salin ke papan klip</translation> <translation>Salin ke papan klip</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revisi: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribusi: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Pustaka:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Sistem operasi: %1
Arsitektur CPU: %2
Kernel: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Ekstensi aktif:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Pengelola Proyek:</translation> <translation>Pengelola Proyek:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Terima kasih dari tim KeePassXC kepada debfx yang telah membuat KeepassX original.</translation> <translation>Terima kasih dari tim KeePassXC kepada debfx yang telah membuat KeepassX original.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Versi %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Tipe Build: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Ketik-Otomatis</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Integrasi Peramban</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH Agent</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Nihil</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -655,14 +587,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Pilih lokasi proksi khusus</translation> <translation>Pilih lokasi proksi khusus</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Maaf, KeePassXC-Browser saat ini tidak mendukung rilisan Snap.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>Membutuhkan KeePassXC-Browser agar integrasi peramban bisa bekerja. &lt;br /&gt;Unduh di %1 dan %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>Peramban &amp;Tor</translation> <translation>Peramban &amp;Tor</translation>
@ -684,6 +608,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -757,9 +693,19 @@ Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -921,6 +867,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1663,6 +1613,10 @@ Nonaktifkan penyimpanan aman dan coba lagi?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2100,6 +2054,22 @@ Nonaktifkan penyimpanan aman dan coba lagi?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Clear</source>
<translation>Bersihkan</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2571,14 +2541,6 @@ Ini mungkin akan menyebabkan plugin terkait tidak berfungsi.</translation>
<translation>[kosong]</translation> <translation>[kosong]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3173,6 +3135,22 @@ Baris %2, kolom %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3818,10 +3796,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Sandi tidak boleh kosong.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Sandi tidak sama.</translation> <translation>Sandi tidak sama.</translation>
@ -4855,6 +4829,10 @@ Perintah yang tersedia:
<source>Database password: </source> <source>Database password: </source>
<translation>Sandi basis data:</translation> <translation>Sandi basis data:</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5128,8 +5106,7 @@ Perintah yang tersedia:
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5147,10 +5124,6 @@ Perintah yang tersedia:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5227,14 +5200,6 @@ Perintah yang tersedia:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5259,6 +5224,34 @@ Perintah yang tersedia:
<source>Export to %1</source> <source>Export to %1</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Copia negli appunti</translation> <translation>Copia negli appunti</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revisione: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribuzione: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Librerie:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Sistema operativo: %1
Architettura CPU: %2
Kernel: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Estensioni abilitate:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Responsabili del progetto:</translation> <translation>Responsabili del progetto:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Uno speciale ringraziamento dal team di KeePassXC va a debfx per la creazione del KeePassX originale.</translation> <translation>Uno speciale ringraziamento dal team di KeePassXC va a debfx per la creazione del KeePassX originale.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Versione %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Tipo di compilazione: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Completamento automatico</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Integrazione con i browser</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>Agente SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Nessuno</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -655,14 +587,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Selezionare una posizione personalizzata per il proxy</translation> <translation>Selezionare una posizione personalizzata per il proxy</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Siamo spiacenti, ma KeePassXC-Browser non è supportato per i rilasci di Snap al momento.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser è necessario per far funzionare l&apos;integrazione con il browser. &lt; br / &gt; scaricarlo per %1 e %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Browser</translation> <translation>&amp;Tor Browser</translation>
@ -684,6 +608,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -756,9 +692,19 @@ Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -920,6 +866,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Il file non può essere scritto perché aperto in modalità di sola lettura.</translation> <translation>Il file non può essere scritto perché aperto in modalità di sola lettura.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1664,6 +1614,10 @@ Disabilitare i salvataggi sicuri e riprovare?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Il database non è stato modificato dall&apos;operazione di unione.</translation> <translation>Il database non è stato modificato dall&apos;operazione di unione.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2101,6 +2055,22 @@ Disabilitare i salvataggi sicuri e riprovare?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Clear</source>
<translation>Azzera</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2574,14 +2544,6 @@ Ciò potrebbe causare malfunzionamenti ai plugin interessati.</translation>
<translation>[vuoto]</translation> <translation>[vuoto]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3176,6 +3138,22 @@ Riga %2, colonna %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Sincronizza con</translation> <translation>Sincronizza con</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3822,10 +3800,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>La password non può essere vuota.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Le password non corrispondono.</translation> <translation>Le password non corrispondono.</translation>
@ -4859,6 +4833,10 @@ Comandi disponibili:
<source>Database password: </source> <source>Database password: </source>
<translation>Password del database: </translation> <translation>Password del database: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5132,8 +5110,7 @@ Comandi disponibili:
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5151,10 +5128,6 @@ Comandi disponibili:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5231,14 +5204,6 @@ Comandi disponibili:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5263,6 +5228,34 @@ Comandi disponibili:
<source>Export to %1</source> <source>Export to %1</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation></translation> <translation></translation>
</message> </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
CPU : %2
: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>:</translation> <translation>:</translation>
@ -69,50 +45,6 @@ CPU アーキテクチャー: %2
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>KeePassXC KeePassX debfx </translation> <translation>KeePassXC KeePassX debfx </translation>
</message> </message>
<message>
<source>Version %1</source>
<translation> %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation></translation>
</message>
<message>
<source>Browser Integration</source>
<translation></translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH </translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation></translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare ()</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare ()</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare ()</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation> KeePassXC-Browser Snap </translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation> KeePassXC-Browser &lt;br /&gt;KeePassXC-Browser %1 %2 2</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>Tor Browser(&amp;T)</translation> <translation>Tor Browser(&amp;T)</translation>
@ -685,6 +609,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>HTTP (&amp;B)</translation> <translation>HTTP (&amp;B)</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,12 +695,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC: レガシーなブラウザー統合の設定が検出されました</translation> <translation>KeePassXC: レガシーなブラウザー統合の設定が検出されました</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation> <message>
<source>A request for creating a new group &quot;%1&quot; has been received.
</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -926,6 +870,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1681,6 +1629,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2118,6 +2070,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>/</translation> <translation>/</translation>
</message> </message>
<message>
<source>Clear</source>
<translation></translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2590,14 +2558,6 @@ This may cause the affected plugins to malfunction.</source>
<translation>[]</translation> <translation>[]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3192,6 +3152,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3842,10 +3818,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;/p&gt;&lt;p&gt;KeePassXC &lt;/p&gt;</translation> <translation>&lt;p&gt;&lt;/p&gt;&lt;p&gt;KeePassXC &lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation></translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation></translation> <translation></translation>
@ -4882,6 +4854,10 @@ Available commands:
<source>Database password: </source> <source>Database password: </source>
<translation>: </translation> <translation>: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5155,9 +5131,8 @@ Available commands:
<translation>使</translation> <translation>使</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5174,10 +5149,6 @@ Available commands:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>%3 %1 ( %2) </translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation></translation> <translation></translation>
@ -5254,14 +5225,6 @@ Available commands:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation> (%1)</translation> <translation> (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation> (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation> - </translation> <translation> - </translation>
@ -5286,6 +5249,34 @@ Available commands:
<source>Export to %1</source> <source>Export to %1</source>
<translation>%1 </translation> <translation>%1 </translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>%3 %1 ( %2) {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation> </translation> <translation> </translation>
</message> </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
CPU : %2
: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation> :</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation> :</translation> <translation> :</translation>
@ -69,50 +45,6 @@ CPU 아키텍처: %2
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Version %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Build Type: %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Auto-Type</source>
<translation> </translation>
</message>
<message>
<source>Browser Integration</source>
<translation> </translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH </translation>
</message>
<message>
<source>YubiKey</source>
<translation type="unfinished"/>
</message>
<message>
<source>TouchID</source>
<translation type="unfinished"/>
</message>
<message>
<source>None</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -655,14 +587,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation> </translation> <translation> </translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -684,6 +608,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -757,9 +693,19 @@ Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -921,6 +867,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1663,6 +1613,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2100,6 +2054,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Clear</source>
<translation></translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2570,14 +2540,6 @@ This may cause the affected plugins to malfunction.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3170,6 +3132,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3814,10 +3792,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -4850,6 +4824,10 @@ Available commands:
<source>Database password: </source> <source>Database password: </source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5123,8 +5101,7 @@ Available commands:
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5142,10 +5119,6 @@ Available commands:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5222,14 +5195,6 @@ Available commands:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5254,6 +5219,34 @@ Available commands:
<source>Export to %1</source> <source>Export to %1</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Kopijuoti į iškarpinę</translation> <translation>Kopijuoti į iškarpinę</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Poversijis: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Platinimas: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Bibliotekos:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Operacinė sistema: %1
Procesoriaus architektūra: %2
Branduolys: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Įjungti plėtiniai:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Projektą prižiūri:</translation> <translation>Projektą prižiūri:</translation>
@ -69,50 +45,6 @@ Branduolys: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Ypatinga padėka nuo KeePassXC komandos yra skiriama debfx pradinės KeePassX programos sukūrimą.</translation> <translation>Ypatinga padėka nuo KeePassXC komandos yra skiriama debfx pradinės KeePassX programos sukūrimą.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Versija %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Darinio tipas: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Automatinis rinkimas</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Naršyklės integracija</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH agentas</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Nėra</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Prisijungimo duomenų įrašymui, pasirinkite teisingą duomenų bazę.</transla
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Browser</translation> <translation>&amp;Tor Browser</translation>
@ -685,6 +609,18 @@ Prisijungimo duomenų įrašymui, pasirinkite teisingą duomenų bazę.</transla
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -756,9 +692,19 @@ Perkelta %2 raktų į tinkintus duomenis.</translation>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -920,6 +866,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Failas negali būti įrašytas, nes jis atvertas tik skaitymo veiksenoje.</translation> <translation>Failas negali būti įrašytas, nes jis atvertas tik skaitymo veiksenoje.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1658,6 +1608,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2095,6 +2049,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Clear</source>
<translation>Išvalyti</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2565,14 +2535,6 @@ This may cause the affected plugins to malfunction.</source>
<translation>[tuščia]</translation> <translation>[tuščia]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3167,6 +3129,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3809,10 +3787,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Slaptažodis negali būti tuščias.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Slaptažodžiai nesutampa.</translation> <translation>Slaptažodžiai nesutampa.</translation>
@ -4843,6 +4817,10 @@ Prieinamos komandos:
<source>Database password: </source> <source>Database password: </source>
<translation>Duomenų bazės slaptažodis: </translation> <translation>Duomenų bazės slaptažodis: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5116,9 +5094,8 @@ Prieinamos komandos:
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5135,10 +5112,6 @@ Prieinamos komandos:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Ne šį kartą</translation> <translation>Ne šį kartą</translation>
@ -5215,14 +5188,6 @@ Prieinamos komandos:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5247,6 +5212,34 @@ Prieinamos komandos:
<source>Export to %1</source> <source>Export to %1</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Kopier til utklippstavle</translation> <translation>Kopier til utklippstavle</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revisjon: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribusjon: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Biblioteker:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Operativsystem: %1
CPU arkitektur: %2
Kjerne: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Aktive utvidelser:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Prosjektets vedlikeholdere:</translation> <translation>Prosjektets vedlikeholdere:</translation>
@ -69,50 +45,6 @@ Kjerne: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>En spesiell takk fra KeePassXC-laget går til debfx, utvikler av programmet KeePassX.</translation> <translation>En spesiell takk fra KeePassXC-laget går til debfx, utvikler av programmet KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Versjon %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Byggetype: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Autoskriv</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Nettlesertillegg</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH-agent</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>Berørings-id</translation>
</message>
<message>
<source>None</source>
<translation>Ingen</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -655,14 +587,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Oppgi en selvvalgt mellomtjerneradresse</translation> <translation>Oppgi en selvvalgt mellomtjerneradresse</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Nettlesertillegget er foreløpig ikke tilgjengelig for snap-utgaver.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser er nødvendig for at nettleserintegrasjonen skal fungere. &lt;br /&gt;Last den ned for %1 og %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor nettleser</translation> <translation>&amp;Tor nettleser</translation>
@ -684,6 +608,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Ikke spør om tillatelse til &amp;enkel HTTP autentisering</translation> <translation>Ikke spør om tillatelse til &amp;enkel HTTP autentisering</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -756,9 +692,19 @@ Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -920,6 +866,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1662,6 +1612,10 @@ Deaktivere sikker lagring og prøve igjen?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2099,6 +2053,22 @@ Deaktivere sikker lagring og prøve igjen?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Clear</source>
<translation>Tøm</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2570,14 +2540,6 @@ Dette kan føre til feil for de berørte programtilleggene.</translation>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3170,6 +3132,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3815,10 +3793,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -4851,6 +4825,10 @@ Tilgjengelige kommandoer:
<source>Database password: </source> <source>Database password: </source>
<translation>Databasepassord: </translation> <translation>Databasepassord: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5124,9 +5102,8 @@ Tilgjengelige kommandoer:
<translation>Eksportert sertifikat er ikke det samme som det som er i bruk. Vil du eksportere gjeldende sertifikat?</translation> <translation>Eksportert sertifikat er ikke det samme som det som er i bruk. Vil du eksportere gjeldende sertifikat?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5143,10 +5120,6 @@ Tilgjengelige kommandoer:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5223,14 +5196,6 @@ Tilgjengelige kommandoer:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5255,6 +5220,34 @@ Tilgjengelige kommandoer:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Eksporter til %1</translation> <translation>Eksporter til %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Naar klembord kopiëren</translation> <translation>Naar klembord kopiëren</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revisie: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distributie: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Bibliotheken:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Besturingssysteem: %1
CPU-architectuur: %2
Kernelversie: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Geactiveerde extensies:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Projectbeheerders:</translation> <translation>Projectbeheerders:</translation>
@ -69,50 +45,6 @@ Kernelversie: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Een extra dank-je-wel van het KeePassXC-team gaat naar debfx voor het creëren van het oorspronkelijke KeePassX.</translation> <translation>Een extra dank-je-wel van het KeePassXC-team gaat naar debfx voor het creëren van het oorspronkelijke KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Versie %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Bouwtype: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Auto-type</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Browserintegratie</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH-agent</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Geen</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (getekend en ongetekend delen)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (alleen ondertekend delen)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (alleen niet-ondertekend delen)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -297,7 +229,7 @@ Kernelversie: %3 %4</translation>
</message> </message>
<message> <message>
<source>Auto-Type start delay</source> <source>Auto-Type start delay</source>
<translation>Auto-type start vertraging</translation> <translation>Auto-type startvertraging</translation>
</message> </message>
<message> <message>
<source>Check for updates at application startup</source> <source>Check for updates at application startup</source>
@ -313,7 +245,7 @@ Kernelversie: %3 %4</translation>
</message> </message>
<message> <message>
<source>Button style</source> <source>Button style</source>
<translation>Knop stijl</translation> <translation>Knopstijl</translation>
</message> </message>
</context> </context>
<context> <context>
@ -361,7 +293,7 @@ Kernelversie: %3 %4</translation>
</message> </message>
<message> <message>
<source>Re-lock previously locked database after performing Auto-Type</source> <source>Re-lock previously locked database after performing Auto-Type</source>
<translation>Vergrendelde database na Auto-type weer vergrendelen.</translation> <translation>Vergrendelde database na Auto-type weer vergrendelen</translation>
</message> </message>
<message> <message>
<source>Don&apos;t require password repeat when it is visible</source> <source>Don&apos;t require password repeat when it is visible</source>
@ -489,7 +421,7 @@ Kernelversie: %3 %4</translation>
<message> <message>
<source>%1 has requested access to passwords for the following item(s). <source>%1 has requested access to passwords for the following item(s).
Please select whether you want to allow access.</source> Please select whether you want to allow access.</source>
<translation>%1 vraagt toegang tot jouw wachtwoorden voor het volgende). <translation>%1 vraagt toegang tot jouw wachtwoorden voor het volgende.
Geef aan of je toegang wilt verlenen of niet.</translation> Geef aan of je toegang wilt verlenen of niet.</translation>
</message> </message>
</context> </context>
@ -656,22 +588,13 @@ Selecteer de database voor het opslaan van de inloggegevens.</translation>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Selecteer aangepaste proxy-locatie</translation> <translation>Selecteer aangepaste proxy-locatie</translation>
</message> </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 Snap releases.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePaasXC-Browser is nodig voor de browser integratie.
Download hem voor %1 en %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor browser</translation> <translation>&amp;Tor browser</translation>
</message> </message>
<message> <message>
<source>&lt;b&gt;Warning&lt;/b&gt;, the keepassxc-proxy application was not found!&lt;br /&gt;Please check the KeePassXC installation directory or confirm the custom path in advanced options.&lt;br /&gt;Browser integration WILL NOT WORK without the proxy application.&lt;br /&gt;Expected Path: </source> <source>&lt;b&gt;Warning&lt;/b&gt;, the keepassxc-proxy application was not found!&lt;br /&gt;Please check the KeePassXC installation directory or confirm the custom path in advanced options.&lt;br /&gt;Browser integration WILL NOT WORK without the proxy application.&lt;br /&gt;Expected Path: </source>
<translation>&lt;b&gt;Waarschuwing&lt;/b&gt;, de keepassxc-proxy applicatie is niet gevonden!&lt;br /&gt;Controleer de installatie directory van KeePassXC of bevestig het aangepaste pad in geavanceerde opties.&lt;br /&gt;De browser integratie zal NIET WERKEN zonder de proxy application.&lt;br /&gt;Verwacht pad: </translation> <translation>&lt;b&gt;Waarschuwing&lt;/b&gt;, de keepassxc-proxy-applicatie is niet gevonden!&lt;br /&gt;Controleer de installatiemap van KeePassXC of bevestig het aangepaste pad in geavanceerde opties.&lt;br /&gt;De browserintegratie zal NIET WERKEN zonder de proxy-applicatie.&lt;br /&gt;Verwacht pad: </translation>
</message> </message>
<message> <message>
<source>Executable Files</source> <source>Executable Files</source>
@ -686,6 +609,18 @@ Download hem voor %1 en %2.</translation>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Vraag geen toestemming voor HTTP en Basis Authentificatie</translation> <translation>Vraag geen toestemming voor HTTP en Basis Authentificatie</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -760,12 +695,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC: instellingen voor oudere browserintegratie gedetecteerd</translation> <translation>KeePassXC: instellingen voor oudere browserintegratie gedetecteerd</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Instellingen voor oudere browserintegratie gedetecteerd. <message>
Wil je de instellingen veranderen naar de nieuwste standaard? <source>A request for creating a new group &quot;%1&quot; has been received.
Dit is nodig om compatibiliteit met de browser plugin te behouden.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -927,6 +870,10 @@ Dit is nodig om compatibiliteit met de browser plugin te behouden.</translation>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Bestand kan niet worden geschreven omdat het in de alleen-lezen modus is geopend.</translation> <translation>Bestand kan niet worden geschreven omdat het in de alleen-lezen modus is geopend.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1680,6 +1627,10 @@ Veilig opslaan afschakelen en opnieuw proberen?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Database werd niet gewijzigd door het samenvoegen.</translation> <translation>Database werd niet gewijzigd door het samenvoegen.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2117,6 +2068,22 @@ Veilig opslaan afschakelen en opnieuw proberen?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Selecteer import/export bestand</translation> <translation>Selecteer import/export bestand</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Wissen</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2588,14 +2555,6 @@ Hierdoor werken de plugins mogelijk niet meer goed.</translation>
<translation>[leeg]</translation> <translation>[leeg]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3190,6 +3149,22 @@ Lijn %2, kolom %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Synchroniseren met</translation> <translation>Synchroniseren met</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3715,7 +3690,7 @@ Verwacht een aantal bugs en kleine problemen, deze versie is niet bedoeld voor p
<name>NewDatabaseWizardPageMetaData</name> <name>NewDatabaseWizardPageMetaData</name>
<message> <message>
<source>General Database Information</source> <source>General Database Information</source>
<translation>Algemene databaseinformatie</translation> <translation>Algemene database-informatie</translation>
</message> </message>
<message> <message>
<source>Please fill in the display name and an optional description for your new database:</source> <source>Please fill in the display name and an optional description for your new database:</source>
@ -3839,10 +3814,6 @@ Verwacht een aantal bugs en kleine problemen, deze versie is niet bedoeld voor p
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;Een wachtwoord is de primaire methode voor het beveiligen van een database.&lt;/p&gt; &lt;p&gt;Goede wachtwoorden zijn lang en uniek. KeePassXC kan er een voor je genereren.&lt;/p&gt;</translation> <translation>&lt;p&gt;Een wachtwoord is de primaire methode voor het beveiligen van een database.&lt;/p&gt; &lt;p&gt;Goede wachtwoorden zijn lang en uniek. KeePassXC kan er een voor je genereren.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Wachtwoord mag niet leeg zijn.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Wachtwoorden komen niet overeen.</translation> <translation>Wachtwoorden komen niet overeen.</translation>
@ -4878,6 +4849,10 @@ Beschikbare opdrachten:
<source>Database password: </source> <source>Database password: </source>
<translation>Databasewachtwoord: </translation> <translation>Databasewachtwoord: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5151,9 +5126,8 @@ Beschikbare opdrachten:
<translation>Het geëxporteerde certificaat is niet hetzelfde als die in gebruik is. Wilt u het huidige certificaat exporteren?</translation> <translation>Het geëxporteerde certificaat is niet hetzelfde als die in gebruik is. Wilt u het huidige certificaat exporteren?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1. %2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5170,10 +5144,6 @@ Beschikbare opdrachten:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Importeren uit de container met certificaat</translation> <translation>Importeren uit de container met certificaat</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>Wil je %1 met de vingerafdruk van %2 van %3 vertrouwen?</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Deze keer niet</translation> <translation>Deze keer niet</translation>
@ -5250,14 +5220,6 @@ Beschikbare opdrachten:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Kan geen export container schrijven (%1)</translation> <translation>Kan geen export container schrijven (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Kon ondertekening niet opnemen in zip bestand (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Kon database niet opnemen in zip bestand (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>Overschrijven van een niet-ondertekende deel-container wordt niet ondersteund - export is voorkomen</translation> <translation>Overschrijven van een niet-ondertekende deel-container wordt niet ondersteund - export is voorkomen</translation>
@ -5282,6 +5244,34 @@ Beschikbare opdrachten:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Exporteer naar %1</translation> <translation>Exporteer naar %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>Wilt u %1 met de vingerafdruk van %2 vanaf %3 vertrouwen? {1 ?} {2 ?} </translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>
@ -5402,7 +5392,7 @@ Beschikbare opdrachten:
</message> </message>
<message> <message>
<source>Software Update</source> <source>Software Update</source>
<translation>Software update</translation> <translation>Software-update</translation>
</message> </message>
<message> <message>
<source>A new version of KeePassXC is available!</source> <source>A new version of KeePassXC is available!</source>
@ -5472,7 +5462,7 @@ Beschikbare opdrachten:
</message> </message>
<message> <message>
<source>No YubiKey detected, please ensure it&apos;s plugged in.</source> <source>No YubiKey detected, please ensure it&apos;s plugged in.</source>
<translation>Geen YubiKey gedetecteerd, plug deze aub in.</translation> <translation>Geen YubiKey gedetecteerd, plug deze a.u.b. in.</translation>
</message> </message>
<message> <message>
<source>No YubiKey inserted.</source> <source>No YubiKey inserted.</source>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Skopiuj do schowka</translation> <translation>Skopiuj do schowka</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Rewizja: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Dystrybucja: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Biblioteki:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>System operacyjny: %1
Architektura procesora: %2
Jądro: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Włączone rozszerzenia:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Opiekunowie projektu:</translation> <translation>Opiekunowie projektu:</translation>
@ -69,50 +45,6 @@ Jądro: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Specjalne podziękowania od zespołu KeePassXC dla debfx za stworzenie oryginalnego KeePassX.</translation> <translation>Specjalne podziękowania od zespołu KeePassXC dla debfx za stworzenie oryginalnego KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Wersja %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Typ kompilacji: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Autowpisywanie</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Integracja z przeglądarką</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>Agent SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Żaden</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (podpisane i niepodpisane udostępnianie)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (tylko podpisane udostępnianie)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (tylko niepodpisane udostępnianie)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Wybierz właściwą bazę danych do zapisania danych uwierzytelniających.</tran
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Wybierz niestandardową lokalizację proxy</translation> <translation>Wybierz niestandardową lokalizację proxy</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Przykro nam, ale KeePassXC-Browser obecnie nie obsługuje wydań Snap.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser jest potrzebny, aby działała integracja z przeglądarką. &lt;br /&gt;Pobierz go dla %1 oraz %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Browser</translation> <translation>&amp;Tor Browser</translation>
@ -685,6 +609,18 @@ Wybierz właściwą bazę danych do zapisania danych uwierzytelniających.</tran
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Nie pytaj o uprawnienie dla HTTP &amp;Basic Auth</translation> <translation>Nie pytaj o uprawnienie dla HTTP &amp;Basic Auth</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,12 +695,20 @@ Przeniesiono %2 klucze do niestandardowych danych.</translation>
<translation>KeePassXC: Wykryto ustawienia przestarzałej integracji z przeglądarką</translation> <translation>KeePassXC: Wykryto ustawienia przestarzałej integracji z przeglądarką</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Wykryto ustawienia przestarzałej integracji z przeglądarką. <message>
Czy chcesz uaktualnić ustawienia do najnowszego standardu? <source>A request for creating a new group &quot;%1&quot; has been received.
Jest to konieczne, aby zachować zgodność z wtyczką przeglądarki.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -926,6 +870,10 @@ Jest to konieczne, aby zachować zgodność z wtyczką przeglądarki.</translati
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Plik nie może zostać zapisany, ponieważ jest otwarty w trybie tylko do odczytu.</translation> <translation>Plik nie może zostać zapisany, ponieważ jest otwarty w trybie tylko do odczytu.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1681,6 +1629,10 @@ Wyłączyć bezpieczne zapisywanie i spróbować ponownie?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Baza danych nie została zmodyfikowana operacją scalania.</translation> <translation>Baza danych nie została zmodyfikowana operacją scalania.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2118,6 +2070,22 @@ Wyłączyć bezpieczne zapisywanie i spróbować ponownie?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Wybierz plik importu/eksportu</translation> <translation>Wybierz plik importu/eksportu</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Wyczyść</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2593,14 +2561,6 @@ Może to spowodować nieprawidłowe działanie wtyczek.</translation>
<translation>[pusty]</translation> <translation>[pusty]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3195,6 +3155,22 @@ Wiersz %2, kolumna %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Synchronizuj z</translation> <translation>Synchronizuj z</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3844,10 +3820,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;Hasło jest podstawową metodą zabezpieczania bazy danych.&lt;/p&gt;&lt;p&gt;Dobre hasła są długie i niepowtarzalne. KeePassXC może je wygenerować dla ciebie.&lt;/p&gt;</translation> <translation>&lt;p&gt;Hasło jest podstawową metodą zabezpieczania bazy danych.&lt;/p&gt;&lt;p&gt;Dobre hasła są długie i niepowtarzalne. KeePassXC może je wygenerować dla ciebie.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Hasło nie może być puste.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Hasła nie pasują do siebie.</translation> <translation>Hasła nie pasują do siebie.</translation>
@ -4884,6 +4856,10 @@ Dostępne polecenia:
<source>Database password: </source> <source>Database password: </source>
<translation>Hasło bazy danych: </translation> <translation>Hasło bazy danych: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5157,9 +5133,8 @@ Dostępne polecenia:
<translation>Wyeksportowany certyfikat nie jest tym samym, co używany. Czy chcesz wyeksportować bieżący certyfikat?</translation> <translation>Wyeksportowany certyfikat nie jest tym samym, co używany. Czy chcesz wyeksportować bieżący certyfikat?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5176,10 +5151,6 @@ Dostępne polecenia:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Importuj z kontenera z certyfikatem</translation> <translation>Importuj z kontenera z certyfikatem</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>Czy chcesz zaufać %1 z odciskiem palca %2 z %3</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Nie tym razem</translation> <translation>Nie tym razem</translation>
@ -5256,14 +5227,6 @@ Dostępne polecenia:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Nie można zapisać kontenera eksportu (%1)</translation> <translation>Nie można zapisać kontenera eksportu (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Nie można osadzić podpisu (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Nie można osadzić bazy danych (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>Zastąpienie niepodpisanego kontenera udostępniania nie jest obsługiwane - eksport został zablokowany</translation> <translation>Zastąpienie niepodpisanego kontenera udostępniania nie jest obsługiwane - eksport został zablokowany</translation>
@ -5288,6 +5251,34 @@ Dostępne polecenia:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Eksportuj do %1</translation> <translation>Eksportuj do %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>Czy chcesz zaufać %1 z odciskiem palca %2 z %3? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Copiar para a área de transferência</translation> <translation>Copiar para a área de transferência</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revisão: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribuição: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Bibliotecas:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Sistema operativo: %1
Arquitetura do CPU: %2
Kernel: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Extensões ativas:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Manutenção do projeto:</translation> <translation>Manutenção do projeto:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Um agradecimento especial da equipa do KeePassXC a debfx por ter criado a aplicação KeePassX.</translation> <translation>Um agradecimento especial da equipa do KeePassXC a debfx por ter criado a aplicação KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Versão %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Tipo de compilação: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Escrita automática</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Integração com o navegador</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>Agente SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Nada</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (partilha assinada e não assinada)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (apenas partilha assinada)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (apenas partilha não assinada)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Selecione a base de dados correta para guardar as credenciais.</translation>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Selecionar localização do proxy personalizado</translation> <translation>Selecionar localização do proxy personalizado</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Lamentamos mas, de momento, o KeePassXC-Browser não tem suporte a versões Snap.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>Necessita de KeePassXC-Browser para que a integração com o navegador funcione. &lt;br /&gt;Descarregue para %1 e para %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>Navegador &amp;Tor</translation> <translation>Navegador &amp;Tor</translation>
@ -685,6 +609,18 @@ Selecione a base de dados correta para guardar as credenciais.</translation>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Não pedir permissão para autorização &amp;básica HTTP</translation> <translation>Não pedir permissão para autorização &amp;básica HTTP</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,12 +695,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC: Detetadas definições de integração legada com o navegador</translation> <translation>KeePassXC: Detetadas definições de integração legada com o navegador</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Detetadas definições de integração legada com o navegador. <message>
Deseja atualizar as definições para a versão mais recente? <source>A request for creating a new group &quot;%1&quot; has been received.
Esta atualização é necessária para manter a compatibilidade com o suplemento.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -926,6 +870,10 @@ Esta atualização é necessária para manter a compatibilidade com o suplemento
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Não é possível escrever no ficheiro porque este foi aberto no modo de leitura.</translation> <translation>Não é possível escrever no ficheiro porque este foi aberto no modo de leitura.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1681,6 +1629,10 @@ Desativar salvaguardas e tentar novamente?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>A base de dados não foi alterada pela combinação.</translation> <translation>A base de dados não foi alterada pela combinação.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2119,6 +2071,22 @@ Por favor utilize %1.</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Selecione o ficheiro de importação/exportação</translation> <translation>Selecione o ficheiro de importação/exportação</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Limpar</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2592,14 +2560,6 @@ Esta ação pode implicar um funcionamento errático.</translation>
<translation>[vazia]</translation> <translation>[vazia]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3194,6 +3154,22 @@ Linha %2, coluna %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Sincronizar com</translation> <translation>Sincronizar com</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3844,10 +3820,6 @@ Pode encontrar erros graves e esta versão não deve ser utilizada em ambientes
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;A palavra-passe é o método primário para proteger a sua base de dados.&lt;/p&gt;&lt;p&gt;As boas palavras-passe são extensão e únicas. O KeePassXC pode gerar uma palavra-passe por si.&lt;/p&gt;</translation> <translation>&lt;p&gt;A palavra-passe é o método primário para proteger a sua base de dados.&lt;/p&gt;&lt;p&gt;As boas palavras-passe são extensão e únicas. O KeePassXC pode gerar uma palavra-passe por si.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Palavra-passe não pode ser vazia.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Disparidade nas palavras-passe.</translation> <translation>Disparidade nas palavras-passe.</translation>
@ -4884,6 +4856,10 @@ Comandos disponíveis:
<source>Database password: </source> <source>Database password: </source>
<translation>Palavra-passe da base de dados: </translation> <translation>Palavra-passe da base de dados: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5157,9 +5133,8 @@ Comandos disponíveis:
<translation>O certificado exportado não é o que está a ser utilizado. Deseja exportar o certificado atual?</translation> <translation>O certificado exportado não é o que está a ser utilizado. Deseja exportar o certificado atual?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5176,10 +5151,6 @@ Comandos disponíveis:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Importar de um contentor com certificado</translation> <translation>Importar de um contentor com certificado</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>Quer confiar %1 com a impressão digital de %2 de %3</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Agora não</translation> <translation>Agora não</translation>
@ -5256,14 +5227,6 @@ Comandos disponíveis:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Não foi possível escrever contentor de exportação (%1)</translation> <translation>Não foi possível escrever contentor de exportação (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Não foi possível incorporar a assinatura (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Não foi possível incorporar a base de dados (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>A substituição de contentor de partilha assinado não é suportada - exportação evitada</translation> <translation>A substituição de contentor de partilha assinado não é suportada - exportação evitada</translation>
@ -5288,6 +5251,34 @@ Comandos disponíveis:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Exportar para %1</translation> <translation>Exportar para %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>Deseja confiar em %1 com a impressão digital de %2 em %3? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Copiar para a área de transferência</translation> <translation>Copiar para a área de transferência</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revisão: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribuição: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Bibliotecas:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Sistema operacional: %1
Arquitetura da CPU: %2
Kernel: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Extensões habilitadas:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Mantedores do Projeto:</translation> <translation>Mantedores do Projeto:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <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 KeePassXC agradece especialmente a debfx pela criação do KeePassX original.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Versão %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Tipo da Build: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Autodigitação</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Integração com o Navegador</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>Agente SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Nada</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (compartilhamento assinado e não assinado)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (somente compartilhamento assinado)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (apenas compartilhamento não assinado)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -353,7 +285,7 @@ Kernel: %3 %4</translation>
</message> </message>
<message> <message>
<source>Forget TouchID when session is locked or lid is closed</source> <source>Forget TouchID when session is locked or lid is closed</source>
<translation type="unfinished"/> <translation>Esqueça o TouchID quando a sessão está bloqueada ou a tampa está fechada</translation>
</message> </message>
<message> <message>
<source>Lock databases after minimizing the window</source> <source>Lock databases after minimizing the window</source>
@ -373,7 +305,7 @@ Kernel: %3 %4</translation>
</message> </message>
<message> <message>
<source>Don&apos;t use placeholder for empty password fields</source> <source>Don&apos;t use placeholder for empty password fields</source>
<translation type="unfinished"/> <translation>Não use espaço reservado para campos de senha vazios</translation>
</message> </message>
<message> <message>
<source>Hide passwords in the entry preview panel</source> <source>Hide passwords in the entry preview panel</source>
@ -389,7 +321,7 @@ Kernel: %3 %4</translation>
</message> </message>
<message> <message>
<source>Use DuckDuckGo as fallback for downloading website icons</source> <source>Use DuckDuckGo as fallback for downloading website icons</source>
<translation type="unfinished"/> <translation>Use DuckDuckGo como substituto para baixar ícones de sites</translation>
</message> </message>
</context> </context>
<context> <context>
@ -656,21 +588,13 @@ Por favor, selecione o banco de dados correto para salvar as credenciais.</trans
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Selecione localização para o proxy</translation> <translation>Selecione localização para o proxy</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Desculpe, o KeePassXC-Browser não é suportado em versões Snap no momento.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser é necessário para que a integração do navegador funcione. &lt;br /&gt;Faça o download de %1 e %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Navegador Tor</translation> <translation>&amp;Navegador Tor</translation>
</message> </message>
<message> <message>
<source>&lt;b&gt;Warning&lt;/b&gt;, the keepassxc-proxy application was not found!&lt;br /&gt;Please check the KeePassXC installation directory or confirm the custom path in advanced options.&lt;br /&gt;Browser integration WILL NOT WORK without the proxy application.&lt;br /&gt;Expected Path: </source> <source>&lt;b&gt;Warning&lt;/b&gt;, the keepassxc-proxy application was not found!&lt;br /&gt;Please check the KeePassXC installation directory or confirm the custom path in advanced options.&lt;br /&gt;Browser integration WILL NOT WORK without the proxy application.&lt;br /&gt;Expected Path: </source>
<translation type="unfinished"/> <translation>&lt;b&gt;Alerta&lt;/b&gt;, o aplicativo keepassxc-proxy não foi encontrado!&lt;br /&gt;Por favor, verifique o diretório de instalação do KeePassXC ou confirme o caminho personalizado nas opções avançadas.&lt;br /&gt;A integração do navegador não funcionará sem o aplicativo proxy.&lt;br /&gt;Caminho esperado: </translation>
</message> </message>
<message> <message>
<source>Executable Files</source> <source>Executable Files</source>
@ -685,6 +609,18 @@ Por favor, selecione o banco de dados correto para salvar as credenciais.</trans
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Não pedir permissão para HTTP &amp;Basic Auth</translation> <translation>Não pedir permissão para HTTP &amp;Basic Auth</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -738,11 +674,12 @@ Você deseja sobrescreve-la?</translation>
<message> <message>
<source>Successfully converted attributes from %1 entry(s). <source>Successfully converted attributes from %1 entry(s).
Moved %2 keys to custom data.</source> Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation>Atributos convertidos com sucesso de %1 entrada(s).
Movido %2 chaves para dados personalizados.</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Successfully moved %n keys to custom data.</source> <source>Successfully moved %n keys to custom data.</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation> <translation><numerusform>Movido com sucesso %n chaves para dados personalizados.</numerusform><numerusform>Movido com sucesso %n chaves para dados personalizados.</numerusform></translation>
</message> </message>
<message> <message>
<source>KeePassXC: No entry with KeePassHTTP attributes found!</source> <source>KeePassXC: No entry with KeePassHTTP attributes found!</source>
@ -757,12 +694,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC: Configurações de integração do navegador herdado detectadas</translation> <translation>KeePassXC: Configurações de integração do navegador herdado detectadas</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>As configurações de integração do navegador legadas foram detectadas. <message>
Você quer atualizar as configurações para o padrão mais recente? <source>A request for creating a new group &quot;%1&quot; has been received.
Isso é necessário para manter a compatibilidade com o plugin do navegador.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -914,7 +859,7 @@ Isso é necessário para manter a compatibilidade com o plugin do navegador.</tr
</message> </message>
<message> <message>
<source>Error while reading the database: %1</source> <source>Error while reading the database: %1</source>
<translation type="unfinished"/> <translation>Erro ao ler o banco de dados: %1</translation>
</message> </message>
<message> <message>
<source>Could not save, database has no file name.</source> <source>Could not save, database has no file name.</source>
@ -922,6 +867,10 @@ Isso é necessário para manter a compatibilidade com o plugin do navegador.</tr
</message> </message>
<message> <message>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>O arquivo não pode ser gravado, pois é aberto no modo somente leitura.</translation>
</message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -1071,7 +1020,8 @@ Por favor, considere-se gerar um novo arquivo de chave.</translation>
<message> <message>
<source>Do you really want to delete the selected key? <source>Do you really want to delete the selected key?
This may prevent connection to the browser plugin.</source> This may prevent connection to the browser plugin.</source>
<translation type="unfinished"/> <translation>Você realmente deseja excluir a chave selecionada?
Isso pode impedir a conexão com o plugin do navegador.</translation>
</message> </message>
<message> <message>
<source>Key</source> <source>Key</source>
@ -1101,7 +1051,7 @@ Isso pode impedir a conexão com o plugin do navegador.</translation>
</message> </message>
<message> <message>
<source>No shared encryption keys found in KeePassXC settings.</source> <source>No shared encryption keys found in KeePassXC settings.</source>
<translation type="unfinished"/> <translation>Nenhuma chave de criptografia compartilhada encontrada nas configurações do KeePassXC.</translation>
</message> </message>
<message> <message>
<source>KeePassXC: Removed keys from database</source> <source>KeePassXC: Removed keys from database</source>
@ -1673,6 +1623,10 @@ Deseja desabilitar salvamento seguro e tentar novamente?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Banco de dados não foi modificado pela operação de mesclagem.</translation> <translation>Banco de dados não foi modificado pela operação de mesclagem.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2110,6 +2064,22 @@ Deseja desabilitar salvamento seguro e tentar novamente?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Selecione o arquivo de importação/exportação</translation> <translation>Selecione o arquivo de importação/exportação</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Limpar</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2581,14 +2551,6 @@ Isto pode causar mal funcionamento dos plugins afetados.</translation>
<translation>[vazio]</translation> <translation>[vazio]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -2867,7 +2829,7 @@ Isto é uma migração de caminho único. Você não poderá abrir o banco de da
</message> </message>
<message> <message>
<source>Failed to read database file.</source> <source>Failed to read database file.</source>
<translation type="unfinished"/> <translation>Falha ao ler o arquivo de banco de dados.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3183,6 +3145,22 @@ Linha %2, coluna %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Sincronizar com</translation> <translation>Sincronizar com</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3459,7 +3437,8 @@ Esta versão não se destina ao uso em produção.</translation>
<message> <message>
<source>WARNING: Your Qt version may cause KeePassXC to crash with an On-Screen Keyboard! <source>WARNING: Your Qt version may cause KeePassXC to crash with an On-Screen Keyboard!
We recommend you use the AppImage available on our downloads page.</source> We recommend you use the AppImage available on our downloads page.</source>
<translation type="unfinished"/> <translation>AVISO: Sua versão do Qt pode fazer com que o KeePassXC trave com um teclado na tela!
Recomendamos que você use o AppImage disponível em nossa página de downloads.</translation>
</message> </message>
<message> <message>
<source>&amp;Import</source> <source>&amp;Import</source>
@ -3535,11 +3514,11 @@ We recommend you use the AppImage available on our downloads page.</source>
</message> </message>
<message> <message>
<source>KeePass 1 database...</source> <source>KeePass 1 database...</source>
<translation type="unfinished"/> <translation>Banco de dados do KeePass 1...</translation>
</message> </message>
<message> <message>
<source>Import a KeePass 1 database</source> <source>Import a KeePass 1 database</source>
<translation type="unfinished"/> <translation>Importar banco de dados do KeePass 1</translation>
</message> </message>
<message> <message>
<source>CSV file...</source> <source>CSV file...</source>
@ -3555,7 +3534,7 @@ We recommend you use the AppImage available on our downloads page.</source>
</message> </message>
<message> <message>
<source>Show TOTP QR Code...</source> <source>Show TOTP QR Code...</source>
<translation type="unfinished"/> <translation>Exibir Código QR do TOTP...</translation>
</message> </message>
<message> <message>
<source>Check for Updates...</source> <source>Check for Updates...</source>
@ -3568,7 +3547,8 @@ We recommend you use the AppImage available on our downloads page.</source>
<message> <message>
<source>NOTE: You are using a pre-release version of KeePassXC! <source>NOTE: You are using a pre-release version of KeePassXC!
Expect some bugs and minor issues, this version is not meant for production use.</source> Expect some bugs and minor issues, this version is not meant for production use.</source>
<translation type="unfinished"/> <translation>NOTA: Você está usando uma versão de pré-lançamento do KeePassXC!
Espere alguns bugs e problemas menores, esta versão não é para uso em produção.</translation>
</message> </message>
<message> <message>
<source>Check for updates on startup?</source> <source>Check for updates on startup?</source>
@ -3599,7 +3579,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>older entry merged from database &quot;%1&quot;</source> <source>older entry merged from database &quot;%1&quot;</source>
<translation type="unfinished"/> <translation>entrada mais antiga mesclada do banco de dados &quot;%1&quot;</translation>
</message> </message>
<message> <message>
<source>Adding backup for older target %1 [%2]</source> <source>Adding backup for older target %1 [%2]</source>
@ -3623,7 +3603,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>Synchronizing from older source %1 [%2]</source> <source>Synchronizing from older source %1 [%2]</source>
<translation type="unfinished"/> <translation>Sincronizando a partir da fonte antiga %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Deleting child %1 [%2]</source> <source>Deleting child %1 [%2]</source>
@ -3827,10 +3807,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Senha não pode estar vazia.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Senha não corresponde.</translation> <translation>Senha não corresponde.</translation>
@ -4041,7 +4017,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>Character set to exclude from generated password</source> <source>Character set to exclude from generated password</source>
<translation type="unfinished"/> <translation>Conjunto de caracteres para excluir da senha gerada</translation>
</message> </message>
<message> <message>
<source>Do not include:</source> <source>Do not include:</source>
@ -4439,7 +4415,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Enter password for new entry: </source> <source>Enter password for new entry: </source>
<translation type="unfinished"/> <translation>Digite a senha para a nova entrada:</translation>
</message> </message>
<message> <message>
<source>Writing the database failed %1.</source> <source>Writing the database failed %1.</source>
@ -4455,11 +4431,11 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Invalid timeout value %1.</source> <source>Invalid timeout value %1.</source>
<translation type="unfinished"/> <translation>Valor de tempo limite inválido %1.</translation>
</message> </message>
<message> <message>
<source>Entry %1 not found.</source> <source>Entry %1 not found.</source>
<translation type="unfinished"/> <translation>Entrada%1 não encontrada.</translation>
</message> </message>
<message> <message>
<source>Entry with path %1 has no TOTP set up.</source> <source>Entry with path %1 has no TOTP set up.</source>
@ -4483,7 +4459,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Silence password prompt and other secondary outputs.</source> <source>Silence password prompt and other secondary outputs.</source>
<translation type="unfinished"/> <translation>Pergunta por senha em silêncio e outras saídas secundárias.</translation>
</message> </message>
<message> <message>
<source>count</source> <source>count</source>
@ -4492,7 +4468,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Invalid value for password length: %1</source> <source>Invalid value for password length: %1</source>
<translation type="unfinished"/> <translation>Valor inválido para o tamanho da senha: %1</translation>
</message> </message>
<message> <message>
<source>Could not find entry with path %1.</source> <source>Could not find entry with path %1.</source>
@ -4504,7 +4480,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Enter new password for entry: </source> <source>Enter new password for entry: </source>
<translation type="unfinished"/> <translation>Digite uma nova senha para entrada:</translation>
</message> </message>
<message> <message>
<source>Writing the database failed: %1</source> <source>Writing the database failed: %1</source>
@ -4512,7 +4488,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Successfully edited entry %1.</source> <source>Successfully edited entry %1.</source>
<translation type="unfinished"/> <translation>Entrada editada com sucesso %1.</translation>
</message> </message>
<message> <message>
<source>Length %1</source> <source>Length %1</source>
@ -4608,7 +4584,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Entropy %1 (%2)</source> <source>Entropy %1 (%2)</source>
<translation type="unfinished"/> <translation>Entropia %1 (%2)</translation>
</message> </message>
<message> <message>
<source>*** Password length (%1) != sum of length of parts (%2) ***</source> <source>*** Password length (%1) != sum of length of parts (%2) ***</source>
@ -4658,7 +4634,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Use extended ASCII</source> <source>Use extended ASCII</source>
<translation type="unfinished"/> <translation>Use estendido ASCII</translation>
</message> </message>
<message> <message>
<source>Exclude character set</source> <source>Exclude character set</source>
@ -4678,7 +4654,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Recursively list the elements of the group.</source> <source>Recursively list the elements of the group.</source>
<translation type="unfinished"/> <translation>Listar recursivamente os elementos do grupo.</translation>
</message> </message>
<message> <message>
<source>Cannot find group %1.</source> <source>Cannot find group %1.</source>
@ -4723,7 +4699,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>file empty</source> <source>file empty</source>
<translation type="unfinished"/> <translation>arquivo vazio</translation>
</message> </message>
<message> <message>
<source>%1: (row, col) %2,%3</source> <source>%1: (row, col) %2,%3</source>
@ -4769,11 +4745,11 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>No groups found</source> <source>No groups found</source>
<translation type="unfinished"/> <translation>Nenhum grupo encontrado</translation>
</message> </message>
<message> <message>
<source>Create a new database.</source> <source>Create a new database.</source>
<translation type="unfinished"/> <translation>Criar um novo banco de dados.</translation>
</message> </message>
<message> <message>
<source>File %1 already exists.</source> <source>File %1 already exists.</source>
@ -4781,7 +4757,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Loading the key file failed</source> <source>Loading the key file failed</source>
<translation type="unfinished"/> <translation>O carregamento do arquivo de chave falhou</translation>
</message> </message>
<message> <message>
<source>No key is set. Aborting database creation.</source> <source>No key is set. Aborting database creation.</source>
@ -4789,7 +4765,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>Failed to save the database: %1.</source> <source>Failed to save the database: %1.</source>
<translation type="unfinished"/> <translation>Falha ao salvar o banco de dados: %1.</translation>
</message> </message>
<message> <message>
<source>Successfully created new database.</source> <source>Successfully created new database.</source>
@ -4863,6 +4839,10 @@ Comandos disponíveis:
<source>Database password: </source> <source>Database password: </source>
<translation>Senha do banco de dados:</translation> <translation>Senha do banco de dados:</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -4910,7 +4890,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>No agent running, cannot add identity.</source> <source>No agent running, cannot add identity.</source>
<translation type="unfinished"/> <translation>Nenhum agente em execução, não é possível adicionar identidade.</translation>
</message> </message>
<message> <message>
<source>No agent running, cannot remove identity.</source> <source>No agent running, cannot remove identity.</source>
@ -4953,11 +4933,11 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>exclude term from results</source> <source>exclude term from results</source>
<translation type="unfinished"/> <translation>excluir termo dos resultados</translation>
</message> </message>
<message> <message>
<source>match term exactly</source> <source>match term exactly</source>
<translation type="unfinished"/> <translation>encontrar termo exato</translation>
</message> </message>
<message> <message>
<source>use regex in term</source> <source>use regex in term</source>
@ -5136,9 +5116,8 @@ Comandos disponíveis:
<translation>O certificado exportado não é o mesmo que está em uso. Você quer exportar o certificado atual?</translation> <translation>O certificado exportado não é o mesmo que está em uso. Você quer exportar o certificado atual?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5155,10 +5134,6 @@ Comandos disponíveis:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Importar do contêiner com certificado</translation> <translation>Importar do contêiner com certificado</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Não dessa vez</translation> <translation>Não dessa vez</translation>
@ -5193,19 +5168,19 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>File is not readable</source> <source>File is not readable</source>
<translation type="unfinished"/> <translation>Arquivo não é legível</translation>
</message> </message>
<message> <message>
<source>Invalid sharing container</source> <source>Invalid sharing container</source>
<translation type="unfinished"/> <translation>Contêiner de compartilhamento inválido</translation>
</message> </message>
<message> <message>
<source>Untrusted import prevented</source> <source>Untrusted import prevented</source>
<translation type="unfinished"/> <translation>Importação não confiável impedida</translation>
</message> </message>
<message> <message>
<source>Successful signed import</source> <source>Successful signed import</source>
<translation type="unfinished"/> <translation>Importação assinada bem-sucedida</translation>
</message> </message>
<message> <message>
<source>Unexpected error</source> <source>Unexpected error</source>
@ -5235,21 +5210,13 @@ Comandos disponíveis:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation>A substituição de contêiner de compartilhamento não assinado não é suportada - exportação impedida</translation>
</message> </message>
<message> <message>
<source>Could not write export container</source> <source>Could not write export container</source>
<translation type="unfinished"/> <translation>Não foi possível escrever o contêiner de exportação</translation>
</message> </message>
<message> <message>
<source>Unexpected export error occurred</source> <source>Unexpected export error occurred</source>
@ -5267,6 +5234,34 @@ Comandos disponíveis:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Exportar para %1</translation> <translation>Exportar para %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>
@ -5284,7 +5279,7 @@ Comandos disponíveis:
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Expires in &lt;b&gt;%n&lt;/b&gt; second(s)</source> <source>Expires in &lt;b&gt;%n&lt;/b&gt; second(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation> <translation><numerusform>Expira em &lt;b&gt;%n&lt;/b&gt; segundo(s)</numerusform><numerusform>Expira em &lt;b&gt;%n&lt;/b&gt; segundo(s)</numerusform></translation>
</message> </message>
</context> </context>
<context> <context>
@ -5296,11 +5291,11 @@ Comandos disponíveis:
<message> <message>
<source>NOTE: These TOTP settings are custom and may not work with other authenticators.</source> <source>NOTE: These TOTP settings are custom and may not work with other authenticators.</source>
<comment>TOTP QR code dialog warning</comment> <comment>TOTP QR code dialog warning</comment>
<translation type="unfinished"/> <translation>NOTA: Essas configurações de TOTP são personalizadas e podem não funcionar com outros autenticadores.</translation>
</message> </message>
<message> <message>
<source>There was an error creating the QR code.</source> <source>There was an error creating the QR code.</source>
<translation type="unfinished"/> <translation>Ocorreu um erro ao criar o código QR.</translation>
</message> </message>
<message> <message>
<source>Closing in %1 seconds.</source> <source>Closing in %1 seconds.</source>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Copiar para a área de transferência</translation> <translation>Copiar para a área de transferência</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revisão: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribuição: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Bibliotecas:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Sistema operativo: %1
Arquitetura do CPU: %2
Kernel: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Extensões ativas:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Manutenção do projeto:</translation> <translation>Manutenção do projeto:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Um agradecimento especial da equipa KeePassXC a debfx por ter criado a aplicação KeePassX.</translation> <translation>Um agradecimento especial da equipa KeePassXC a debfx por ter criado a aplicação KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Versão %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Tipo de compilação: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Escrita automática</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Integração com o navegador</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>Agente SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Nada</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (partilha assinada e não assinada)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (apenas partilha assinada)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (apenas partilha não assinada)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Selecione a base de dados correta para guardar as credenciais.</translation>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Selecionar localização do proxy personalizado</translation> <translation>Selecionar localização do proxy personalizado</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Lamentamos mas, de momento, o KeePassXC-Browser não tem suporte a versões Snap.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>Necessita de KeePassXC-Browser para que a integração com o navegador funcione. &lt;br /&gt;Descarregue para %1 e para %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>Navegador &amp;Tor</translation> <translation>Navegador &amp;Tor</translation>
@ -685,6 +609,18 @@ Selecione a base de dados correta para guardar as credenciais.</translation>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Não pedir permissão para autorização &amp;básica HTTP</translation> <translation>Não pedir permissão para autorização &amp;básica HTTP</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,12 +695,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC: Detetadas definições de integração legada com o navegador</translation> <translation>KeePassXC: Detetadas definições de integração legada com o navegador</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Detetadas definições de integração legada com o navegador. <message>
Deseja atualizar as definições para a versão mais recente? <source>A request for creating a new group &quot;%1&quot; has been received.
Esta atualização é necessária para manter a compatibilidade com o suplemento.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -926,6 +870,10 @@ Esta atualização é necessária para manter a compatibilidade com o suplemento
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Não é possível escrever no ficheiro porque este foi aberto no modo de leitura.</translation> <translation>Não é possível escrever no ficheiro porque este foi aberto no modo de leitura.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1507,7 +1455,7 @@ Existe aqui um erro que deve ser reportado aos programadores.</translation>
<name>DatabaseWidget</name> <name>DatabaseWidget</name>
<message> <message>
<source>Searching...</source> <source>Searching...</source>
<translation>Pesquisar..</translation> <translation>Pesquisar...</translation>
</message> </message>
<message> <message>
<source>Do you really want to delete the entry &quot;%1&quot; for good?</source> <source>Do you really want to delete the entry &quot;%1&quot; for good?</source>
@ -1681,6 +1629,10 @@ Desativar salvaguardas e tentar novamente?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>A base de dados não foi modificada pela combinação.</translation> <translation>A base de dados não foi modificada pela combinação.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2119,6 +2071,22 @@ Por favor utilize %1.</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Selecione o ficheiro de importação/exportação</translation> <translation>Selecione o ficheiro de importação/exportação</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Limpar</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2592,14 +2560,6 @@ Esta ação pode implicar um funcionamento errático.</translation>
<translation>[vazia]</translation> <translation>[vazia]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3194,6 +3154,22 @@ Linha %2, coluna %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Sincronizar com</translation> <translation>Sincronizar com</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3231,7 +3207,7 @@ Linha %2, coluna %3</translation>
<message> <message>
<source>%1 set, click to change or remove</source> <source>%1 set, click to change or remove</source>
<comment>Change or remove a key component</comment> <comment>Change or remove a key component</comment>
<translation>%1 definido, clique para alterar ou remover</translation> <translation>%1 definida, clique para alterar ou remover</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3250,7 +3226,7 @@ Linha %2, coluna %3</translation>
</message> </message>
<message> <message>
<source>&lt;p&gt;You can add a key file containing random bytes for additional security.&lt;/p&gt;&lt;p&gt;You must keep it secret and never lose it or you will be locked out!&lt;/p&gt;</source> <source>&lt;p&gt;You can add a key file containing random bytes for additional security.&lt;/p&gt;&lt;p&gt;You must keep it secret and never lose it or you will be locked out!&lt;/p&gt;</source>
<translation>&lt;p&gt;Para mais segurança, pode adicionar um ficheiro-chave que contenha dados aleatórios.&lt;/p&gt;&lt;p&gt;Tem que o manter secreto e não o pode perder pois se o fizer não mais poderá abrir a base de dados.&lt;/p&gt;</translation> <translation>&lt;p&gt;Para mais segurança, pode adicionar um ficheiro-chave que contenha dados aleatórios.&lt;/p&gt;&lt;p&gt;Tem de o manter secreto e não o pode perder pois se tal acontecer, nunca mais conseguirá abrir a base de dados.&lt;/p&gt;</translation>
</message> </message>
<message> <message>
<source>Legacy key file format</source> <source>Legacy key file format</source>
@ -3844,10 +3820,6 @@ Pode encontrar erros graves e esta versão não deve ser utilizada em ambientes
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;A palavra-passe é o método primário para proteger a sua base de dados.&lt;/p&gt;&lt;p&gt;As boas palavras-passe são extensão e únicas. O KeePassXC pode gerar uma palavra-passe por si.&lt;/p&gt;</translation> <translation>&lt;p&gt;A palavra-passe é o método primário para proteger a sua base de dados.&lt;/p&gt;&lt;p&gt;As boas palavras-passe são extensão e únicas. O KeePassXC pode gerar uma palavra-passe por si.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Palavra-passe não pode ser vazia.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Disparidade nas palavras-passe.</translation> <translation>Disparidade nas palavras-passe.</translation>
@ -4884,6 +4856,10 @@ Comandos disponíveis:
<source>Database password: </source> <source>Database password: </source>
<translation>Palavra-passe da base de dados: </translation> <translation>Palavra-passe da base de dados: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5157,9 +5133,8 @@ Comandos disponíveis:
<translation>O certificado exportado não é o que está a ser utilizado. Deseja exportar o certificado atual?</translation> <translation>O certificado exportado não é o que está a ser utilizado. Deseja exportar o certificado atual?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5176,10 +5151,6 @@ Comandos disponíveis:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Importar de um contentor com certificado</translation> <translation>Importar de um contentor com certificado</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>Quer confiar %1 com a impressão digital de %2 de %3</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Agora não</translation> <translation>Agora não</translation>
@ -5256,14 +5227,6 @@ Comandos disponíveis:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Não foi possível escrever contentor de exportação (%1)</translation> <translation>Não foi possível escrever contentor de exportação (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Não foi possível incorporar a assinatura (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Não foi possível incorporar a base de dados (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>A substituição de contentor de partilha assinado não é suportada - exportação evitada</translation> <translation>A substituição de contentor de partilha assinado não é suportada - exportação evitada</translation>
@ -5288,6 +5251,34 @@ Comandos disponíveis:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Exportar para %1</translation> <translation>Exportar para %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>Deseja confiar em %1 com a impressão digital de %2 em %3? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>
@ -5474,7 +5465,7 @@ Comandos disponíveis:
</message> </message>
<message> <message>
<source>&lt;p&gt;If you own a &lt;a href=&quot;https://www.yubico.com/&quot;&gt;YubiKey&lt;/a&gt;, you can use it for additional security.&lt;/p&gt;&lt;p&gt;The YubiKey requires one of its slots to be programmed as &lt;a href=&quot;https://www.yubico.com/products/services-software/personalization-tools/challenge-response/&quot;&gt;HMAC-SHA1 Challenge-Response&lt;/a&gt;.&lt;/p&gt;</source> <source>&lt;p&gt;If you own a &lt;a href=&quot;https://www.yubico.com/&quot;&gt;YubiKey&lt;/a&gt;, you can use it for additional security.&lt;/p&gt;&lt;p&gt;The YubiKey requires one of its slots to be programmed as &lt;a href=&quot;https://www.yubico.com/products/services-software/personalization-tools/challenge-response/&quot;&gt;HMAC-SHA1 Challenge-Response&lt;/a&gt;.&lt;/p&gt;</source>
<translation>&lt;p&gt;Se você tiver uma &lt;a href=&quot;https://www.yubico.com/&quot;&gt;YubiKey&lt;/a&gt;, pode utiliza-la para obter mais segurança.&lt;/p&gt;&lt;p&gt;A YubiKey requer que uma das suas ranhuras seja programada como uma &lt;a href=&quot;https://www.yubico.com/products/services-software/personalization-tools/challenge-response/&quot;&gt;HMAC-SHA1 Challenge-Response&lt;/a&gt;.&lt;/p&gt;</translation> <translation>&lt;p&gt;Se tiver uma &lt;a href=&quot;https://www.yubico.com/&quot;&gt;YubiKey&lt;/a&gt;, pode utilizá-la para obter mais segurança.&lt;/p&gt;&lt;p&gt;A YubiKey requer que uma das suas ranhuras seja programada como uma &lt;a href=&quot;https://www.yubico.com/products/services-software/personalization-tools/challenge-response/&quot;&gt;HMAC-SHA1 Challenge-Response&lt;/a&gt;.&lt;/p&gt;</translation>
</message> </message>
<message> <message>
<source>No YubiKey detected, please ensure it&apos;s plugged in.</source> <source>No YubiKey detected, please ensure it&apos;s plugged in.</source>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Скопировать в буфер обмена</translation> <translation>Скопировать в буфер обмена</translation>
</message> </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> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Проект сопровождают:</translation> <translation>Проект сопровождают:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</source>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Команда KeePassXC выражает особую благодарность debfx за создание оригинального KeePassX.</translation> <translation>Команда KeePassXC выражает особую благодарность debfx за создание оригинального KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Версия %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Тип сборки: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Автоввод</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Интеграция с браузером</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH-агент</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Нет</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (доступ с использованием подписей и без)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (доступ только с использованием подписи)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (доступ только без использованием подписи)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Выбрать другое расположение прокси</translation> <translation>Выбрать другое расположение прокси</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>KeePassXC-Browser сейчас не поддерживается для выпусков Snap.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser необходим для интеграции браузера. &lt;br /&gt; ачайте его для %1 и %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Browser</translation> <translation>&amp;Tor Browser</translation>
@ -685,6 +609,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Не спрашивать разрешения для HTTP и Basic авторизации</translation> <translation>Не спрашивать разрешения для HTTP и Basic авторизации</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,12 +695,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC: Устаревшая интеграция с браузером обнаружена</translation> <translation>KeePassXC: Устаревшая интеграция с браузером обнаружена</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Параметры устаревшей интеграции с браузерами были обнаружены. Вы хотите обновить параметры до нового стандарта? <message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Это необходимо для сохранения совместимости с плагином для браузера.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -925,6 +869,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Файл не может быть перезаписан, т.к. он открыт в режиме &quot;только для чтения&quot;.</translation> <translation>Файл не может быть перезаписан, т.к. он открыт в режиме &quot;только для чтения&quot;.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -957,7 +905,7 @@ This is necessary to maintain compatibility with the browser plugin.</source>
</message> </message>
<message> <message>
<source>Challenge Response:</source> <source>Challenge Response:</source>
<translation>Ответ на вызов:</translation> <translation>Вызов-ответ:</translation>
</message> </message>
<message> <message>
<source>Legacy key file format</source> <source>Legacy key file format</source>
@ -1657,7 +1605,7 @@ Disable safe saves and try again?</source>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Entry &quot;%1&quot; has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway?</source> <source>Entry &quot;%1&quot; has %2 reference(s). Do you want to overwrite references with values, skip this entry, or delete anyway?</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation> <translation><numerusform>Запись &quot;%1&quot; имеет %2 ссылку. Вы хотите переписать ссылки значениями, пропустить эту запись или удалить в любом случае?</numerusform><numerusform>Запись &quot;%1&quot; имеет %2 ссылки. Вы хотите переписать ссылки значениями, пропустить эту запись или удалить в любом случае?</numerusform><numerusform>Запись &quot;%1&quot; имеет %2 ссылок. Вы хотите переписать ссылки значениями, пропустить эту запись или удалить в любом случае?</numerusform><numerusform>Запись &quot;%1&quot; имеет %2 ссылку(ки, ок). Вы хотите переписать ссылки значениями, пропустить эту запись или удалить в любом случае?</numerusform></translation>
</message> </message>
<message> <message>
<source>Delete group</source> <source>Delete group</source>
@ -1679,6 +1627,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>База данных не была изменена операцией слияния.</translation> <translation>База данных не была изменена операцией слияния.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2116,6 +2068,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Выберите файл для импорта/экспорта</translation> <translation>Выберите файл для импорта/экспорта</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Очистить</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2196,7 +2164,7 @@ Disable safe saves and try again?</source>
</message> </message>
<message> <message>
<source>Hint: You can enable DuckDuckGo as a fallback under Tools&gt;Settings&gt;Security</source> <source>Hint: You can enable DuckDuckGo as a fallback under Tools&gt;Settings&gt;Security</source>
<translation type="unfinished"/> <translation>Совет: Вы можете включить DuckDuckGo в качестве резерва в &quot;Инструменты&gt;Настройки&gt;Безопасность&quot;</translation>
</message> </message>
<message> <message>
<source>Select Image(s)</source> <source>Select Image(s)</source>
@ -2204,7 +2172,7 @@ Disable safe saves and try again?</source>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Successfully loaded %1 of %n icon(s)</source> <source>Successfully loaded %1 of %n icon(s)</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation> <translation><numerusform>Успешно загружено %1 из %n иконки</numerusform><numerusform>Успешно загружено %1 из %n иконок</numerusform><numerusform>Успешно загружено %1 из %n иконок</numerusform><numerusform>Успешно загружено %1 из %n иконки(ок)</numerusform></translation>
</message> </message>
<message> <message>
<source>No icons were loaded</source> <source>No icons were loaded</source>
@ -2220,7 +2188,7 @@ Disable safe saves and try again?</source>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it?</source> <source>This icon is used by %n entry(s), and will be replaced by the default icon. Are you sure you want to delete it?</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation> <translation><numerusform>Эта иконка используется %n записью и будет замещена иконкой по умолчанию. Вы уверены, что хотите удалить её?</numerusform><numerusform>Эта иконка используется %n записями и будет замещена иконкой по умолчанию. Вы уверены, что хотите удалить её?</numerusform><numerusform>Эта иконка используется %n записями и будет замещена иконкой по умолчанию. Вы уверены, что хотите удалить её?</numerusform><numerusform>Эта иконка используется %n записью(ями) и будет замещена иконкой по умолчанию. Вы уверены, что хотите удалить её?</numerusform></translation>
</message> </message>
</context> </context>
<context> <context>
@ -2590,14 +2558,6 @@ This may cause the affected plugins to malfunction.</source>
<translation>[пустой]</translation> <translation>[пустой]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -2868,7 +2828,7 @@ This is a one-way migration. You won&apos;t be able to open the imported databas
</message> </message>
<message> <message>
<source>Invalid cipher uuid length: %1 (length=%2)</source> <source>Invalid cipher uuid length: %1 (length=%2)</source>
<translation type="unfinished"/> <translation>Неверная длина UUID шифра: %1 (длина=%2)</translation>
</message> </message>
<message> <message>
<source>Unable to parse UUID: %1</source> <source>Unable to parse UUID: %1</source>
@ -3171,7 +3131,7 @@ Line %2, column %3</source>
</message> </message>
<message> <message>
<source>unable to seek to content position</source> <source>unable to seek to content position</source>
<translation type="unfinished"/> <translation>не удалось переместиться к позиции содержимого</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3192,6 +3152,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Синхронизировать с</translation> <translation>Синхронизировать с</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3248,7 +3224,7 @@ Line %2, column %3</source>
</message> </message>
<message> <message>
<source>&lt;p&gt;You can add a key file containing random bytes for additional security.&lt;/p&gt;&lt;p&gt;You must keep it secret and never lose it or you will be locked out!&lt;/p&gt;</source> <source>&lt;p&gt;You can add a key file containing random bytes for additional security.&lt;/p&gt;&lt;p&gt;You must keep it secret and never lose it or you will be locked out!&lt;/p&gt;</source>
<translation type="unfinished"/> <translation>&lt;p&gt;Вы можете добавить ключевой файл, содержащий случайные байты, для дополнительной безопасности.&lt;/p&gt;&lt;p&gt;Вы должны хранить его в секрете и никогда не терять, или Вы будете заблокированы!&lt;/p&gt;</translation>
</message> </message>
<message> <message>
<source>Legacy key file format</source> <source>Legacy key file format</source>
@ -3259,12 +3235,15 @@ Line %2, column %3</source>
unsupported in the future. unsupported in the future.
Please go to the master key settings and generate a new key file.</source> Please go to the master key settings and generate a new key file.</source>
<translation type="unfinished"/> <translation>Вы используете устаревший формат файла-ключа, который может стать не поддерживаемым в будущем.
Пожалуйста, сходите в настройки мастер ключа и сгенерируйте новый файл-ключ.</translation>
</message> </message>
<message> <message>
<source>Error loading the key file '%1' <source>Error loading the key file '%1'
Message: %2</source> Message: %2</source>
<translation type="unfinished"/> <translation>Ошибка загрузки ключевого файла &apos;%1&apos;
Сообщение: %2</translation>
</message> </message>
<message> <message>
<source>Key files</source> <source>Key files</source>
@ -3299,7 +3278,7 @@ Message: %2</source>
</message> </message>
<message> <message>
<source>&amp;Recent databases</source> <source>&amp;Recent databases</source>
<translation>&amp;Недавние базы данных</translation> <translation>Н&amp;едавние базы данных</translation>
</message> </message>
<message> <message>
<source>&amp;Help</source> <source>&amp;Help</source>
@ -3319,7 +3298,7 @@ Message: %2</source>
</message> </message>
<message> <message>
<source>&amp;Quit</source> <source>&amp;Quit</source>
<translation>В&amp;ыход</translation> <translation>&amp;Выход</translation>
</message> </message>
<message> <message>
<source>&amp;About</source> <source>&amp;About</source>
@ -3351,7 +3330,7 @@ Message: %2</source>
</message> </message>
<message> <message>
<source>Sa&amp;ve database as...</source> <source>Sa&amp;ve database as...</source>
<translation>&amp;Сохранить базу данных как...</translation> <translation>Со&amp;хранить базу данных как...</translation>
</message> </message>
<message> <message>
<source>Database settings</source> <source>Database settings</source>
@ -3473,19 +3452,19 @@ We recommend you use the AppImage available on our downloads page.</source>
</message> </message>
<message> <message>
<source>&amp;Import</source> <source>&amp;Import</source>
<translation>&amp;Import</translation> <translation>&amp;Импорт</translation>
</message> </message>
<message> <message>
<source>Copy att&amp;ribute...</source> <source>Copy att&amp;ribute...</source>
<translation>Копирование атрибутов...</translation> <translation>Скопировать ат&amp;рибут...</translation>
</message> </message>
<message> <message>
<source>TOTP...</source> <source>TOTP...</source>
<translation>TOTP...</translation> <translation>&amp;TOTP...</translation>
</message> </message>
<message> <message>
<source>&amp;New database...</source> <source>&amp;New database...</source>
<translation type="unfinished"/> <translation>&amp;Новая база данных...</translation>
</message> </message>
<message> <message>
<source>Create a new database</source> <source>Create a new database</source>
@ -3493,15 +3472,15 @@ We recommend you use the AppImage available on our downloads page.</source>
</message> </message>
<message> <message>
<source>&amp;Merge from database...</source> <source>&amp;Merge from database...</source>
<translation type="unfinished"/> <translation>Сое&amp;динить с другой базой данных...</translation>
</message> </message>
<message> <message>
<source>Merge from another KDBX database</source> <source>Merge from another KDBX database</source>
<translation type="unfinished"/> <translation>Соединить с другой базой данных KDBX</translation>
</message> </message>
<message> <message>
<source>&amp;New entry</source> <source>&amp;New entry</source>
<translation type="unfinished"/> <translation>&amp;Новая запись</translation>
</message> </message>
<message> <message>
<source>Add a new entry</source> <source>Add a new entry</source>
@ -3509,7 +3488,7 @@ We recommend you use the AppImage available on our downloads page.</source>
</message> </message>
<message> <message>
<source>&amp;Edit entry</source> <source>&amp;Edit entry</source>
<translation type="unfinished"/> <translation>&amp;Править запись</translation>
</message> </message>
<message> <message>
<source>View or edit entry</source> <source>View or edit entry</source>
@ -3517,7 +3496,7 @@ We recommend you use the AppImage available on our downloads page.</source>
</message> </message>
<message> <message>
<source>&amp;New group</source> <source>&amp;New group</source>
<translation type="unfinished"/> <translation>&amp;Новая группа</translation>
</message> </message>
<message> <message>
<source>Add a new group</source> <source>Add a new group</source>
@ -3529,15 +3508,15 @@ We recommend you use the AppImage available on our downloads page.</source>
</message> </message>
<message> <message>
<source>&amp;Database settings...</source> <source>&amp;Database settings...</source>
<translation type="unfinished"/> <translation>&amp;Параметры базы данных...</translation>
</message> </message>
<message> <message>
<source>Copy &amp;password</source> <source>Copy &amp;password</source>
<translation>Скпировать &amp;пароль</translation> <translation>Скопировать п&amp;ароль</translation>
</message> </message>
<message> <message>
<source>Perform &amp;Auto-Type</source> <source>Perform &amp;Auto-Type</source>
<translation type="unfinished"/> <translation>Осуществить а&amp;втоввод</translation>
</message> </message>
<message> <message>
<source>Open &amp;URL</source> <source>Open &amp;URL</source>
@ -3598,66 +3577,66 @@ Expect some bugs and minor issues, this version is not meant for production use.
<name>Merger</name> <name>Merger</name>
<message> <message>
<source>Creating missing %1 [%2]</source> <source>Creating missing %1 [%2]</source>
<translation type="unfinished"/> <translation>Создание отсутствующей %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Relocating %1 [%2]</source> <source>Relocating %1 [%2]</source>
<translation type="unfinished"/> <translation>Перемещение %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Overwriting %1 [%2]</source> <source>Overwriting %1 [%2]</source>
<translation type="unfinished"/> <translation>Перезапись %1 [%2]</translation>
</message> </message>
<message> <message>
<source>older entry merged from database &quot;%1&quot;</source> <source>older entry merged from database &quot;%1&quot;</source>
<translation type="unfinished"/> <translation>более старая запись присоединена из базы данных &quot;%1&quot;</translation>
</message> </message>
<message> <message>
<source>Adding backup for older target %1 [%2]</source> <source>Adding backup for older target %1 [%2]</source>
<translation type="unfinished"/> <translation>Добавление резервной копии для более старой мишени %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Adding backup for older source %1 [%2]</source> <source>Adding backup for older source %1 [%2]</source>
<translation type="unfinished"/> <translation>Добавление резервной копии для более старого источника %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Reapplying older target entry on top of newer source %1 [%2]</source> <source>Reapplying older target entry on top of newer source %1 [%2]</source>
<translation type="unfinished"/> <translation>Повторное применение более старой целевой записи поверх более нового источника %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Reapplying older source entry on top of newer target %1 [%2]</source> <source>Reapplying older source entry on top of newer target %1 [%2]</source>
<translation type="unfinished"/> <translation>Повторное применение более старой исходной записи поверх более новой мишени %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Synchronizing from newer source %1 [%2]</source> <source>Synchronizing from newer source %1 [%2]</source>
<translation type="unfinished"/> <translation>Синхронизация с более новым источником %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Synchronizing from older source %1 [%2]</source> <source>Synchronizing from older source %1 [%2]</source>
<translation type="unfinished"/> <translation>Синхронизация с более старым источником %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Deleting child %1 [%2]</source> <source>Deleting child %1 [%2]</source>
<translation type="unfinished"/> <translation>Удаление дочерней %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Deleting orphan %1 [%2]</source> <source>Deleting orphan %1 [%2]</source>
<translation type="unfinished"/> <translation>Удаление заброшенной %1 [%2]</translation>
</message> </message>
<message> <message>
<source>Changed deleted objects</source> <source>Changed deleted objects</source>
<translation type="unfinished"/> <translation>Изменены удалённые объекты</translation>
</message> </message>
<message> <message>
<source>Adding missing icon %1</source> <source>Adding missing icon %1</source>
<translation type="unfinished"/> <translation>Добавление отсутствующей иконки %1</translation>
</message> </message>
</context> </context>
<context> <context>
<name>NewDatabaseWizard</name> <name>NewDatabaseWizard</name>
<message> <message>
<source>Create a new KeePassXC database...</source> <source>Create a new KeePassXC database...</source>
<translation type="unfinished"/> <translation>Создать новую базу данных KeePassXC</translation>
</message> </message>
<message> <message>
<source>Root</source> <source>Root</source>
@ -3669,15 +3648,15 @@ Expect some bugs and minor issues, this version is not meant for production use.
<name>NewDatabaseWizardPage</name> <name>NewDatabaseWizardPage</name>
<message> <message>
<source>WizardPage</source> <source>WizardPage</source>
<translation type="unfinished"/> <translation>СтраницаМастера</translation>
</message> </message>
<message> <message>
<source>En&amp;cryption Settings</source> <source>En&amp;cryption Settings</source>
<translation type="unfinished"/> <translation>Настройки шифрования</translation>
</message> </message>
<message> <message>
<source>Here you can adjust the database encryption settings. Don&apos;t worry, you can change them later in the database settings.</source> <source>Here you can adjust the database encryption settings. Don&apos;t worry, you can change them later in the database settings.</source>
<translation type="unfinished"/> <translation>Здесь Вы можете отрегулировать настройки шифрования базы данных. Не беспокойтесь, вы сможете изменить их позже в настройках базы данных.</translation>
</message> </message>
<message> <message>
<source>Advanced Settings</source> <source>Advanced Settings</source>
@ -3685,7 +3664,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>Simple Settings</source> <source>Simple Settings</source>
<translation type="unfinished"/> <translation>Простые настройки</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3696,25 +3675,25 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>Here you can adjust the database encryption settings. Don&apos;t worry, you can change them later in the database settings.</source> <source>Here you can adjust the database encryption settings. Don&apos;t worry, you can change them later in the database settings.</source>
<translation type="unfinished"/> <translation>Здесь Вы можете отрегулировать настройки шифрования базы данных. Не беспокойтесь, вы сможете изменить их позже в настройках базы данных.</translation>
</message> </message>
</context> </context>
<context> <context>
<name>NewDatabaseWizardPageMasterKey</name> <name>NewDatabaseWizardPageMasterKey</name>
<message> <message>
<source>Database Master Key</source> <source>Database Master Key</source>
<translation type="unfinished"/> <translation>Мастер-ключ базы данных</translation>
</message> </message>
<message> <message>
<source>A master key known only to you protects your database.</source> <source>A master key known only to you protects your database.</source>
<translation type="unfinished"/> <translation>Мастер-ключ, известный только Вам, защищает Вашу базу данных.</translation>
</message> </message>
</context> </context>
<context> <context>
<name>NewDatabaseWizardPageMetaData</name> <name>NewDatabaseWizardPageMetaData</name>
<message> <message>
<source>General Database Information</source> <source>General Database Information</source>
<translation type="unfinished"/> <translation>Общая информация о базе данных</translation>
</message> </message>
<message> <message>
<source>Please fill in the display name and an optional description for your new database:</source> <source>Please fill in the display name and an optional description for your new database:</source>
@ -3828,7 +3807,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>Confirm password:</source> <source>Confirm password:</source>
<translation type="unfinished"/> <translation>Подтвердите пароль:</translation>
</message> </message>
<message> <message>
<source>Password</source> <source>Password</source>
@ -3838,10 +3817,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;Пароль - первичный метод защиты Вашей базы данных.&lt;/p&gt;&lt;p&gt;Хорошие пароли длинные и уникальные. KeePassXC может сгенерировать его для Вас.&lt;/p&gt;</translation> <translation>&lt;p&gt;Пароль - первичный метод защиты Вашей базы данных.&lt;/p&gt;&lt;p&gt;Хорошие пароли длинные и уникальные. KeePassXC может сгенерировать его для Вас.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Пароль не может быть пустым.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Пароли не совпадают.</translation> <translation>Пароли не совпадают.</translation>
@ -4020,7 +3995,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>Math</source> <source>Math</source>
<translation type="unfinished"/> <translation>Математические</translation>
</message> </message>
<message> <message>
<source>&lt;*+!?=</source> <source>&lt;*+!?=</source>
@ -4060,7 +4035,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>Add non-hex letters to &quot;do not include&quot; list</source> <source>Add non-hex letters to &quot;do not include&quot; list</source>
<translation type="unfinished"/> <translation>Добавить не шестнадцатеричные буквы к списку &quot;не включать&quot;</translation>
</message> </message>
<message> <message>
<source>Hex</source> <source>Hex</source>
@ -4072,7 +4047,7 @@ Expect some bugs and minor issues, this version is not meant for production use.
</message> </message>
<message> <message>
<source>Word Co&amp;unt:</source> <source>Word Co&amp;unt:</source>
<translation type="unfinished"/> <translation>Количество слов:</translation>
</message> </message>
<message> <message>
<source>Regenerate</source> <source>Regenerate</source>
@ -4447,7 +4422,7 @@ Available commands:
</message> </message>
<message> <message>
<source>Could not create entry with path %1.</source> <source>Could not create entry with path %1.</source>
<translation type="unfinished"/> <translation>Не удалось создать запись с путём %1.</translation>
</message> </message>
<message> <message>
<source>Enter password for new entry: </source> <source>Enter password for new entry: </source>
@ -4463,11 +4438,11 @@ Available commands:
</message> </message>
<message> <message>
<source>Copy the current TOTP to the clipboard.</source> <source>Copy the current TOTP to the clipboard.</source>
<translation type="unfinished"/> <translation>Скопировать текущий TOTP в буфер обмена.</translation>
</message> </message>
<message> <message>
<source>Invalid timeout value %1.</source> <source>Invalid timeout value %1.</source>
<translation type="unfinished"/> <translation>Неверное значение времени ожидания %1.</translation>
</message> </message>
<message> <message>
<source>Entry %1 not found.</source> <source>Entry %1 not found.</source>
@ -4475,7 +4450,7 @@ Available commands:
</message> </message>
<message> <message>
<source>Entry with path %1 has no TOTP set up.</source> <source>Entry with path %1 has no TOTP set up.</source>
<translation type="unfinished"/> <translation>У записи с путём %1 не настроен TOTP.</translation>
</message> </message>
<message> <message>
<source>Entry&apos;s current TOTP copied to the clipboard!</source> <source>Entry&apos;s current TOTP copied to the clipboard!</source>
@ -4487,7 +4462,7 @@ Available commands:
</message> </message>
<message numerus="yes"> <message numerus="yes">
<source>Clearing the clipboard in %1 second(s)...</source> <source>Clearing the clipboard in %1 second(s)...</source>
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation> <translation><numerusform>Очищение буфера обмена через %1 секунду...</numerusform><numerusform>Очищение буфера обмена через %1 секунды..</numerusform><numerusform>Очищение буфера обмена через %1 секунд...</numerusform><numerusform>Очищение буфера обмена через %1 секунд(у, ы)...</numerusform></translation>
</message> </message>
<message> <message>
<source>Clipboard cleared!</source> <source>Clipboard cleared!</source>
@ -4495,7 +4470,7 @@ Available commands:
</message> </message>
<message> <message>
<source>Silence password prompt and other secondary outputs.</source> <source>Silence password prompt and other secondary outputs.</source>
<translation type="unfinished"/> <translation>Заглушить запрос пароля и другие второстепенные выводы.</translation>
</message> </message>
<message> <message>
<source>count</source> <source>count</source>
@ -4512,7 +4487,7 @@ Available commands:
</message> </message>
<message> <message>
<source>Not changing any field for entry %1.</source> <source>Not changing any field for entry %1.</source>
<translation type="unfinished"/> <translation>Не меняются какие-либо поля для записи %1.</translation>
</message> </message>
<message> <message>
<source>Enter new password for entry: </source> <source>Enter new password for entry: </source>
@ -4536,11 +4511,11 @@ Available commands:
</message> </message>
<message> <message>
<source>Log10 %1</source> <source>Log10 %1</source>
<translation type="unfinished"/> <translation>Log10 %1</translation>
</message> </message>
<message> <message>
<source>Multi-word extra bits %1</source> <source>Multi-word extra bits %1</source>
<translation type="unfinished"/> <translation>Дополнительные биты мультислова %1</translation>
</message> </message>
<message> <message>
<source>Type: Bruteforce</source> <source>Type: Bruteforce</source>
@ -4624,7 +4599,7 @@ Available commands:
</message> </message>
<message> <message>
<source>*** Password length (%1) != sum of length of parts (%2) ***</source> <source>*** Password length (%1) != sum of length of parts (%2) ***</source>
<translation type="unfinished"/> <translation>*** Длина пароля (%1) != сумма длин частей (%2) ***</translation>
</message> </message>
<message> <message>
<source>Failed to load key file %1: %2</source> <source>Failed to load key file %1: %2</source>
@ -4701,7 +4676,8 @@ Available commands:
<message> <message>
<source>Error reading merge file: <source>Error reading merge file:
%1</source> %1</source>
<translation type="unfinished"/> <translation>Ошибка при чтении файла слияния:
%1</translation>
</message> </message>
<message> <message>
<source>Unable to save database to file : %1</source> <source>Unable to save database to file : %1</source>
@ -4729,7 +4705,7 @@ Available commands:
</message> </message>
<message> <message>
<source>No program defined for clipboard manipulation</source> <source>No program defined for clipboard manipulation</source>
<translation type="unfinished"/> <translation>Не задана программа для манипуляции буфером обмена</translation>
</message> </message>
<message> <message>
<source>Unable to start program %1</source> <source>Unable to start program %1</source>
@ -4815,11 +4791,11 @@ Available commands:
</message> </message>
<message> <message>
<source>Creating KeyFile %1 failed: %2</source> <source>Creating KeyFile %1 failed: %2</source>
<translation type="unfinished"/> <translation>Создание ключевого файла %1 не удалось: %2</translation>
</message> </message>
<message> <message>
<source>Loading KeyFile %1 failed: %2</source> <source>Loading KeyFile %1 failed: %2</source>
<translation type="unfinished"/> <translation>Загрузка ключевого файла %1 не удалась: %2</translation>
</message> </message>
<message> <message>
<source>Remove an entry from the database.</source> <source>Remove an entry from the database.</source>
@ -4877,6 +4853,10 @@ Available commands:
<source>Database password: </source> <source>Database password: </source>
<translation>Пароль базы данных: </translation> <translation>Пароль базы данных: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -4951,15 +4931,15 @@ Available commands:
<name>SearchHelpWidget</name> <name>SearchHelpWidget</name>
<message> <message>
<source>Search Help</source> <source>Search Help</source>
<translation type="unfinished"/> <translation>Искать в справке</translation>
</message> </message>
<message> <message>
<source>Search terms are as follows: [modifiers][field:][&quot;]term[&quot;]</source> <source>Search terms are as follows: [modifiers][field:][&quot;]term[&quot;]</source>
<translation type="unfinished"/> <translation>Поисковые выражения выглядят следующим образом: [модификаторы][поле:][&quot;]выражение[&quot;]</translation>
</message> </message>
<message> <message>
<source>Every search term must match (ie, logical AND)</source> <source>Every search term must match (ie, logical AND)</source>
<translation type="unfinished"/> <translation>Каждое поисковое выражение должно иметь соответствие (т.е. логическое И)</translation>
</message> </message>
<message> <message>
<source>Modifiers</source> <source>Modifiers</source>
@ -4967,15 +4947,15 @@ Available commands:
</message> </message>
<message> <message>
<source>exclude term from results</source> <source>exclude term from results</source>
<translation type="unfinished"/> <translation>исключить выражение из результатов</translation>
</message> </message>
<message> <message>
<source>match term exactly</source> <source>match term exactly</source>
<translation type="unfinished"/> <translation>соответствовать выражению в точности</translation>
</message> </message>
<message> <message>
<source>use regex in term</source> <source>use regex in term</source>
<translation type="unfinished"/> <translation>использовать регулярные выражения в поисковых</translation>
</message> </message>
<message> <message>
<source>Fields</source> <source>Fields</source>
@ -4983,19 +4963,19 @@ Available commands:
</message> </message>
<message> <message>
<source>Term Wildcards</source> <source>Term Wildcards</source>
<translation type="unfinished"/> <translation>Шаблоны для выражений</translation>
</message> </message>
<message> <message>
<source>match anything</source> <source>match anything</source>
<translation type="unfinished"/> <translation>соответствие всему</translation>
</message> </message>
<message> <message>
<source>match one</source> <source>match one</source>
<translation type="unfinished"/> <translation>соответствие одному</translation>
</message> </message>
<message> <message>
<source>logical OR</source> <source>logical OR</source>
<translation type="unfinished"/> <translation>логическое ИЛИ</translation>
</message> </message>
<message> <message>
<source>Examples</source> <source>Examples</source>
@ -5018,12 +4998,12 @@ Available commands:
</message> </message>
<message> <message>
<source>Search Help</source> <source>Search Help</source>
<translation type="unfinished"/> <translation>Искать в справке</translation>
</message> </message>
<message> <message>
<source>Search (%1)...</source> <source>Search (%1)...</source>
<comment>Search placeholder text, %1 is the keyboard shortcut</comment> <comment>Search placeholder text, %1 is the keyboard shortcut</comment>
<translation type="unfinished"/> <translation>Поиск (%1)...</translation>
</message> </message>
<message> <message>
<source>Case sensitive</source> <source>Case sensitive</source>
@ -5034,23 +5014,23 @@ Available commands:
<name>SettingsWidgetKeeShare</name> <name>SettingsWidgetKeeShare</name>
<message> <message>
<source>Active</source> <source>Active</source>
<translation type="unfinished"/> <translation>Активный</translation>
</message> </message>
<message> <message>
<source>Allow export</source> <source>Allow export</source>
<translation type="unfinished"/> <translation>Разрешить экспорт</translation>
</message> </message>
<message> <message>
<source>Allow import</source> <source>Allow import</source>
<translation type="unfinished"/> <translation>Разрешить импорт</translation>
</message> </message>
<message> <message>
<source>Own certificate</source> <source>Own certificate</source>
<translation type="unfinished"/> <translation>Собственный сертификат</translation>
</message> </message>
<message> <message>
<source>Fingerprint:</source> <source>Fingerprint:</source>
<translation type="unfinished"/> <translation>Отпечаток:</translation>
</message> </message>
<message> <message>
<source>Certificate:</source> <source>Certificate:</source>
@ -5058,7 +5038,7 @@ Available commands:
</message> </message>
<message> <message>
<source>Signer</source> <source>Signer</source>
<translation type="unfinished"/> <translation>Подписчик</translation>
</message> </message>
<message> <message>
<source>Key:</source> <source>Key:</source>
@ -5070,27 +5050,27 @@ Available commands:
</message> </message>
<message> <message>
<source>Import</source> <source>Import</source>
<translation>Импорт</translation> <translation>Импортировать</translation>
</message> </message>
<message> <message>
<source>Export</source> <source>Export</source>
<translation type="unfinished"/> <translation>Экспортировать</translation>
</message> </message>
<message> <message>
<source>Imported certificates</source> <source>Imported certificates</source>
<translation type="unfinished"/> <translation>Импортированные сертификаты</translation>
</message> </message>
<message> <message>
<source>Trust</source> <source>Trust</source>
<translation type="unfinished"/> <translation>Доверять</translation>
</message> </message>
<message> <message>
<source>Ask</source> <source>Ask</source>
<translation type="unfinished"/> <translation>Запросить</translation>
</message> </message>
<message> <message>
<source>Untrust</source> <source>Untrust</source>
<translation type="unfinished"/> <translation>Не доверять</translation>
</message> </message>
<message> <message>
<source>Remove</source> <source>Remove</source>
@ -5114,24 +5094,24 @@ Available commands:
</message> </message>
<message> <message>
<source>Trusted</source> <source>Trusted</source>
<translation type="unfinished"/> <translation>Надёжный</translation>
</message> </message>
<message> <message>
<source>Untrusted</source> <source>Untrusted</source>
<translation type="unfinished"/> <translation>Ненадёжный</translation>
</message> </message>
<message> <message>
<source>Unknown</source> <source>Unknown</source>
<translation type="unfinished"/> <translation>Неизвестен</translation>
</message> </message>
<message> <message>
<source>key.share</source> <source>key.share</source>
<comment>Filetype for KeeShare key</comment> <comment>Filetype for KeeShare key</comment>
<translation type="unfinished"/> <translation>key.share</translation>
</message> </message>
<message> <message>
<source>KeeShare key file</source> <source>KeeShare key file</source>
<translation type="unfinished"/> <translation>Ключевой файл KeeShare</translation>
</message> </message>
<message> <message>
<source>All files</source> <source>All files</source>
@ -5139,19 +5119,18 @@ Available commands:
</message> </message>
<message> <message>
<source>Select path</source> <source>Select path</source>
<translation type="unfinished"/> <translation>Выберите путь</translation>
</message> </message>
<message> <message>
<source>Exporting changed certificate</source> <source>Exporting changed certificate</source>
<translation type="unfinished"/> <translation>Экспортирование изменённого сертификата</translation>
</message> </message>
<message> <message>
<source>The exported certificate is not the same as the one in use. Do you want to export the current certificate?</source> <source>The exported certificate is not the same as the one in use. Do you want to export the current certificate?</source>
<translation type="unfinished"/> <translation>Экспортированный сертификат не такой же, как сертификат, который используется. Вы хотите экспортировать текущий сертификат?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5159,19 +5138,15 @@ Available commands:
<name>ShareObserver</name> <name>ShareObserver</name>
<message> <message>
<source>Import from container without signature</source> <source>Import from container without signature</source>
<translation type="unfinished"/> <translation>Импортировать из контейнера без подписи</translation>
</message> </message>
<message> <message>
<source>We cannot verify the source of the shared container because it is not signed. Do you really want to import from %1?</source> <source>We cannot verify the source of the shared container because it is not signed. Do you really want to import from %1?</source>
<translation type="unfinished"/> <translation>Мы не можем проверить источник коллективного контейнера, потому что он не подписан. Вы действительно хотите импортировать из %1?</translation>
</message> </message>
<message> <message>
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation>Импортировать из контейнера с сертификатом</translation>
</message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
@ -5191,11 +5166,11 @@ Available commands:
</message> </message>
<message> <message>
<source>Import from %1 failed (%2)</source> <source>Import from %1 failed (%2)</source>
<translation type="unfinished"/> <translation>Импорт из %1 не удался (%2)</translation>
</message> </message>
<message> <message>
<source>Import from %1 successful (%2)</source> <source>Import from %1 successful (%2)</source>
<translation type="unfinished"/> <translation>Импорт из %1 успешен (%2)</translation>
</message> </message>
<message> <message>
<source>Imported from %1</source> <source>Imported from %1</source>
@ -5249,14 +5224,6 @@ Available commands:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Не удалось записать Экспорт контейнера (%1)</translation> <translation>Не удалось записать Экспорт контейнера (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Не удалось вставить подпись (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Не удалось встроить базу данных (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>Перезапись неподписанного общего ресурса не поддерживается - экспорт запрещен</translation> <translation>Перезапись неподписанного общего ресурса не поддерживается - экспорт запрещен</translation>
@ -5281,6 +5248,34 @@ Available commands:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Экспорт в %1</translation> <translation>Экспорт в %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>Вы хотите довериться %1 с отпечатком %2 из %3? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>
@ -5467,7 +5462,7 @@ Available commands:
</message> </message>
<message> <message>
<source>&lt;p&gt;If you own a &lt;a href=&quot;https://www.yubico.com/&quot;&gt;YubiKey&lt;/a&gt;, you can use it for additional security.&lt;/p&gt;&lt;p&gt;The YubiKey requires one of its slots to be programmed as &lt;a href=&quot;https://www.yubico.com/products/services-software/personalization-tools/challenge-response/&quot;&gt;HMAC-SHA1 Challenge-Response&lt;/a&gt;.&lt;/p&gt;</source> <source>&lt;p&gt;If you own a &lt;a href=&quot;https://www.yubico.com/&quot;&gt;YubiKey&lt;/a&gt;, you can use it for additional security.&lt;/p&gt;&lt;p&gt;The YubiKey requires one of its slots to be programmed as &lt;a href=&quot;https://www.yubico.com/products/services-software/personalization-tools/challenge-response/&quot;&gt;HMAC-SHA1 Challenge-Response&lt;/a&gt;.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation>&lt;p&gt;Если Вы владееете &lt;a href=&quot;https://www.yubico.com/&quot;&gt;YubiKey&lt;/a&gt;, Вы можете использовать его для дополнительной безопасности.&lt;/p&gt;&lt;p&gt;YubiKey требует, чтобы один из его слотов был запрограммирован как &lt;a href=&quot;https://www.yubico.com/products/services-software/personalization-tools/challenge-response/&quot;&gt; вызов-ответ HMAC-SHA1&lt;/a&gt;.&lt;/p&gt;</translation>
</message> </message>
<message> <message>
<source>No YubiKey detected, please ensure it&apos;s plugged in.</source> <source>No YubiKey detected, please ensure it&apos;s plugged in.</source>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Kopírovať do schránky</translation> <translation>Kopírovať do schránky</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Revízia %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Distribúcia %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Knižnice:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Operačný systém: %1
Architektúra CPU: %2
Jadro: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Zapnuté rozšírenia:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Správcovia projektu:</translation> <translation>Správcovia projektu:</translation>
@ -69,50 +45,6 @@ Jadro: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Špeciálne poďakovanie od tímu KeePassXC patrí debfx za vytvorenie pôvodného KeePassX.</translation> <translation>Špeciálne poďakovanie od tímu KeePassXC patrí debfx za vytvorenie pôvodného KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Verzia %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Typ zostavenia: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Automatické vypĺňanie</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Integrácia prehliadača</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>Agent SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation type="unfinished"/>
</message>
<message>
<source>None</source>
<translation>Žiadny</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (podpísané a nepodpísané zdieľanie)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (len podpísané zdieľanie)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (len nepodpísané zdieľanie)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Prosím, vyberte správnu databázu na uloženie prihlasovacích údajov.</trans
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Zvoliť vlastné umiestnenie proxy</translation> <translation>Zvoliť vlastné umiestnenie proxy</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Prepáčte, ale KeePassXC-Prehliadač nie je v súčasnosti podporovaný pre vydania Snap.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>Aby fungovala integrácia do prehliadača, je potrebný KeePassXC-Browser. &lt;br /&gt;Stiahnuť pre %1 a %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Browser</translation> <translation>&amp;Tor Browser</translation>
@ -685,6 +609,18 @@ Prosím, vyberte správnu databázu na uloženie prihlasovacích údajov.</trans
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Nepýtať povolenie na HTTP &amp;Basic Auth</translation> <translation>Nepýtať povolenie na HTTP &amp;Basic Auth</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -758,9 +694,19 @@ Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -922,6 +868,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1667,6 +1617,10 @@ Vypnúť bezpečné ukladanie a skúsiť znova?</translation>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2104,6 +2058,22 @@ Vypnúť bezpečné ukladanie a skúsiť znova?</translation>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Clear</source>
<translation>Vymazať</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2575,14 +2545,6 @@ Môže to spôsobiť nefunkčnosť dotknutých zásuvných modulov.</translation
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation type="unfinished"/>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3176,6 +3138,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3821,10 +3799,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -4858,6 +4832,10 @@ Dostupné príkazy:
<source>Database password: </source> <source>Database password: </source>
<translation>Heslo databázy:</translation> <translation>Heslo databázy:</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5131,8 +5109,7 @@ Dostupné príkazy:
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5150,10 +5127,6 @@ Dostupné príkazy:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5230,14 +5203,6 @@ Dostupné príkazy:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5262,6 +5227,34 @@ Dostupné príkazy:
<source>Export to %1</source> <source>Export to %1</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Kopiera till urklipp</translation> <translation>Kopiera till urklipp</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Ändring: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Utdelning: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Arkiv:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>Operativsystem: %1
Processorarkitektur: %2
Kärna: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Aktiverade tillägg:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Projekt Ansvariga:</translation> <translation>Projekt Ansvariga:</translation>
@ -69,50 +45,6 @@ Kärna: %3 %4</translation>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Ett särskilt tack från teamet bakom KeePassXC riktas till debfx som skapade den ursprungliga KeePassX.</translation> <translation>Ett särskilt tack från teamet bakom KeePassXC riktas till debfx som skapade den ursprungliga KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Version %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Build Type: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Autoskriv</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Webbläsarintegration</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH Agent</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Ingen</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (signerad och osignerad delning)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (endast signerad delning)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (endast osignerad delning)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -655,14 +587,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Välj en proxy</translation> <translation>Välj en proxy</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Vi ber om ursäkt, KeePassXC-Browser stödjer inte Snap-releaser för tillfället.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Browser</translation> <translation>&amp;Tor Browser</translation>
@ -684,6 +608,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -753,9 +689,19 @@ Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -918,6 +864,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1654,6 +1604,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2091,6 +2045,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Välj fil för import/export</translation> <translation>Välj fil för import/export</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Rensa</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2560,14 +2530,6 @@ This may cause the affected plugins to malfunction.</source>
<translation>[tom]</translation> <translation>[tom]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3157,6 +3119,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3799,10 +3777,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -4832,6 +4806,10 @@ Tillgängliga kommandon:
<source>Database password: </source> <source>Database password: </source>
<translation>Databaslösenord:</translation> <translation>Databaslösenord:</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5105,8 +5083,7 @@ Tillgängliga kommandon:
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5124,10 +5101,6 @@ Tillgängliga kommandon:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Inte denna gång</translation> <translation>Inte denna gång</translation>
@ -5204,14 +5177,6 @@ Tillgängliga kommandon:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5236,6 +5201,34 @@ Tillgängliga kommandon:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Exportera till %1</translation> <translation>Exportera till %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Panoya kopyala</translation> <translation>Panoya kopyala</translation>
</message> </message>
<message>
<source>Revision: %1</source>
<translation>Düzeltme: %1</translation>
</message>
<message>
<source>Distribution: %1</source>
<translation>Dağıtım: %1</translation>
</message>
<message>
<source>Libraries:</source>
<translation>Kütüphaneler:</translation>
</message>
<message>
<source>Operating system: %1
CPU architecture: %2
Kernel: %3 %4</source>
<translation>İşletim sistemi: %1
MİB mimarisi: %2
Çekirdek: %3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation>Etkin eklentiler:</translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Proje Sahipleri:</translation> <translation>Proje Sahipleri:</translation>
@ -69,50 +45,6 @@ MİB mimarisi: %2
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>KeePassXC ekibinden özel teşekkürler, özgün KeePassX&apos;i yaptığı için debfx&apos;e gider.</translation> <translation>KeePassXC ekibinden özel teşekkürler, özgün KeePassX&apos;i yaptığı için debfx&apos;e gider.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Sürüm %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Yapı: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Oto-Yazım</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Tarayıcı Bütünleşmesi</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH Aracısı</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Yok</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (imzalı ve imzasız paylaşım)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (sadece imzalanmış paylaşım)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (sadece imzasız paylaşım)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Lütfen kimlik bilgilerini kaydetmek için doğru veritabanını seç.</translat
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Özel proxy konumunu seçin</translation> <translation>Özel proxy konumunu seçin</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Üzgünüz, ancak şu anda Snap yayınları için KeePassXC-Tarayıcı desteklenmiyor.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Tarayıcı tarayıcı entegrasyonunun çalışması için gereklidir. &lt;br /&gt; Şunları indirin %1 ve %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor Tarayıcı</translation> <translation>&amp;Tor Tarayıcı</translation>
@ -685,6 +609,18 @@ Lütfen kimlik bilgilerini kaydetmek için doğru veritabanını seç.</translat
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>HTTP ve Temel Kimlik Doğrulama için izin isteme</translation> <translation>HTTP ve Temel Kimlik Doğrulama için izin isteme</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,12 +695,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC: Eski tarayıcı entegrasyon ayarları tespit edildi</translation> <translation>KeePassXC: Eski tarayıcı entegrasyon ayarları tespit edildi</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Eski tarayıcı bütünleşmesi ayarları tespit edildi. <message>
Ayarları en son standarda yükseltmek ister misiniz? <source>A request for creating a new group &quot;%1&quot; has been received.
Tarayıcı eklentisiyle uyumluluğu korumak için bu gereklidir.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -926,6 +870,10 @@ Tarayıcı eklentisiyle uyumluluğu korumak için bu gereklidir.</translation>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Dosya salt okunur kipinde ıldığı için yazılamıyor.</translation> <translation>Dosya salt okunur kipinde ıldığı için yazılamıyor.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1681,6 +1629,10 @@ Güvenli kaydetme devre dışı bırakılsın ve tekrar denensin mi?</translatio
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Veritabanı birleştirme işlemi tarafından değiştirilmedi.</translation> <translation>Veritabanı birleştirme işlemi tarafından değiştirilmedi.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2118,6 +2070,22 @@ Güvenli kaydetme devre dışı bırakılsın ve tekrar denensin mi?</translatio
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Aktarma dosyasını seç içe/dışa</translation> <translation>Aktarma dosyasını seç içe/dışa</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Temizle</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2592,14 +2560,6 @@ Bu etkilenen eklentilerin bozulmasına neden olabilir.</translation>
<translation>[boş]</translation> <translation>[boş]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3195,6 +3155,22 @@ Satır %2, sütun %3</translation>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Şununla eşitle</translation> <translation>Şununla eşitle</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3845,10 +3821,6 @@ Bazı hatalar ve küçük sorunlar olabilir, bu sürüm şu an dağıtımda değ
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;Parola, veritabanınızın güvenliğini sağlamak için birincil yöntemdir.&lt;/p&gt;&lt;p&gt;Güçlü parolalar uzun ve benzersizdir. KeePassXC sizin için bir tane üretebilir.&lt;/p&gt;</translation> <translation>&lt;p&gt;Parola, veritabanınızın güvenliğini sağlamak için birincil yöntemdir.&lt;/p&gt;&lt;p&gt;Güçlü parolalar uzun ve benzersizdir. KeePassXC sizin için bir tane üretebilir.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Parola boş olamaz.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Parolalar uyuşmuyor.</translation> <translation>Parolalar uyuşmuyor.</translation>
@ -4885,6 +4857,10 @@ Kullanılabilir komutlar:
<source>Database password: </source> <source>Database password: </source>
<translation>Veritabanı parolası:</translation> <translation>Veritabanı parolası:</translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5158,9 +5134,8 @@ Kullanılabilir komutlar:
<translation>Aktarılan sertifika kullanılan sertifika ile aynı değil. Mevcut sertifikayı vermek aktarmak musunuz?</translation> <translation>Aktarılan sertifika kullanılan sertifika ile aynı değil. Mevcut sertifikayı vermek aktarmak musunuz?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5177,10 +5152,6 @@ Kullanılabilir komutlar:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Sertifikayı kapsayıcıdan içe aktar</translation> <translation>Sertifikayı kapsayıcıdan içe aktar</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>%3&apos; ten %2 parmak iziyle %1 e güveniyor musunuz?</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Bu sefer değil</translation> <translation>Bu sefer değil</translation>
@ -5257,14 +5228,6 @@ Kullanılabilir komutlar:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Dışa aktarma kapsayıcısı (%1) yazılamadı</translation> <translation>Dışa aktarma kapsayıcısı (%1) yazılamadı</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>İmza gömülemedi (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Veritabanı gömülemedi (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>İmzalanmamış paylaşım kapsayıcısının üzerine yazma desteklenmiyor -dışa aktarma engellendi</translation> <translation>İmzalanmamış paylaşım kapsayıcısının üzerine yazma desteklenmiyor -dışa aktarma engellendi</translation>
@ -5289,6 +5252,34 @@ Kullanılabilir komutlar:
<source>Export to %1</source> <source>Export to %1</source>
<translation>%1&apos;e aktar</translation> <translation>%1&apos;e aktar</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation>%3&apos;ten %2 parmak izi ile %1&apos;e güvenmek ister misiniz? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>Скопіювати в кишеню</translation> <translation>Скопіювати в кишеню</translation>
</message> </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> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation>Супровідники проекту:</translation> <translation>Супровідники проекту:</translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</source>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>Команда KeePassXC щиро дякує debfx за створення первісної версії KeePassX.</translation> <translation>Команда KeePassXC щиро дякує debfx за створення первісної версії KeePassX.</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation>Версія %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>Тип збірки: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation>Автозаповнення</translation>
</message>
<message>
<source>Browser Integration</source>
<translation>Сполучення з переглядачем</translation>
</message>
<message>
<source>SSH Agent</source>
<translation>Посередник SSH</translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation>Відсутні</translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare (підписане і непідписане спільне використання)</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare (тільки підписане спільне використання)</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare (тільки непідписане спільне використання)</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation>Вибрати власне розташування посередника</translation> <translation>Вибрати власне розташування посередника</translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>Вибачте, але KeePassXC-Переглядач поки що не працює у версіях Snap.</translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>Для сполучення з переглядачем необхідний KeePassXC-Browser. &lt;br /&gt;Завантажте його для %1 та %2.</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>Переглядач &amp;Tor</translation> <translation>Переглядач &amp;Tor</translation>
@ -685,6 +609,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation>Не запитувати дозвіл для HTTP &amp;Basic Auth</translation> <translation>Не запитувати дозвіл для HTTP &amp;Basic Auth</translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,12 +695,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC: знайдено застаріле налаштування сполучення з переглядачами</translation> <translation>KeePassXC: знайдено застаріле налаштування сполучення з переглядачами</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation>Знайдено застаріле налаштування сполучення з переглядачами. <message>
Бажаєте оновити налаштування згідно з найновішими стандартами? <source>A request for creating a new group &quot;%1&quot; has been received.
Це необхідно для підтримання сумісності з модулем переглядача.</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -926,6 +870,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation>Неможливо записати файл, оскільки він відкритий у режимі читання.</translation> <translation>Неможливо записати файл, оскільки він відкритий у режимі читання.</translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1681,6 +1629,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation>Об&apos;єднання не змінило сховище.</translation> <translation>Об&apos;єднання не змінило сховище.</translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2118,6 +2070,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation>Вибрати файл імпорту/експорту</translation> <translation>Вибрати файл імпорту/експорту</translation>
</message> </message>
<message>
<source>Clear</source>
<translation>Очистити</translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2593,14 +2561,6 @@ This may cause the affected plugins to malfunction.</source>
<translation>[порожня]</translation> <translation>[порожня]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3195,6 +3155,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation>Узгодити з</translation> <translation>Узгодити з</translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3844,10 +3820,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;Пароль є основним засобом для убезпечення Вашого сховища.&lt;/p&gt;&lt;p&gt;Найкращі паролі мають бути довгими та унікальними. KeePassXC може створити такий для Вас.&lt;/p&gt;</translation> <translation>&lt;p&gt;Пароль є основним засобом для убезпечення Вашого сховища.&lt;/p&gt;&lt;p&gt;Найкращі паролі мають бути довгими та унікальними. KeePassXC може створити такий для Вас.&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation>Пароль не може бути пустим.</translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation>Паролі не збігаються.</translation> <translation>Паролі не збігаються.</translation>
@ -4884,6 +4856,10 @@ Available commands:
<source>Database password: </source> <source>Database password: </source>
<translation>Пароль сховища: </translation> <translation>Пароль сховища: </translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5157,9 +5133,8 @@ Available commands:
<translation>Експортований сертифікат не відповідає чинному сертифікатові. Бажаєте експортувати чинний сертифікат?</translation> <translation>Експортований сертифікат не відповідає чинному сертифікатові. Бажаєте експортувати чинний сертифікат?</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5176,10 +5151,6 @@ Available commands:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation>Імпортування з оболонки, що має сертифікат</translation> <translation>Імпортування з оболонки, що має сертифікат</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation>Довірити %1, що має відбиток %2 з %3</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation>Не зараз</translation> <translation>Не зараз</translation>
@ -5256,14 +5227,6 @@ Available commands:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation>Неможливо записати експортну оболонку (%1)</translation> <translation>Неможливо записати експортну оболонку (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation>Неможливо вкласти підпис (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation>Неможливо вкласти сховище (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>Перезаписування непідписаної спільної оболонки не підтримане експортування відвернуте</translation> <translation>Перезаписування непідписаної спільної оболонки не підтримане експортування відвернуте</translation>
@ -5288,6 +5251,34 @@ Available commands:
<source>Export to %1</source> <source>Export to %1</source>
<translation>Експортування %1</translation> <translation>Експортування %1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation></translation> <translation></translation>
</message> </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
CPU %2
%3 %4</translation>
</message>
<message>
<source>Enabled extensions:</source>
<translation></translation>
</message>
<message> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation></translation> <translation></translation>
@ -69,50 +45,6 @@ CPU 架构:%2
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>KeePassXC debfx KeePassX</translation> <translation>KeePassXC debfx KeePassX</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation> %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation> %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation></translation>
</message>
<message>
<source>Browser Integration</source>
<translation></translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH </translation>
</message>
<message>
<source>YubiKey</source>
<translation>YubiKey</translation>
</message>
<message>
<source>TouchID</source>
<translation>TouchID</translation>
</message>
<message>
<source>None</source>
<translation></translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation>KeeShare ()</translation>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation>KeeShare ()</translation>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation>KeeShare ()</translation>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -656,14 +588,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation>KeePassXC-Browser Snap </translation>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation>KeePassXC-Browser才能工作&lt;br /&gt; %1 %2</translation>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation>&amp;Tor浏览器</translation> <translation>&amp;Tor浏览器</translation>
@ -685,6 +609,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation> http </translation> <translation> http </translation>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -759,12 +695,20 @@ Moved %2 keys to custom data.</source>
<translation>KeePassXC</translation> <translation>KeePassXC</translation>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<translation> <message>
<source>A request for creating a new group &quot;%1&quot; has been received.
</translation> Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/>
</message> </message>
</context> </context>
<context> <context>
@ -926,6 +870,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1680,6 +1628,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2117,6 +2069,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Clear</source>
<translation></translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2588,14 +2556,6 @@ This may cause the affected plugins to malfunction.</source>
<translation>[]</translation> <translation>[]</translation>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3189,6 +3149,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3839,10 +3815,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;/p&gt;&lt;p&gt; KeePassXC&lt;/p&gt;</translation> <translation>&lt;p&gt;&lt;/p&gt;&lt;p&gt; KeePassXC&lt;/p&gt;</translation>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation></translation>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation></translation> <translation></translation>
@ -4879,6 +4851,10 @@ Available commands:
<source>Database password: </source> <source>Database password: </source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5152,9 +5128,8 @@ Available commands:
<translation>使</translation> <translation>使</translation>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment> <translation type="unfinished"/>
<translation>%1.%2</translation>
</message> </message>
</context> </context>
<context> <context>
@ -5171,10 +5146,6 @@ Available commands:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation> %1 , %3%2</translation>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation></translation> <translation></translation>
@ -5251,14 +5222,6 @@ Available commands:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation> (%1)</translation> <translation> (%1)</translation>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation> (%1)</translation>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation> (%1)</translation>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation>-</translation> <translation>-</translation>
@ -5283,6 +5246,34 @@ Available commands:
<source>Export to %1</source> <source>Export to %1</source>
<translation>%1</translation> <translation>%1</translation>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation> %1, %3 %2 ? {1 ?} {2 ?}</translation>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -37,30 +37,6 @@
<source>Copy to clipboard</source> <source>Copy to clipboard</source>
<translation>簿</translation> <translation>簿</translation>
</message> </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> <message>
<source>Project Maintainers:</source> <source>Project Maintainers:</source>
<translation></translation> <translation></translation>
@ -69,50 +45,6 @@ Kernel: %3 %4</source>
<source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source> <source>Special thanks from the KeePassXC team go to debfx for creating the original KeePassX.</source>
<translation>KeePassXC debfx KeePassX</translation> <translation>KeePassXC debfx KeePassX</translation>
</message> </message>
<message>
<source>Version %1</source>
<translation> %1</translation>
</message>
<message>
<source>Build Type: %1</source>
<translation>: %1</translation>
</message>
<message>
<source>Auto-Type</source>
<translation></translation>
</message>
<message>
<source>Browser Integration</source>
<translation></translation>
</message>
<message>
<source>SSH Agent</source>
<translation>SSH </translation>
</message>
<message>
<source>YubiKey</source>
<translation type="unfinished"/>
</message>
<message>
<source>TouchID</source>
<translation type="unfinished"/>
</message>
<message>
<source>None</source>
<translation></translation>
</message>
<message>
<source>KeeShare (signed and unsigned sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only signed sharing)</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeeShare (only unsigned sharing)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>AgentSettingsWidget</name> <name>AgentSettingsWidget</name>
@ -655,14 +587,6 @@ Please select the correct database for saving credentials.</source>
<source>Select custom proxy location</source> <source>Select custom proxy location</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>We&apos;re sorry, but KeePassXC-Browser is not supported for Snap releases at the moment.</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>&amp;Tor Browser</source> <source>&amp;Tor Browser</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -684,6 +608,18 @@ Please select the correct database for saving credentials.</source>
<extracomment>An extra HTTP Basic Auth setting</extracomment> <extracomment>An extra HTTP Basic Auth setting</extracomment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Due to Snap sandboxing, you must run a script to enable browser integration.&lt;br /&gt;You can obtain this script from %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Please see special instructions for browser extension use below</source>
<translation type="unfinished"/>
</message>
<message>
<source>KeePassXC-Browser is needed for the browser integration to work. &lt;br /&gt;Download it for %1 and %2. %3</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>BrowserService</name> <name>BrowserService</name>
@ -757,9 +693,19 @@ Moved %2 keys to custom data.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>Legacy browser integration settings have been detected. <source>KeePassXC: Create a new group</source>
Do you want to upgrade the settings to the latest standard? <translation type="unfinished"/>
This is necessary to maintain compatibility with the browser plugin.</source> </message>
<message>
<source>A request for creating a new group &quot;%1&quot; has been received.
Do you want to create this group?
</source>
<translation type="unfinished"/>
</message>
<message>
<source>Your KeePassXC-Browser settings need to be moved into the database settings.
This is necessary to maintain your current browser connections.
Would you like to migrate your existing settings now?</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -921,6 +867,10 @@ This is necessary to maintain compatibility with the browser plugin.</source>
<source>File cannot be written as it is opened in read-only mode.</source> <source>File cannot be written as it is opened in read-only mode.</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Key not transformed. This is a bug, please report it to the developers!</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>DatabaseOpenDialog</name> <name>DatabaseOpenDialog</name>
@ -1662,6 +1612,10 @@ Disable safe saves and try again?</source>
<source>Database was not modified by merge operation.</source> <source>Database was not modified by merge operation.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Shared group...</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditEntryWidget</name> <name>EditEntryWidget</name>
@ -2099,6 +2053,22 @@ Disable safe saves and try again?</source>
<source>Select import/export file</source> <source>Select import/export file</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Clear</source>
<translation></translation>
</message>
<message>
<source>The export container %1 is already referenced.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The import container %1 is already imported.</source>
<translation type="unfinished"/>
</message>
<message>
<source>The container %1 imported and export by different groups.</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>EditGroupWidgetMain</name> <name>EditGroupWidgetMain</name>
@ -2569,14 +2539,6 @@ This may cause the affected plugins to malfunction.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
<context>
<name>GroupModel</name>
<message>
<source>%1</source>
<comment>Template for name without annotation</comment>
<translation>%1</translation>
</message>
</context>
<context> <context>
<name>HostInstaller</name> <name>HostInstaller</name>
<message> <message>
@ -3169,6 +3131,22 @@ Line %2, column %3</source>
<source>Synchronize with</source> <source>Synchronize with</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Disabled share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Import from share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Export to share %1</source>
<translation type="unfinished"/>
</message>
<message>
<source>Synchronize with share %1</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>KeyComponentWidget</name> <name>KeyComponentWidget</name>
@ -3813,10 +3791,6 @@ Expect some bugs and minor issues, this version is not meant for production use.
<source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source> <source>&lt;p&gt;A password is the primary method for securing your database.&lt;/p&gt;&lt;p&gt;Good passwords are long and unique. KeePassXC can generate one for you.&lt;/p&gt;</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Password cannot be empty.</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Passwords do not match.</source> <source>Passwords do not match.</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -4848,6 +4822,10 @@ Available commands:
<source>Database password: </source> <source>Database password: </source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Cannot create new group</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>QtIOCompressor</name> <name>QtIOCompressor</name>
@ -5121,8 +5099,7 @@ Available commands:
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message> <message>
<source>%1.%2</source> <source>Signer:</source>
<comment>Template for KeeShare key file</comment>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
</context> </context>
@ -5140,10 +5117,6 @@ Available commands:
<source>Import from container with certificate</source> <source>Import from container with certificate</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Not this time</source> <source>Not this time</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5220,14 +5193,6 @@ Available commands:
<source>Could not write export container (%1)</source> <source>Could not write export container (%1)</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Could not embed signature (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database (%1)</source>
<translation type="unfinished"/>
</message>
<message> <message>
<source>Overwriting unsigned share container is not supported - export prevented</source> <source>Overwriting unsigned share container is not supported - export prevented</source>
<translation type="unfinished"/> <translation type="unfinished"/>
@ -5252,6 +5217,34 @@ Available commands:
<source>Export to %1</source> <source>Export to %1</source>
<translation type="unfinished"/> <translation type="unfinished"/>
</message> </message>
<message>
<source>Do you want to trust %1 with the fingerprint of %2 from %3?</source>
<translation type="unfinished"/>
</message>
<message>
<source>Multiple import source path to %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Conflicting export target path %1 in %2</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed signature: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not open file to write (%1)</source>
<translation type="unfinished"/>
</message>
<message>
<source>Could not embed database: Could not write file (%1)</source>
<translation type="unfinished"/>
</message>
</context> </context>
<context> <context>
<name>TotpDialog</name> <name>TotpDialog</name>

View file

@ -31,9 +31,10 @@ parts:
- -DCMAKE_BUILD_TYPE=Release - -DCMAKE_BUILD_TYPE=Release
- -DCMAKE_INSTALL_PREFIX=/usr - -DCMAKE_INSTALL_PREFIX=/usr
- -DKEEPASSXC_DIST_TYPE=Snap - -DKEEPASSXC_DIST_TYPE=Snap
- -DKEEPASSXC_BUILD_TYPE=PreRelease - -DKEEPASSXC_BUILD_TYPE=Release
- -DWITH_TESTS=OFF - -DWITH_TESTS=OFF
- -DWITH_XC_ALL=ON - -DWITH_XC_ALL=ON
- -DWITH_XC_KEESHARE_SECURE=ON
build-packages: build-packages:
- g++ - g++
- libgcrypt20-dev - libgcrypt20-dev
@ -50,6 +51,7 @@ parts:
- libsodium-dev - libsodium-dev
- libargon2-0-dev - libargon2-0-dev
- libqrencode-dev - libqrencode-dev
- libquazip5-dev
stage-packages: stage-packages:
- dbus - dbus
- qttranslations5-l10n # common translations - qttranslations5-l10n # common translations
@ -60,6 +62,9 @@ parts:
- libxtst6 - libxtst6
- libqt5x11extras5 - libqt5x11extras5
- libqt5svg5 - libqt5svg5
- libqrencode3
- libqt5concurrent5
- libquazip5-1
- libusb-1.0-0 - libusb-1.0-0
- qtwayland5 - qtwayland5
override-build: | override-build: |
@ -71,3 +76,24 @@ parts:
- -opt - -opt
after: [desktop-qt5] after: [desktop-qt5]
desktop-qt5:
source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
source-subdir: qt
plugin: make
make-parameters: ["FLAVOR=qt5"]
build-packages:
- qtbase5-dev
- dpkg-dev
stage-packages:
- libxkbcommon0
- ttf-ubuntu-font-family
- dmz-cursor-theme
- light-themes
- adwaita-icon-theme
- gnome-themes-standard
- shared-mime-info
- libqt5gui5
- libgdk-pixbuf2.0-0
- libqt5svg5 # for loading icon themes which are svg
- try: [appmenu-qt5] # not available on core18
- locales-all

View file

@ -21,11 +21,11 @@
#include "NativeMessagingBase.h" #include "NativeMessagingBase.h"
#include "config-keepassx.h" #include "config-keepassx.h"
#include <QJsonDocument>
#include <QJsonParseError>
#include <sodium.h> #include <sodium.h>
#include <sodium/crypto_box.h> #include <sodium/crypto_box.h>
#include <sodium/randombytes.h> #include <sodium/randombytes.h>
#include <QJsonDocument>
#include <QJsonParseError>
BrowserAction::BrowserAction(BrowserService& browserService) BrowserAction::BrowserAction(BrowserService& browserService)
: m_mutex(QMutex::Recursive) : m_mutex(QMutex::Recursive)
@ -88,6 +88,8 @@ QJsonObject BrowserAction::handleAction(const QJsonObject& json)
return handleLockDatabase(json, action); return handleLockDatabase(json, action);
} else if (action.compare("get-database-groups", Qt::CaseSensitive) == 0) { } else if (action.compare("get-database-groups", Qt::CaseSensitive) == 0) {
return handleGetDatabaseGroups(json, action); return handleGetDatabaseGroups(json, action);
} else if (action.compare("create-new-group", Qt::CaseSensitive) == 0) {
return handleCreateNewGroup(json, action);
} }
// Action was not recognized // Action was not recognized
@ -407,6 +409,42 @@ QJsonObject BrowserAction::handleGetDatabaseGroups(const QJsonObject& json, cons
return buildResponse(action, message, newNonce); return buildResponse(action, message, newNonce);
} }
QJsonObject BrowserAction::handleCreateNewGroup(const QJsonObject& json, const QString& action)
{
const QString hash = getDatabaseHash();
const QString nonce = json.value("nonce").toString();
const QString encrypted = json.value("message").toString();
QMutexLocker locker(&m_mutex);
if (!m_associated) {
return getErrorReply(action, ERROR_KEEPASS_ASSOCIATION_FAILED);
}
const QJsonObject decrypted = decryptMessage(encrypted, nonce);
if (decrypted.isEmpty()) {
return getErrorReply(action, ERROR_KEEPASS_CANNOT_DECRYPT_MESSAGE);
}
QString command = decrypted.value("action").toString();
if (command.isEmpty() || command.compare("create-new-group", Qt::CaseSensitive) != 0) {
return getErrorReply(action, ERROR_KEEPASS_INCORRECT_ACTION);
}
QString group = decrypted.value("groupName").toString();
const QJsonObject newGroup = m_browserService.createNewGroup(group);
if (newGroup.isEmpty() || newGroup["name"].toString().isEmpty() || newGroup["uuid"].toString().isEmpty()) {
return getErrorReply(action, ERROR_KEEPASS_CANNOT_CREATE_NEW_GROUP);
}
const QString newNonce = incrementNonce(nonce);
QJsonObject message = buildMessage(newNonce);
message["name"] = newGroup["name"];
message["uuid"] = newGroup["uuid"];
return buildResponse(action, message, newNonce);
}
QJsonObject BrowserAction::getErrorReply(const QString& action, const int errorCode) const QJsonObject BrowserAction::getErrorReply(const QString& action, const int errorCode) const
{ {
QJsonObject response; QJsonObject response;
@ -468,6 +506,8 @@ QString BrowserAction::getErrorMessage(const int errorCode) const
return QObject::tr("No logins found"); return QObject::tr("No logins found");
case ERROR_KEEPASS_NO_GROUPS_FOUND: case ERROR_KEEPASS_NO_GROUPS_FOUND:
return QObject::tr("No groups found"); return QObject::tr("No groups found");
case ERROR_KEEPASS_CANNOT_CREATE_NEW_GROUP:
return QObject::tr("Cannot create new group");
default: default:
return QObject::tr("Unknown error"); return QObject::tr("Unknown error");
} }

View file

@ -46,7 +46,8 @@ class BrowserAction : public QObject
ERROR_KEEPASS_EMPTY_MESSAGE_RECEIVED = 13, ERROR_KEEPASS_EMPTY_MESSAGE_RECEIVED = 13,
ERROR_KEEPASS_NO_URL_PROVIDED = 14, ERROR_KEEPASS_NO_URL_PROVIDED = 14,
ERROR_KEEPASS_NO_LOGINS_FOUND = 15, ERROR_KEEPASS_NO_LOGINS_FOUND = 15,
ERROR_KEEPASS_NO_GROUPS_FOUND = 16 ERROR_KEEPASS_NO_GROUPS_FOUND = 16,
ERROR_KEEPASS_CANNOT_CREATE_NEW_GROUP = 17
}; };
public: public:
@ -66,6 +67,7 @@ private:
QJsonObject handleSetLogin(const QJsonObject& json, const QString& action); QJsonObject handleSetLogin(const QJsonObject& json, const QString& action);
QJsonObject handleLockDatabase(const QJsonObject& json, const QString& action); QJsonObject handleLockDatabase(const QJsonObject& json, const QString& action);
QJsonObject handleGetDatabaseGroups(const QJsonObject& json, const QString& action); QJsonObject handleGetDatabaseGroups(const QJsonObject& json, const QString& action);
QJsonObject handleCreateNewGroup(const QJsonObject& json, const QString& action);
QJsonObject buildMessage(const QString& nonce) const; QJsonObject buildMessage(const QString& nonce) const;
QJsonObject buildResponse(const QString& action, const QJsonObject& message, const QString& nonce); QJsonObject buildResponse(const QString& action, const QJsonObject& message, const QString& nonce);

View file

@ -32,13 +32,24 @@ BrowserOptionDialog::BrowserOptionDialog(QWidget* parent)
{ {
m_ui->setupUi(this); m_ui->setupUi(this);
// clang-format off
QString snapInstructions;
#if defined(KEEPASSXC_DIST_SNAP)
snapInstructions = "<br /><br />" +
tr("Due to Snap sandboxing, you must run a script to enable browser integration."
"<br />"
"You can obtain this script from %1")
.arg("<a href=\"https://keepassxc.org/download#linux\">https://keepassxc.org</a>");
#endif
m_ui->extensionLabel->setOpenExternalLinks(true); m_ui->extensionLabel->setOpenExternalLinks(true);
m_ui->extensionLabel->setText( m_ui->extensionLabel->setText(
tr("KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2.") tr("KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2. %3")
.arg("<a href=\"https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/\">Firefox</a>", .arg("<a href=\"https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/\">Firefox</a>",
"<a " "<a href=\"https://chrome.google.com/webstore/detail/keepassxc-browser/oboonakemofpalcgghocfoadofidjkkk\">"
"href=\"https://chrome.google.com/webstore/detail/keepassxc-browser/" "Google Chrome / Chromium / Vivaldi</a>",
"oboonakemofpalcgghocfoadofidjkkk\">Google Chrome / Chromium / Vivaldi</a>")); snapInstructions));
// clang-format on
m_ui->scriptWarningWidget->setVisible(false); m_ui->scriptWarningWidget->setVisible(false);
m_ui->scriptWarningWidget->setAutoHideTimeout(-1); m_ui->scriptWarningWidget->setAutoHideTimeout(-1);
@ -119,10 +130,17 @@ void BrowserOptionDialog::loadSettings()
m_ui->supportBrowserProxy->setChecked(true); m_ui->supportBrowserProxy->setChecked(true);
m_ui->supportBrowserProxy->setEnabled(false); m_ui->supportBrowserProxy->setEnabled(false);
#elif defined(KEEPASSXC_DIST_SNAP) #elif defined(KEEPASSXC_DIST_SNAP)
m_ui->enableBrowserSupport->setChecked(false); // Disable settings that will not work
m_ui->enableBrowserSupport->setEnabled(false); m_ui->supportBrowserProxy->setChecked(true);
m_ui->browserGlobalWarningWidget->showMessage( m_ui->supportBrowserProxy->setEnabled(false);
tr("We're sorry, but KeePassXC-Browser is not supported for Snap releases at the moment."), m_ui->useCustomProxy->setChecked(false);
m_ui->useCustomProxy->setEnabled(false);
m_ui->browsersGroupBox->setVisible(false);
m_ui->browsersGroupBox->setEnabled(false);
m_ui->updateBinaryPath->setChecked(false);
m_ui->updateBinaryPath->setEnabled(false);
// Show notice to user
m_ui->browserGlobalWarningWidget->showMessage(tr("Please see special instructions for browser extension use below"),
MessageWidget::Warning); MessageWidget::Warning);
m_ui->browserGlobalWarningWidget->setCloseButtonVisible(false); m_ui->browserGlobalWarningWidget->setCloseButtonVisible(false);
m_ui->browserGlobalWarningWidget->setAutoHideTimeout(-1); m_ui->browserGlobalWarningWidget->setAutoHideTimeout(-1);

View file

@ -150,7 +150,7 @@ QString BrowserService::getDatabaseRecycleBinUuid()
return recycleBin->uuidToHex(); return recycleBin->uuidToHex();
} }
QJsonArray BrowserService::addChildrenToGroup(Group* group) QJsonArray BrowserService::getChildrenFromGroup(Group* group)
{ {
QJsonArray groupList; QJsonArray groupList;
@ -166,7 +166,7 @@ QJsonArray BrowserService::addChildrenToGroup(Group* group)
QJsonObject jsonGroup; QJsonObject jsonGroup;
jsonGroup["name"] = c->name(); jsonGroup["name"] = c->name();
jsonGroup["uuid"] = Tools::uuidToHex(c->uuid()); jsonGroup["uuid"] = Tools::uuidToHex(c->uuid());
jsonGroup["children"] = addChildrenToGroup(c); jsonGroup["children"] = getChildrenFromGroup(c);
groupList.push_back(jsonGroup); groupList.push_back(jsonGroup);
} }
return groupList; return groupList;
@ -187,7 +187,7 @@ QJsonObject BrowserService::getDatabaseGroups()
QJsonObject root; QJsonObject root;
root["name"] = rootGroup->name(); root["name"] = rootGroup->name();
root["uuid"] = Tools::uuidToHex(rootGroup->uuid()); root["uuid"] = Tools::uuidToHex(rootGroup->uuid());
root["children"] = addChildrenToGroup(rootGroup); root["children"] = getChildrenFromGroup(rootGroup);
QJsonArray groups; QJsonArray groups;
groups.push_back(root); groups.push_back(root);
@ -198,6 +198,84 @@ QJsonObject BrowserService::getDatabaseGroups()
return result; return result;
} }
QJsonObject BrowserService::createNewGroup(const QString& groupName)
{
QJsonObject result;
if (thread() != QThread::currentThread()) {
QMetaObject::invokeMethod(this,
"createNewGroup",
Qt::BlockingQueuedConnection,
Q_RETURN_ARG(QJsonObject, result),
Q_ARG(QString, groupName));
return result;
}
auto db = getDatabase();
if (!db) {
return {};
}
Group* rootGroup = db->rootGroup();
if (!rootGroup) {
return {};
}
auto group = rootGroup->findGroupByPath(groupName);
// Group already exists
if (group) {
result["name"] = group->name();
result["uuid"] = Tools::uuidToHex(group->uuid());
return result;
}
auto dialogResult = MessageBox::warning(nullptr,
tr("KeePassXC: Create a new group"),
tr("A request for creating a new group \"%1\" has been received.\n"
"Do you want to create this group?\n")
.arg(groupName),
MessageBox::Yes | MessageBox::No);
if (dialogResult != MessageBox::Yes) {
return result;
}
QString name, uuid;
Group* previousGroup = rootGroup;
auto groups = groupName.split("/");
// Returns the group name based on depth
auto getGroupName = [&](int depth) {
QString gName;
for (int i = 0; i < depth + 1; ++i) {
gName.append((i == 0 ? "" : "/") + groups[i]);
}
return gName;
};
// Create new group(s) always when the path is not found
for (int i = 0; i < groups.length(); ++i) {
QString gName = getGroupName(i);
auto tempGroup = rootGroup->findGroupByPath(gName);
if (!tempGroup) {
Group* newGroup = new Group();
newGroup->setName(groups[i]);
newGroup->setUuid(QUuid::createUuid());
newGroup->setParent(previousGroup);
name = newGroup->name();
uuid = Tools::uuidToHex(newGroup->uuid());
previousGroup = newGroup;
continue;
}
previousGroup = tempGroup;
}
result["name"] = name;
result["uuid"] = uuid;
return result;
}
QString BrowserService::storeKey(const QString& key) QString BrowserService::storeKey(const QString& key)
{ {
QString id; QString id;
@ -630,7 +708,7 @@ QList<Entry*> BrowserService::sortEntries(QList<Entry*>& pwEntries, const QStrin
{ {
QUrl url(entryUrl); QUrl url(entryUrl);
if (url.scheme().isEmpty()) { if (url.scheme().isEmpty()) {
url.setScheme("http"); url.setScheme("https");
} }
const QString submitUrl = url.toString(QUrl::StripTrailingSlash); const QString submitUrl = url.toString(QUrl::StripTrailingSlash);
@ -996,11 +1074,12 @@ bool BrowserService::checkLegacySettings()
return false; return false;
} }
auto dialogResult = MessageBox::warning(nullptr, auto dialogResult =
MessageBox::warning(nullptr,
tr("KeePassXC: Legacy browser integration settings detected"), tr("KeePassXC: Legacy browser integration settings detected"),
tr("Legacy browser integration settings have been detected.\n" tr("Your KeePassXC-Browser settings need to be moved into the database settings.\n"
"Do you want to upgrade the settings to the latest standard?\n" "This is necessary to maintain your current browser connections.\n"
"This is necessary to maintain compatibility with the browser plugin."), "Would you like to migrate your existing settings now?"),
MessageBox::Yes | MessageBox::No); MessageBox::Yes | MessageBox::No);
return dialogResult == MessageBox::Yes; return dialogResult == MessageBox::Yes;
@ -1034,6 +1113,8 @@ void BrowserService::raiseWindow(const bool force)
m_prevWindowState = WindowState::Minimized; m_prevWindowState = WindowState::Minimized;
} }
#ifdef Q_OS_MACOS #ifdef Q_OS_MACOS
Q_UNUSED(force);
if (macUtils()->isHidden()) { if (macUtils()->isHidden()) {
m_prevWindowState = WindowState::Hidden; m_prevWindowState = WindowState::Hidden;
} }

View file

@ -45,6 +45,7 @@ public:
QString getDatabaseRootUuid(); QString getDatabaseRootUuid();
QString getDatabaseRecycleBinUuid(); QString getDatabaseRecycleBinUuid();
QJsonObject getDatabaseGroups(); QJsonObject getDatabaseGroups();
QJsonObject createNewGroup(const QString& groupName);
QString getKey(const QString& id); QString getKey(const QString& id);
void addEntry(const QString& id, void addEntry(const QString& id,
const QString& login, const QString& login,
@ -121,7 +122,7 @@ private:
QString baseDomain(const QString& url) const; QString baseDomain(const QString& url) const;
QSharedPointer<Database> getDatabase(); QSharedPointer<Database> getDatabase();
QSharedPointer<Database> selectedDatabase(); QSharedPointer<Database> selectedDatabase();
QJsonArray addChildrenToGroup(Group* group); QJsonArray getChildrenFromGroup(Group* group);
bool moveSettingsToCustomData(Entry* entry, const QString& name) const; bool moveSettingsToCustomData(Entry* entry, const QString& name) const;
int moveKeysToCustomData(Entry* entry, const QSharedPointer<Database>& db) const; int moveKeysToCustomData(Entry* entry, const QSharedPointer<Database>& db) const;
bool checkLegacySettings(); bool checkLegacySettings();

View file

@ -186,7 +186,7 @@ void BrowserSettings::setCustomProxyLocation(const QString& location)
bool BrowserSettings::updateBinaryPath() bool BrowserSettings::updateBinaryPath()
{ {
return config()->get("Browser/UpdateBinaryPath", false).toBool(); return config()->get("Browser/UpdateBinaryPath", true).toBool();
} }
void BrowserSettings::setUpdateBinaryPath(bool enabled) void BrowserSettings::setUpdateBinaryPath(bool enabled)

View file

@ -65,6 +65,7 @@ void NativeMessagingBase::newNativeMessage()
EV_SET(ev, fileno(stdin), EVFILT_READ, EV_ADD, 0, 0, nullptr); EV_SET(ev, fileno(stdin), EVFILT_READ, EV_ADD, 0, 0, nullptr);
if (kevent(fd, ev, 1, nullptr, 0, &ts) == -1) { if (kevent(fd, ev, 1, nullptr, 0, &ts) == -1) {
m_notifier->setEnabled(false); m_notifier->setEnabled(false);
::close(fd);
return; return;
} }
@ -81,6 +82,7 @@ void NativeMessagingBase::newNativeMessage()
event.data.fd = 0; event.data.fd = 0;
if (epoll_ctl(fd, EPOLL_CTL_ADD, 0, &event) != 0) { if (epoll_ctl(fd, EPOLL_CTL_ADD, 0, &event) != 0) {
m_notifier->setEnabled(false); m_notifier->setEnabled(false);
::close(fd);
return; return;
} }
@ -135,7 +137,9 @@ void NativeMessagingBase::sendReply(const QString& reply)
QString NativeMessagingBase::getLocalServerPath() const QString NativeMessagingBase::getLocalServerPath() const
{ {
const QString serverPath = "/kpxc_server"; const QString serverPath = "/kpxc_server";
#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) #if defined(KEEPASSXC_DIST_SNAP)
return QProcessEnvironment::systemEnvironment().value("SNAP_COMMON") + serverPath;
#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
// Use XDG_RUNTIME_DIR instead of /tmp if it's available // Use XDG_RUNTIME_DIR instead of /tmp if it's available
QString path = QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation); QString path = QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation);
return path.isEmpty() ? QStandardPaths::writableLocation(QStandardPaths::TempLocation) + serverPath return path.isEmpty() ? QStandardPaths::writableLocation(QStandardPaths::TempLocation) + serverPath

View file

@ -53,7 +53,7 @@ protected slots:
protected: protected:
virtual void readLength() = 0; virtual void readLength() = 0;
virtual bool readStdIn(const quint32 length) = 0; virtual bool readStdIn(const quint32 length) = 0;
void readNativeMessages(); virtual void readNativeMessages();
QString jsonToString(const QJsonObject& json) const; QString jsonToString(const QJsonObject& json) const;
void sendReply(const QJsonObject& json); void sendReply(const QJsonObject& json);
void sendReply(const QString& reply); void sendReply(const QString& reply);

View file

@ -32,7 +32,7 @@ class NativeMessagingHost : public NativeMessagingBase
public: public:
explicit NativeMessagingHost(DatabaseTabWidget* parent = nullptr, const bool enabled = false); explicit NativeMessagingHost(DatabaseTabWidget* parent = nullptr, const bool enabled = false);
~NativeMessagingHost(); ~NativeMessagingHost() override;
int init(); int init();
void run(); void run();
void stop(); void stop();

View file

@ -275,6 +275,7 @@ bool Database::writeDatabase(QIODevice* device, QString* error)
return false; return false;
} }
QByteArray oldTransformedKey = m_data.transformedMasterKey;
KeePass2Writer writer; KeePass2Writer writer;
setEmitModified(false); setEmitModified(false);
writer.writeDatabase(device, this); writer.writeDatabase(device, this);
@ -287,6 +288,15 @@ bool Database::writeDatabase(QIODevice* device, QString* error)
return false; return false;
} }
Q_ASSERT(!m_data.transformedMasterKey.isEmpty());
Q_ASSERT(m_data.transformedMasterKey != oldTransformedKey);
if (m_data.transformedMasterKey.isEmpty() || m_data.transformedMasterKey == oldTransformedKey) {
if (error) {
*error = tr("Key not transformed. This is a bug, please report it to the developers!");
}
return false;
}
markAsClean(); markAsClean();
return true; return true;
} }
@ -307,16 +317,18 @@ bool Database::extract(QByteArray& xmlOutput, QString* error)
/** /**
* Remove the old backup and replace it with a new one * Remove the old backup and replace it with a new one
* backups are named <filename>.old.kdbx * backups are named <filename>.old.<extension>
* *
* @param filePath Path to the file to backup * @param filePath Path to the file to backup
* @return true on success * @return true on success
*/ */
bool Database::backupDatabase(const QString& filePath) bool Database::backupDatabase(const QString& filePath)
{ {
QString backupFilePath = filePath; static auto re = QRegularExpression("(\\.[^.]+)$");
auto re = QRegularExpression("\\.kdbx$|(?<!\\.kdbx)$", QRegularExpression::CaseInsensitiveOption);
backupFilePath.replace(re, ".old.kdbx"); auto match = re.match(filePath);
auto backupFilePath = filePath;
backupFilePath = backupFilePath.replace(re, "") + ".old" + match.captured(1);
QFile::remove(backupFilePath); QFile::remove(backupFilePath);
return QFile::copy(filePath, backupFilePath); return QFile::copy(filePath, backupFilePath);
} }
@ -512,9 +524,13 @@ void Database::setCompressionAlgorithm(Database::CompressionAlgorithm algo)
* @param key key to set and transform or nullptr to reset the key * @param key key to set and transform or nullptr to reset the key
* @param updateChangedTime true to update database change time * @param updateChangedTime true to update database change time
* @param updateTransformSalt true to update the transform salt * @param updateTransformSalt true to update the transform salt
* @param transformKey trigger the KDF after setting the key
* @return true on success * @return true on success
*/ */
bool Database::setKey(const QSharedPointer<const CompositeKey>& key, bool updateChangedTime, bool updateTransformSalt) bool Database::setKey(const QSharedPointer<const CompositeKey>& key,
bool updateChangedTime,
bool updateTransformSalt,
bool transformKey)
{ {
Q_ASSERT(!m_data.isReadOnly); Q_ASSERT(!m_data.isReadOnly);
@ -532,7 +548,9 @@ bool Database::setKey(const QSharedPointer<const CompositeKey>& key, bool update
QByteArray oldTransformedMasterKey = m_data.transformedMasterKey; QByteArray oldTransformedMasterKey = m_data.transformedMasterKey;
QByteArray transformedMasterKey; QByteArray transformedMasterKey;
if (!key->transform(*m_data.kdf, transformedMasterKey)) { if (!transformKey) {
transformedMasterKey = oldTransformedMasterKey;
} else if (!key->transform(*m_data.kdf, transformedMasterKey)) {
return false; return false;
} }

View file

@ -109,7 +109,8 @@ public:
QSharedPointer<const CompositeKey> key() const; QSharedPointer<const CompositeKey> key() const;
bool setKey(const QSharedPointer<const CompositeKey>& key, bool setKey(const QSharedPointer<const CompositeKey>& key,
bool updateChangedTime = true, bool updateChangedTime = true,
bool updateTransformSalt = false); bool updateTransformSalt = false,
bool transformKey = true);
QByteArray challengeResponseKey() const; QByteArray challengeResponseKey() const;
bool challengeMasterSeed(const QByteArray& masterSeed); bool challengeMasterSeed(const QByteArray& masterSeed);
bool verifyKey(const QSharedPointer<CompositeKey>& key) const; bool verifyKey(const QSharedPointer<CompositeKey>& key) const;

View file

@ -926,7 +926,7 @@ QString Entry::resolveReferencePlaceholderRecursive(const QString& placeholder,
Q_ASSERT(m_group); Q_ASSERT(m_group);
Q_ASSERT(m_group->database()); Q_ASSERT(m_group->database());
const Entry* refEntry = m_group->findEntryBySearchTerm(searchText, searchInType); const Entry* refEntry = m_group->database()->rootGroup()->findEntryBySearchTerm(searchText, searchInType);
if (refEntry) { if (refEntry) {
const QString wantedField = match.captured(EntryAttributes::WantedFieldGroupName); const QString wantedField = match.captured(EntryAttributes::WantedFieldGroupName);

View file

@ -67,6 +67,15 @@ QString EntryAttributes::value(const QString& key) const
return m_attributes.value(key); return m_attributes.value(key);
} }
QList<QString> EntryAttributes::values(const QList<QString>& keys) const
{
QList<QString> values;
for (const QString& key : keys) {
values.append(m_attributes.value(key));
}
return values;
}
bool EntryAttributes::contains(const QString& key) const bool EntryAttributes::contains(const QString& key) const
{ {
return m_attributes.contains(key); return m_attributes.contains(key);

View file

@ -36,6 +36,7 @@ public:
bool hasKey(const QString& key) const; bool hasKey(const QString& key) const;
QList<QString> customKeys() const; QList<QString> customKeys() const;
QString value(const QString& key) const; QString value(const QString& key) const;
QList<QString> values(const QList<QString>& keys) const;
bool contains(const QString& key) const; bool contains(const QString& key) const;
bool containsValue(const QString& value) const; bool containsValue(const QString& value) const;
bool isProtected(const QString& key) const; bool isProtected(const QString& key) const;

View file

@ -28,31 +28,83 @@ EntrySearcher::EntrySearcher(bool caseSensitive)
{ {
} }
/**
* Search group, and its children, by parsing the provided search
* string for search terms.
*
* @param searchString search terms
* @param baseGroup group to start search from, cannot be null
* @param forceSearch ignore group search settings
* @return list of entries that match the search terms
*/
QList<Entry*> EntrySearcher::search(const QString& searchString, const Group* baseGroup, bool forceSearch) QList<Entry*> EntrySearcher::search(const QString& searchString, const Group* baseGroup, bool forceSearch)
{ {
Q_ASSERT(baseGroup); Q_ASSERT(baseGroup);
parseSearchTerms(searchString);
return repeat(baseGroup, forceSearch);
}
/**
* Repeat the last search starting from the given group
*
* @param baseGroup group to start search from, cannot be null
* @param forceSearch ignore group search settings
* @return list of entries that match the search terms
*/
QList<Entry*> EntrySearcher::repeat(const Group* baseGroup, bool forceSearch)
{
Q_ASSERT(baseGroup);
QList<Entry*> results; QList<Entry*> results;
for (const auto group : baseGroup->groupsRecursive(true)) { for (const auto group : baseGroup->groupsRecursive(true)) {
if (forceSearch || group->resolveSearchingEnabled()) { if (forceSearch || group->resolveSearchingEnabled()) {
results.append(searchEntries(searchString, group->entries())); for (auto* entry : group->entries()) {
if (searchEntryImpl(entry)) {
results.append(entry);
}
}
} }
} }
return results; return results;
} }
/**
* Search provided entries by parsing the search string
* for search terms.
*
* @param searchString search terms
* @param entries list of entries to include in the search
* @return list of entries that match the search terms
*/
QList<Entry*> EntrySearcher::searchEntries(const QString& searchString, const QList<Entry*>& entries) QList<Entry*> EntrySearcher::searchEntries(const QString& searchString, const QList<Entry*>& entries)
{
parseSearchTerms(searchString);
return repeatEntries(entries);
}
/**
* Repeat the last search on the given entries
*
* @param entries list of entries to include in the search
* @return list of entries that match the search terms
*/
QList<Entry*> EntrySearcher::repeatEntries(const QList<Entry*>& entries)
{ {
QList<Entry*> results; QList<Entry*> results;
for (Entry* entry : entries) { for (auto* entry : entries) {
if (searchEntryImpl(searchString, entry)) { if (searchEntryImpl(entry)) {
results.append(entry); results.append(entry);
} }
} }
return results; return results;
} }
/**
* Set the next search to be case sensitive or not
*
* @param state
*/
void EntrySearcher::setCaseSensitive(bool state) void EntrySearcher::setCaseSensitive(bool state)
{ {
m_caseSensitive = state; m_caseSensitive = state;
@ -63,16 +115,15 @@ bool EntrySearcher::isCaseSensitive()
return m_caseSensitive; return m_caseSensitive;
} }
bool EntrySearcher::searchEntryImpl(const QString& searchString, Entry* entry) bool EntrySearcher::searchEntryImpl(Entry* entry)
{ {
// Pre-load in case they are needed // Pre-load in case they are needed
auto attributes = QStringList(entry->attributes()->keys()); auto attributes_keys = entry->attributes()->customKeys();
auto attributes = QStringList(attributes_keys + entry->attributes()->values(attributes_keys));
auto attachments = QStringList(entry->attachments()->keys()); auto attachments = QStringList(entry->attachments()->keys());
bool found; bool found;
auto searchTerms = parseSearchTerms(searchString); for (const auto& term : m_searchTerms) {
for (const auto& term : searchTerms) {
switch (term->field) { switch (term->field) {
case Field::Title: case Field::Title:
found = term->regex.match(entry->resolvePlaceholder(entry->title())).hasMatch(); found = term->regex.match(entry->resolvePlaceholder(entry->title())).hasMatch();
@ -112,10 +163,9 @@ bool EntrySearcher::searchEntryImpl(const QString& searchString, Entry* entry)
return true; return true;
} }
QList<QSharedPointer<EntrySearcher::SearchTerm>> EntrySearcher::parseSearchTerms(const QString& searchString) void EntrySearcher::parseSearchTerms(const QString& searchString)
{ {
auto terms = QList<QSharedPointer<SearchTerm>>(); m_searchTerms.clear();
auto results = m_termParser.globalMatch(searchString); auto results = m_termParser.globalMatch(searchString);
while (results.hasNext()) { while (results.hasNext()) {
auto result = results.next(); auto result = results.next();
@ -165,8 +215,6 @@ QList<QSharedPointer<EntrySearcher::SearchTerm>> EntrySearcher::parseSearchTerms
} }
} }
terms.append(term); m_searchTerms.append(term);
} }
return terms;
} }

View file

@ -31,14 +31,15 @@ public:
explicit EntrySearcher(bool caseSensitive = false); explicit EntrySearcher(bool caseSensitive = false);
QList<Entry*> search(const QString& searchString, const Group* baseGroup, bool forceSearch = false); QList<Entry*> search(const QString& searchString, const Group* baseGroup, bool forceSearch = false);
QList<Entry*> repeat(const Group* baseGroup, bool forceSearch = false);
QList<Entry*> searchEntries(const QString& searchString, const QList<Entry*>& entries); QList<Entry*> searchEntries(const QString& searchString, const QList<Entry*>& entries);
QList<Entry*> repeatEntries(const QList<Entry*>& entries);
void setCaseSensitive(bool state); void setCaseSensitive(bool state);
bool isCaseSensitive(); bool isCaseSensitive();
private: private:
bool searchEntryImpl(const QString& searchString, Entry* entry);
enum class Field enum class Field
{ {
Undefined, Undefined,
@ -59,10 +60,12 @@ private:
bool exclude; bool exclude;
}; };
QList<QSharedPointer<SearchTerm>> parseSearchTerms(const QString& searchString); bool searchEntryImpl(Entry* entry);
void parseSearchTerms(const QString& searchString);
bool m_caseSensitive; bool m_caseSensitive;
QRegularExpression m_termParser; QRegularExpression m_termParser;
QList<QSharedPointer<SearchTerm>> m_searchTerms;
friend class TestEntrySearcher; friend class TestEntrySearcher;
}; };

View file

@ -123,6 +123,7 @@ BulkFileWatcher::BulkFileWatcher(QObject* parent)
connect(&m_fileWatchUnblockTimer, SIGNAL(timeout()), this, SLOT(observeFileChanges())); connect(&m_fileWatchUnblockTimer, SIGNAL(timeout()), this, SLOT(observeFileChanges()));
connect(&m_pendingSignalsTimer, SIGNAL(timeout()), this, SLOT(emitSignals())); connect(&m_pendingSignalsTimer, SIGNAL(timeout()), this, SLOT(emitSignals()));
m_fileWatchUnblockTimer.setSingleShot(true); m_fileWatchUnblockTimer.setSingleShot(true);
m_pendingSignalsTimer.setSingleShot(true);
} }
void BulkFileWatcher::clear() void BulkFileWatcher::clear()

View file

@ -1,8 +1,30 @@
/*
* Copyright (C) 2013 Felix Geyer <debfx@fobos.de>
* Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "OSEventFilter.h" #include "OSEventFilter.h"
#include <QByteArray> #include <QByteArray>
#include "autotype/AutoType.h" #include "autotype/AutoType.h"
#include "gui/MainWindow.h"
#ifdef Q_OS_WIN
#include <windows.h>
#endif
OSEventFilter::OSEventFilter() OSEventFilter::OSEventFilter()
{ {
@ -15,12 +37,18 @@ bool OSEventFilter::nativeEventFilter(const QByteArray& eventType, void* message
#if defined(Q_OS_UNIX) #if defined(Q_OS_UNIX)
if (eventType == QByteArrayLiteral("xcb_generic_event_t")) { if (eventType == QByteArrayLiteral("xcb_generic_event_t")) {
#elif defined(Q_OS_WIN) #elif defined(Q_OS_WIN)
if (eventType == QByteArrayLiteral("windows_generic_MSG") auto winmsg = static_cast<MSG*>(message);
if (winmsg->message == WM_QUERYENDSESSION) {
*result = 1;
return true;
} else if (winmsg->message == WM_ENDSESSION) {
getMainWindow()->appExit();
*result = 0;
return true;
} else if (eventType == QByteArrayLiteral("windows_generic_MSG")
|| eventType == QByteArrayLiteral("windows_dispatcher_MSG")) { || eventType == QByteArrayLiteral("windows_dispatcher_MSG")) {
#endif #endif
int retCode = autoType()->callEventFilter(message); return autoType()->callEventFilter(message) == 1;
return retCode == 1;
} }
return false; return false;

View file

@ -1,3 +1,21 @@
/*
* Copyright (C) 2013 Felix Geyer <debfx@fobos.de>
* Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef OSEVENTFILTER_H #ifndef OSEVENTFILTER_H
#define OSEVENTFILTER_H #define OSEVENTFILTER_H
#include <QAbstractNativeEventFilter> #include <QAbstractNativeEventFilter>

View file

@ -84,7 +84,8 @@ int Kdf::benchmark(int msec) const
} }
Kdf::BenchmarkThread::BenchmarkThread(int msec, const Kdf* kdf) Kdf::BenchmarkThread::BenchmarkThread(int msec, const Kdf* kdf)
: m_msec(msec) : m_rounds(1)
, m_msec(msec)
, m_kdf(kdf) , m_kdf(kdf)
{ {
} }

View file

@ -19,12 +19,6 @@
#include "BinaryStream.h" #include "BinaryStream.h"
#include <QtEndian> #include <QtEndian>
BinaryStream::BinaryStream(QObject* parent)
: QObject(parent)
, m_timeout(-1)
{
}
BinaryStream::BinaryStream(QIODevice* device) BinaryStream::BinaryStream(QIODevice* device)
: QObject(device) : QObject(device)
, m_timeout(-1) , m_timeout(-1)
@ -36,7 +30,10 @@ BinaryStream::BinaryStream(QByteArray* ba, QObject* parent)
: QObject(parent) : QObject(parent)
, m_timeout(-1) , m_timeout(-1)
{ {
setData(ba); m_buffer.reset(new QBuffer(ba));
m_buffer->open(QIODevice::ReadWrite);
m_device = m_buffer.data();
} }
BinaryStream::~BinaryStream() BinaryStream::~BinaryStream()
@ -53,19 +50,6 @@ QIODevice* BinaryStream::device() const
return m_device; return m_device;
} }
void BinaryStream::setDevice(QIODevice* device)
{
m_device = device;
}
void BinaryStream::setData(QByteArray* ba)
{
m_buffer.reset(new QBuffer(ba));
m_buffer->open(QIODevice::ReadWrite);
m_device = m_buffer.data();
}
void BinaryStream::setTimeout(int timeout) void BinaryStream::setTimeout(int timeout)
{ {
m_timeout = timeout; m_timeout = timeout;

View file

@ -26,16 +26,14 @@
class BinaryStream : QObject class BinaryStream : QObject
{ {
Q_OBJECT Q_OBJECT
Q_DISABLE_COPY(BinaryStream)
public: public:
BinaryStream(QObject* parent = nullptr); explicit BinaryStream(QIODevice* device);
BinaryStream(QIODevice* device); explicit BinaryStream(QByteArray* ba, QObject* parent = nullptr);
BinaryStream(QByteArray* ba, QObject* parent = nullptr); ~BinaryStream() override;
~BinaryStream();
const QString errorString() const; const QString errorString() const;
QIODevice* device() const; QIODevice* device() const;
void setDevice(QIODevice* device);
void setData(QByteArray* ba);
void setTimeout(int timeout); void setTimeout(int timeout);
bool read(QByteArray& ba); bool read(QByteArray& ba);

View file

@ -125,9 +125,8 @@ Application::Application(int& argc, char** argv)
break; break;
} }
default: default:
qWarning() << QObject::tr("The lock file could not be created. Single-instance mode disabled.") qWarning()
.toUtf8() << QObject::tr("The lock file could not be created. Single-instance mode disabled.").toUtf8().constData();
.constData();
} }
} }

View file

@ -176,7 +176,8 @@ void ApplicationSettingsWidget::loadSettings()
m_generalUi->minimizeOnCloseCheckBox->setChecked(config()->get("GUI/MinimizeOnClose").toBool()); m_generalUi->minimizeOnCloseCheckBox->setChecked(config()->get("GUI/MinimizeOnClose").toBool());
m_generalUi->systrayMinimizeOnStartup->setChecked(config()->get("GUI/MinimizeOnStartup").toBool()); m_generalUi->systrayMinimizeOnStartup->setChecked(config()->get("GUI/MinimizeOnStartup").toBool());
m_generalUi->checkForUpdatesOnStartupCheckBox->setChecked(config()->get("GUI/CheckForUpdates").toBool()); m_generalUi->checkForUpdatesOnStartupCheckBox->setChecked(config()->get("GUI/CheckForUpdates").toBool());
m_generalUi->checkForUpdatesIncludeBetasCheckBox->setChecked(config()->get("GUI/CheckForUpdatesIncludeBetas").toBool()); m_generalUi->checkForUpdatesIncludeBetasCheckBox->setChecked(
config()->get("GUI/CheckForUpdatesIncludeBetas").toBool());
m_generalUi->autoTypeAskCheckBox->setChecked(config()->get("security/autotypeask").toBool()); m_generalUi->autoTypeAskCheckBox->setChecked(config()->get("security/autotypeask").toBool());
if (autoType()->isAvailable()) { if (autoType()->isAvailable()) {

View file

@ -251,7 +251,11 @@ QSharedPointer<CompositeKey> DatabaseOpenWidget::databaseKey()
#ifdef WITH_XC_TOUCHID #ifdef WITH_XC_TOUCHID
// check if TouchID is available and enabled for unlocking the database // check if TouchID is available and enabled for unlocking the database
if (m_ui->checkTouchID->isChecked() && TouchID::getInstance().isAvailable() && masterKey->isEmpty()) { if (m_ui->checkTouchID->isChecked() && TouchID::getInstance().isAvailable()
&& m_ui->editPassword->text().isEmpty()) {
// clear empty password from composite key
masterKey->clear();
// try to get, decrypt and use PasswordKey // try to get, decrypt and use PasswordKey
QSharedPointer<QByteArray> passwordKey = TouchID::getInstance().getKey(m_filename); QSharedPointer<QByteArray> passwordKey = TouchID::getInstance().getKey(m_filename);
if (passwordKey != NULL) { if (passwordKey != NULL) {

View file

@ -61,8 +61,6 @@
#include "keeshare/KeeShare.h" #include "keeshare/KeeShare.h"
#include "touchid/TouchID.h" #include "touchid/TouchID.h"
#include "config-keepassx.h"
#ifdef Q_OS_LINUX #ifdef Q_OS_LINUX
#include <sys/vfs.h> #include <sys/vfs.h>
#endif #endif
@ -80,6 +78,9 @@ DatabaseWidget::DatabaseWidget(QSharedPointer<Database> db, QWidget* parent)
, m_previewView(new EntryPreviewWidget(this)) , m_previewView(new EntryPreviewWidget(this))
, m_previewSplitter(new QSplitter(m_mainWidget)) , m_previewSplitter(new QSplitter(m_mainWidget))
, m_searchingLabel(new QLabel(this)) , m_searchingLabel(new QLabel(this))
#ifdef WITH_XC_KEESHARE
, m_shareLabel(new QLabel(this))
#endif
, m_csvImportWizard(new CsvImportWizard(this)) , m_csvImportWizard(new CsvImportWizard(this))
, m_editEntryWidget(new EditEntryWidget(this)) , m_editEntryWidget(new EditEntryWidget(this))
, m_editGroupWidget(new EditGroupWidget(this)) , m_editGroupWidget(new EditGroupWidget(this))
@ -103,6 +104,9 @@ DatabaseWidget::DatabaseWidget(QSharedPointer<Database> db, QWidget* parent)
auto* vbox = new QVBoxLayout(); auto* vbox = new QVBoxLayout();
vbox->setMargin(0); vbox->setMargin(0);
vbox->addWidget(m_searchingLabel); vbox->addWidget(m_searchingLabel);
#ifdef WITH_XC_KEESHARE
vbox->addWidget(m_shareLabel);
#endif
vbox->addWidget(m_previewSplitter); vbox->addWidget(m_previewSplitter);
rightHandSideWidget->setLayout(vbox); rightHandSideWidget->setLayout(vbox);
m_entryView = new EntryView(rightHandSideWidget); m_entryView = new EntryView(rightHandSideWidget);
@ -134,6 +138,16 @@ DatabaseWidget::DatabaseWidget(QSharedPointer<Database> db, QWidget* parent)
"border-radius: 4px;"); "border-radius: 4px;");
m_searchingLabel->setVisible(false); m_searchingLabel->setVisible(false);
#ifdef WITH_XC_KEESHARE
m_shareLabel->setText(tr("Shared group..."));
m_shareLabel->setAlignment(Qt::AlignCenter);
m_shareLabel->setStyleSheet("color: rgb(0, 0, 0);"
"background-color: rgb(255, 253, 160);"
"border: 2px solid rgb(190, 190, 190);"
"border-radius: 4px;");
m_shareLabel->setVisible(false);
#endif
m_previewView->hide(); m_previewView->hide();
m_previewSplitter->addWidget(m_entryView); m_previewSplitter->addWidget(m_entryView);
m_previewSplitter->addWidget(m_previewView); m_previewSplitter->addWidget(m_previewView);
@ -194,6 +208,12 @@ DatabaseWidget::DatabaseWidget(QSharedPointer<Database> db, QWidget* parent)
} }
#endif #endif
#ifdef WITH_XC_KEESHARE
// We need to reregister the database to allow exports
// from a newly created database
KeeShare::instance()->connectDatabase(m_db, {});
#endif
switchToMainView(); switchToMainView();
} }
@ -377,6 +397,9 @@ void DatabaseWidget::replaceDatabase(QSharedPointer<Database> db)
processAutoOpen(); processAutoOpen();
#if defined(WITH_XC_KEESHARE) #if defined(WITH_XC_KEESHARE)
KeeShare::instance()->connectDatabase(m_db, oldDb); KeeShare::instance()->connectDatabase(m_db, oldDb);
#else
// Keep the instance active till the end of this function
Q_UNUSED(oldDb);
#endif #endif
} }
@ -765,9 +788,9 @@ void DatabaseWidget::switchToMainView(bool previousDialogAccepted)
setCurrentWidget(m_mainWidget); setCurrentWidget(m_mainWidget);
if (sender() == m_entryView) { if (sender() == m_entryView || sender() == m_editEntryWidget) {
onEntryChanged(m_entryView->currentEntry()); onEntryChanged(m_entryView->currentEntry());
} else if (sender() == m_groupView) { } else if (sender() == m_groupView || sender() == m_editGroupWidget) {
onGroupChanged(m_groupView->currentGroup()); onGroupChanged(m_groupView->currentGroup());
} }
} }
@ -1089,6 +1112,7 @@ void DatabaseWidget::search(const QString& searchtext)
} }
m_searchingLabel->setVisible(true); m_searchingLabel->setVisible(true);
m_shareLabel->setVisible(false);
emit searchModeActivated(); emit searchModeActivated();
} }
@ -1117,6 +1141,16 @@ void DatabaseWidget::onGroupChanged(Group* group)
} }
m_previewView->setGroup(group); m_previewView->setGroup(group);
#ifdef WITH_XC_KEESHARE
auto shareLabel = KeeShare::sharingLabel(group);
if (!shareLabel.isEmpty()) {
m_shareLabel->setText(shareLabel);
m_shareLabel->setVisible(true);
} else {
m_shareLabel->setVisible(false);
}
#endif
} }
void DatabaseWidget::onDatabaseModified() void DatabaseWidget::onDatabaseModified()
@ -1140,6 +1174,7 @@ void DatabaseWidget::endSearch()
// Show the normal entry view of the current group // Show the normal entry view of the current group
m_entryView->displayGroup(currentGroup()); m_entryView->displayGroup(currentGroup());
onGroupChanged(currentGroup());
emit listModeActivated(); emit listModeActivated();
} }

View file

@ -29,6 +29,8 @@
#include "gui/csvImport/CsvImportWizard.h" #include "gui/csvImport/CsvImportWizard.h"
#include "gui/entry/EntryModel.h" #include "gui/entry/EntryModel.h"
#include "config-keepassx.h"
class DatabaseOpenWidget; class DatabaseOpenWidget;
class KeePass1OpenWidget; class KeePass1OpenWidget;
class DatabaseSettingsDialog; class DatabaseSettingsDialog;
@ -233,6 +235,9 @@ private:
QPointer<EntryPreviewWidget> m_previewView; QPointer<EntryPreviewWidget> m_previewView;
QPointer<QSplitter> m_previewSplitter; QPointer<QSplitter> m_previewSplitter;
QPointer<QLabel> m_searchingLabel; QPointer<QLabel> m_searchingLabel;
#ifdef WITH_XC_KEESHARE
QPointer<QLabel> m_shareLabel;
#endif
QPointer<CsvImportWizard> m_csvImportWizard; QPointer<CsvImportWizard> m_csvImportWizard;
QPointer<EditEntryWidget> m_editEntryWidget; QPointer<EditEntryWidget> m_editEntryWidget;
QPointer<EditGroupWidget> m_editGroupWidget; QPointer<EditGroupWidget> m_editGroupWidget;

View file

@ -59,6 +59,7 @@ void EditWidget::addPage(const QString& labelText, const QIcon& icon, QWidget* w
*/ */
auto* scrollArea = new QScrollArea(m_ui->stackedWidget); auto* scrollArea = new QScrollArea(m_ui->stackedWidget);
scrollArea->setFrameShape(QFrame::NoFrame); scrollArea->setFrameShape(QFrame::NoFrame);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scrollArea->setWidget(widget); scrollArea->setWidget(widget);
scrollArea->setWidgetResizable(true); scrollArea->setWidgetResizable(true);
m_ui->stackedWidget->addWidget(scrollArea); m_ui->stackedWidget->addWidget(scrollArea);

View file

@ -30,6 +30,7 @@
#include "gui/MessageBox.h" #include "gui/MessageBox.h"
#ifdef WITH_XC_NETWORKING #ifdef WITH_XC_NETWORKING
#include <QHostInfo>
#include <QNetworkAccessManager> #include <QNetworkAccessManager>
#include <QtNetwork> #include <QtNetwork>
#endif #endif
@ -65,7 +66,6 @@ EditWidgetIcons::EditWidgetIcons(QWidget* parent)
connect(m_ui->deleteButton, SIGNAL(clicked()), SLOT(removeCustomIcon())); connect(m_ui->deleteButton, SIGNAL(clicked()), SLOT(removeCustomIcon()));
connect(m_ui->faviconButton, SIGNAL(clicked()), SLOT(downloadFavicon())); connect(m_ui->faviconButton, SIGNAL(clicked()), SLOT(downloadFavicon()));
connect(m_ui->defaultIconsRadio, SIGNAL(toggled(bool)), this, SIGNAL(widgetUpdated()));
connect(m_ui->defaultIconsRadio, SIGNAL(toggled(bool)), this, SIGNAL(widgetUpdated())); connect(m_ui->defaultIconsRadio, SIGNAL(toggled(bool)), this, SIGNAL(widgetUpdated()));
connect(m_ui->defaultIconsView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), connect(m_ui->defaultIconsView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
this, SIGNAL(widgetUpdated())); this, SIGNAL(widgetUpdated()));
@ -196,13 +196,27 @@ void EditWidgetIcons::downloadFavicon()
m_urlsToTry.clear(); m_urlsToTry.clear();
QString fullyQualifiedDomain = m_url.host(); QString fullyQualifiedDomain = m_url.host();
m_urlsToTry.append(QUrl(m_url.scheme() + "://" + fullyQualifiedDomain + "/favicon.ico"));
// Determine if host portion of URL is an IP address by resolving it and
// searching for a match with the returned address(es).
bool hostIsIp = false;
QList<QHostAddress> hostAddressess = QHostInfo::fromName(fullyQualifiedDomain).addresses();
for (auto addr : hostAddressess) {
if (addr.toString() == fullyQualifiedDomain) {
hostIsIp = true;
}
}
if (!hostIsIp) {
QString secondLevelDomain = getSecondLevelDomain(m_url); QString secondLevelDomain = getSecondLevelDomain(m_url);
// Attempt to simply load the favicon.ico file // Attempt to simply load the favicon.ico file
if (fullyQualifiedDomain != secondLevelDomain) { if (fullyQualifiedDomain != secondLevelDomain) {
m_urlsToTry.append(QUrl(m_url.scheme() + "://" + fullyQualifiedDomain + "/favicon.ico"));
}
m_urlsToTry.append(QUrl(m_url.scheme() + "://" + secondLevelDomain + "/favicon.ico")); m_urlsToTry.append(QUrl(m_url.scheme() + "://" + secondLevelDomain + "/favicon.ico"));
}
}
// Try to use alternative fallback URL, if enabled // Try to use alternative fallback URL, if enabled
if (config()->get("security/IconDownloadFallback", false).toBool()) { if (config()->get("security/IconDownloadFallback", false).toBool()) {
@ -210,6 +224,15 @@ void EditWidgetIcons::downloadFavicon()
fallbackUrl.setPath("/ip3/" + QUrl::toPercentEncoding(fullyQualifiedDomain) + ".ico"); fallbackUrl.setPath("/ip3/" + QUrl::toPercentEncoding(fullyQualifiedDomain) + ".ico");
m_urlsToTry.append(fallbackUrl); m_urlsToTry.append(fallbackUrl);
if (!hostIsIp) {
QString secondLevelDomain = getSecondLevelDomain(m_url);
if (fullyQualifiedDomain != secondLevelDomain) {
fallbackUrl.setPath("/ip3/" + QUrl::toPercentEncoding(secondLevelDomain) + ".ico");
m_urlsToTry.append(fallbackUrl);
}
}
} }
startFetchFavicon(m_urlsToTry.takeFirst()); startFetchFavicon(m_urlsToTry.takeFirst());
@ -277,7 +300,7 @@ void EditWidgetIcons::fetchFinished()
#endif #endif
} }
void EditWidgetIcons::fetchCanceled() void EditWidgetIcons::abortRequests()
{ {
#ifdef WITH_XC_NETWORKING #ifdef WITH_XC_NETWORKING
if (m_reply) { if (m_reply) {

View file

@ -19,7 +19,6 @@
#ifndef KEEPASSX_EDITWIDGETICONS_H #ifndef KEEPASSX_EDITWIDGETICONS_H
#define KEEPASSX_EDITWIDGETICONS_H #define KEEPASSX_EDITWIDGETICONS_H
#include <QSet>
#include <QUrl> #include <QUrl>
#include <QUuid> #include <QUuid>
#include <QWidget> #include <QWidget>
@ -66,6 +65,7 @@ public:
public slots: public slots:
void setUrl(const QString& url); void setUrl(const QString& url);
void abortRequests();
signals: signals:
void messageEditEntry(QString, MessageWidget::MessageType); void messageEditEntry(QString, MessageWidget::MessageType);
@ -77,7 +77,6 @@ private slots:
void startFetchFavicon(const QUrl& url); void startFetchFavicon(const QUrl& url);
void fetchFinished(); void fetchFinished();
void fetchReadyRead(); void fetchReadyRead();
void fetchCanceled();
void addCustomIconFromFile(); void addCustomIconFromFile();
bool addCustomIcon(const QImage& icon); bool addCustomIcon(const QImage& icon);
void removeCustomIcon(); void removeCustomIcon();

View file

@ -42,9 +42,9 @@
#include "keys/PasswordKey.h" #include "keys/PasswordKey.h"
#ifdef WITH_XC_NETWORKING #ifdef WITH_XC_NETWORKING
#include "updatecheck/UpdateChecker.h"
#include "gui/MessageBox.h" #include "gui/MessageBox.h"
#include "gui/UpdateCheckDialog.h" #include "gui/UpdateCheckDialog.h"
#include "updatecheck/UpdateChecker.h"
#endif #endif
#ifdef WITH_XC_SSHAGENT #ifdef WITH_XC_SSHAGENT
@ -76,7 +76,7 @@
class BrowserPlugin : public ISettingsPage class BrowserPlugin : public ISettingsPage
{ {
public: public:
BrowserPlugin(DatabaseTabWidget* tabWidget) explicit BrowserPlugin(DatabaseTabWidget* tabWidget)
{ {
m_nativeMessagingHost = m_nativeMessagingHost =
QSharedPointer<NativeMessagingHost>(new NativeMessagingHost(tabWidget, browserSettings()->isEnabled())); QSharedPointer<NativeMessagingHost>(new NativeMessagingHost(tabWidget, browserSettings()->isEnabled()));
@ -374,7 +374,9 @@ MainWindow::MainWindow()
#ifdef WITH_XC_NETWORKING #ifdef WITH_XC_NETWORKING
connect(m_ui->actionCheckForUpdates, SIGNAL(triggered()), SLOT(showUpdateCheckDialog())); connect(m_ui->actionCheckForUpdates, SIGNAL(triggered()), SLOT(showUpdateCheckDialog()));
connect(UpdateChecker::instance(), SIGNAL(updateCheckFinished(bool, QString, bool)), SLOT(hasUpdateAvailable(bool, QString, bool))); connect(UpdateChecker::instance(),
SIGNAL(updateCheckFinished(bool, QString, bool)),
SLOT(hasUpdateAvailable(bool, QString, bool)));
QTimer::singleShot(3000, this, SLOT(showUpdateCheckStartup())); QTimer::singleShot(3000, this, SLOT(showUpdateCheckStartup()));
#else #else
m_ui->actionCheckForUpdates->setVisible(false); m_ui->actionCheckForUpdates->setVisible(false);
@ -687,10 +689,11 @@ void MainWindow::showUpdateCheckStartup()
{ {
#ifdef WITH_XC_NETWORKING #ifdef WITH_XC_NETWORKING
if (!config()->get("UpdateCheckMessageShown", false).toBool()) { if (!config()->get("UpdateCheckMessageShown", false).toBool()) {
auto result = MessageBox::question(this, auto result =
MessageBox::question(this,
tr("Check for updates on startup?"), tr("Check for updates on startup?"),
tr("Would you like KeePassXC to check for updates on startup?") + "\n\n" + tr("Would you like KeePassXC to check for updates on startup?") + "\n\n"
tr("You can always check for updates manually from the application menu."), + tr("You can always check for updates manually from the application menu."),
MessageBox::Yes | MessageBox::No, MessageBox::Yes | MessageBox::No,
MessageBox::Yes); MessageBox::Yes);
@ -713,6 +716,10 @@ void MainWindow::hasUpdateAvailable(bool hasUpdate, const QString& version, bool
updateCheckDialog->showUpdateCheckResponse(hasUpdate, version); updateCheckDialog->showUpdateCheckResponse(hasUpdate, version);
updateCheckDialog->show(); updateCheckDialog->show();
} }
#else
Q_UNUSED(hasUpdate)
Q_UNUSED(version)
Q_UNUSED(isManuallyRequested)
#endif #endif
} }

View file

@ -120,6 +120,7 @@ bool SearchWidget::eventFilter(QObject* obj, QEvent* event)
void SearchWidget::connectSignals(SignalMultiplexer& mx) void SearchWidget::connectSignals(SignalMultiplexer& mx)
{ {
// Connects basically only to the current DatabaseWidget, but allows to switch between instances!
mx.connect(this, SIGNAL(search(QString)), SLOT(search(QString))); mx.connect(this, SIGNAL(search(QString)), SLOT(search(QString)));
mx.connect(this, SIGNAL(caseSensitiveChanged(bool)), SLOT(setSearchCaseSensitive(bool))); mx.connect(this, SIGNAL(caseSensitiveChanged(bool)), SLOT(setSearchCaseSensitive(bool)));
mx.connect(this, SIGNAL(limitGroupChanged(bool)), SLOT(setSearchLimitGroup(bool))); mx.connect(this, SIGNAL(limitGroupChanged(bool)), SLOT(setSearchLimitGroup(bool)));

View file

@ -16,9 +16,9 @@
*/ */
#include "UpdateCheckDialog.h" #include "UpdateCheckDialog.h"
#include "core/FilePath.h"
#include "ui_UpdateCheckDialog.h" #include "ui_UpdateCheckDialog.h"
#include "updatecheck/UpdateChecker.h" #include "updatecheck/UpdateChecker.h"
#include "core/FilePath.h"
UpdateCheckDialog::UpdateCheckDialog(QWidget* parent) UpdateCheckDialog::UpdateCheckDialog(QWidget* parent)
: QDialog(parent) : QDialog(parent)
@ -31,35 +31,34 @@ UpdateCheckDialog::UpdateCheckDialog(QWidget* parent)
m_ui->iconLabel->setPixmap(filePath()->applicationIcon().pixmap(48)); m_ui->iconLabel->setPixmap(filePath()->applicationIcon().pixmap(48));
connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(close())); connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(close()));
connect(UpdateChecker::instance(), SIGNAL(updateCheckFinished(bool, QString, bool)), SLOT(showUpdateCheckResponse(bool, QString))); connect(UpdateChecker::instance(),
SIGNAL(updateCheckFinished(bool, QString, bool)),
SLOT(showUpdateCheckResponse(bool, QString)));
} }
void UpdateCheckDialog::showUpdateCheckResponse(bool status, const QString& version) { void UpdateCheckDialog::showUpdateCheckResponse(bool status, const QString& version)
{
m_ui->progressBar->setVisible(false); m_ui->progressBar->setVisible(false);
m_ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Close")); m_ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Close"));
if (version == QString("error")) { if (version == QString("error")) {
setWindowTitle(tr("Update Error!")); setWindowTitle(tr("Update Error!"));
m_ui->statusLabel->setText( m_ui->statusLabel->setText("<strong>" + tr("Update Error!") + "</strong><br><br>"
"<strong>" + tr("Update Error!") + "</strong><br><br>" + + tr("An error occurred in retrieving update information.") + "<br>"
tr("An error occurred in retrieving update information.") + "<br>" + + tr("Please try again later."));
tr("Please try again later."));
return; return;
} }
if (status) { if (status) {
setWindowTitle(tr("Software Update")); setWindowTitle(tr("Software Update"));
m_ui->statusLabel->setText( m_ui->statusLabel->setText("<strong>" + tr("A new version of KeePassXC is available!") + "</strong><br><br>"
"<strong>" + tr("A new version of KeePassXC is available!") + "</strong><br><br>" + + tr("KeePassXC %1 is now available — you have %2.").arg(version, KEEPASSXC_VERSION)
tr("KeePassXC %1 is now available — you have %2.").arg(version, KEEPASSXC_VERSION) + "<br><br>" + + "<br><br>" + "<a href='https://keepassxc.org/download/'>"
"<a href='https://keepassxc.org/download/'>" + + tr("Download it at keepassxc.org") + "</a>");
tr("Download it at keepassxc.org") +
"</a>");
} else { } else {
setWindowTitle(tr("You're up-to-date!")); setWindowTitle(tr("You're up-to-date!"));
m_ui->statusLabel->setText(tr( m_ui->statusLabel->setText(tr("KeePassXC %1 is currently the newest version available").arg(KEEPASSXC_VERSION));
"KeePassXC %1 is currently the newest version available").arg(KEEPASSXC_VERSION));
} }
} }

View file

@ -18,13 +18,13 @@
#ifndef KEEPASSXC_UPDATECHECKDIALOG_H #ifndef KEEPASSXC_UPDATECHECKDIALOG_H
#define KEEPASSXC_UPDATECHECKDIALOG_H #define KEEPASSXC_UPDATECHECKDIALOG_H
#include <QUrl>
#include <QDialog>
#include <QScopedPointer>
#include "gui/MessageBox.h"
#include "config-keepassx.h" #include "config-keepassx.h"
#include "core/Global.h" #include "core/Global.h"
#include "gui/MessageBox.h"
#include "updatecheck/UpdateChecker.h" #include "updatecheck/UpdateChecker.h"
#include <QDialog>
#include <QScopedPointer>
#include <QUrl>
namespace Ui namespace Ui
{ {
@ -33,7 +33,7 @@ namespace Ui
class UpdateCheckDialog : public QDialog class UpdateCheckDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit UpdateCheckDialog(QWidget* parent = nullptr); explicit UpdateCheckDialog(QWidget* parent = nullptr);
@ -46,5 +46,4 @@ private:
QScopedPointer<Ui::UpdateCheckDialog> m_ui; QScopedPointer<Ui::UpdateCheckDialog> m_ui;
}; };
#endif // KEEPASSXC_UPDATECHECKDIALOG_H
#endif //KEEPASSXC_UPDATECHECKDIALOG_H

View file

@ -81,7 +81,7 @@ void DatabaseSettingsWidgetEncryption::initialize()
isDirty = true; isDirty = true;
} }
if (!m_db->key()) { if (!m_db->key()) {
m_db->setKey(QSharedPointer<CompositeKey>::create()); m_db->setKey(QSharedPointer<CompositeKey>::create(), true, false, false);
m_db->setCipher(KeePass2::CIPHER_AES256); m_db->setCipher(KeePass2::CIPHER_AES256);
isDirty = true; isDirty = true;
} }
@ -127,8 +127,7 @@ void DatabaseSettingsWidgetEncryption::setupAlgorithmComboBox()
{ {
m_ui->algorithmComboBox->clear(); m_ui->algorithmComboBox->clear();
for (auto& cipher : asConst(KeePass2::CIPHERS)) { for (auto& cipher : asConst(KeePass2::CIPHERS)) {
m_ui->algorithmComboBox->addItem(cipher.second.toUtf8(), m_ui->algorithmComboBox->addItem(cipher.second.toUtf8(), cipher.first.toByteArray());
cipher.first.toByteArray());
} }
int cipherIndex = m_ui->algorithmComboBox->findData(m_db->cipher().toByteArray()); int cipherIndex = m_ui->algorithmComboBox->findData(m_db->cipher().toByteArray());
if (cipherIndex > -1) { if (cipherIndex > -1) {
@ -142,8 +141,7 @@ void DatabaseSettingsWidgetEncryption::setupKdfComboBox()
bool block = m_ui->kdfComboBox->blockSignals(true); bool block = m_ui->kdfComboBox->blockSignals(true);
m_ui->kdfComboBox->clear(); m_ui->kdfComboBox->clear();
for (auto& kdf : asConst(KeePass2::KDFS)) { for (auto& kdf : asConst(KeePass2::KDFS)) {
m_ui->kdfComboBox->addItem(kdf.second.toUtf8(), m_ui->kdfComboBox->addItem(kdf.second.toUtf8(), kdf.first.toByteArray());
kdf.first.toByteArray());
} }
m_ui->kdfComboBox->blockSignals(block); m_ui->kdfComboBox->blockSignals(block);
} }

View file

@ -136,34 +136,34 @@ bool DatabaseSettingsWidgetMasterKey::save()
auto newKey = QSharedPointer<CompositeKey>::create(); auto newKey = QSharedPointer<CompositeKey>::create();
QSharedPointer<Key> passwordKey; QSharedPointer<Key> oldPasswordKey;
QSharedPointer<Key> fileKey; QSharedPointer<Key> oldFileKey;
QSharedPointer<ChallengeResponseKey> ykCrKey; QSharedPointer<ChallengeResponseKey> oldChallengeResponse;
for (const auto& key : m_db->key()->keys()) { for (const auto& key : m_db->key()->keys()) {
if (key->uuid() == PasswordKey::UUID) { if (key->uuid() == PasswordKey::UUID) {
passwordKey = key; oldPasswordKey = key;
} else if (key->uuid() == FileKey::UUID) { } else if (key->uuid() == FileKey::UUID) {
fileKey = key; oldFileKey = key;
} }
} }
for (const auto& key : m_db->key()->challengeResponseKeys()) { for (const auto& key : m_db->key()->challengeResponseKeys()) {
if (key->uuid() == YkChallengeResponseKey::UUID) { if (key->uuid() == YkChallengeResponseKey::UUID) {
ykCrKey = key; oldChallengeResponse = key;
} }
} }
if (!addToCompositeKey(m_passwordEditWidget, newKey, passwordKey)) { if (!addToCompositeKey(m_passwordEditWidget, newKey, oldPasswordKey)) {
return false; return false;
} }
if (!addToCompositeKey(m_keyFileEditWidget, newKey, fileKey)) { if (!addToCompositeKey(m_keyFileEditWidget, newKey, oldFileKey)) {
return false; return false;
} }
#ifdef WITH_XC_YUBIKEY #ifdef WITH_XC_YUBIKEY
if (!addToCompositeKey(m_yubiKeyEditWidget, newKey, ykCrKey)) { if (!addToCompositeKey(m_yubiKeyEditWidget, newKey, oldChallengeResponse)) {
return false; return false;
} }
#endif #endif
@ -177,7 +177,7 @@ bool DatabaseSettingsWidgetMasterKey::save()
return false; return false;
} }
if (m_passwordEditWidget->visiblePage() == KeyComponentWidget::AddNew) { if (m_passwordEditWidget->isEmpty()) {
auto answer = MessageBox::warning(this, auto answer = MessageBox::warning(this,
tr("No password set"), tr("No password set"),
tr("WARNING! You have not set a password. Using a database without " tr("WARNING! You have not set a password. Using a database without "
@ -190,9 +190,13 @@ bool DatabaseSettingsWidgetMasterKey::save()
} }
} }
m_db->setKey(newKey); m_db->setKey(newKey, true, false, false);
emit editFinished(true); emit editFinished(true);
if (m_isDirty) {
m_db->markAsModified();
}
return true; return true;
} }

View file

@ -142,6 +142,7 @@ void EditEntryWidget::setupMain()
connect(m_mainUi->togglePasswordGeneratorButton, SIGNAL(toggled(bool)), SLOT(togglePasswordGeneratorButton(bool))); connect(m_mainUi->togglePasswordGeneratorButton, SIGNAL(toggled(bool)), SLOT(togglePasswordGeneratorButton(bool)));
#ifdef WITH_XC_NETWORKING #ifdef WITH_XC_NETWORKING
connect(m_mainUi->fetchFaviconButton, SIGNAL(clicked()), m_iconsWidget, SLOT(downloadFavicon())); connect(m_mainUi->fetchFaviconButton, SIGNAL(clicked()), m_iconsWidget, SLOT(downloadFavicon()));
connect(m_mainUi->urlEdit, SIGNAL(textChanged(QString)), m_iconsWidget, SLOT(setUrl(QString)));
#endif #endif
connect(m_mainUi->expireCheck, SIGNAL(toggled(bool)), m_mainUi->expireDatePicker, SLOT(setEnabled(bool))); connect(m_mainUi->expireCheck, SIGNAL(toggled(bool)), m_mainUi->expireDatePicker, SLOT(setEnabled(bool)));
connect(m_mainUi->notesEnabled, SIGNAL(toggled(bool)), this, SLOT(toggleHideNotes(bool))); connect(m_mainUi->notesEnabled, SIGNAL(toggled(bool)), this, SLOT(toggleHideNotes(bool)));
@ -193,6 +194,8 @@ void EditEntryWidget::setupAdvanced()
void EditEntryWidget::setupIcon() void EditEntryWidget::setupIcon()
{ {
addPage(tr("Icon"), FilePath::instance()->icon("apps", "preferences-desktop-icons"), m_iconsWidget); addPage(tr("Icon"), FilePath::instance()->icon("apps", "preferences-desktop-icons"), m_iconsWidget);
connect(this, SIGNAL(accepted()), m_iconsWidget, SLOT(abortRequests()));
connect(this, SIGNAL(rejected()), m_iconsWidget, SLOT(abortRequests()));
} }
void EditEntryWidget::setupAutoType() void EditEntryWidget::setupAutoType()
@ -764,7 +767,6 @@ void EditEntryWidget::setForms(Entry* entry, bool restore)
iconStruct.uuid = entry->iconUuid(); iconStruct.uuid = entry->iconUuid();
iconStruct.number = entry->iconNumber(); iconStruct.number = entry->iconNumber();
m_iconsWidget->load(entry->uuid(), m_db, iconStruct, entry->webUrl()); m_iconsWidget->load(entry->uuid(), m_db, iconStruct, entry->webUrl());
connect(m_mainUi->urlEdit, SIGNAL(textChanged(QString)), m_iconsWidget, SLOT(setUrl(QString)));
m_autoTypeUi->enableButton->setChecked(entry->autoTypeEnabled()); m_autoTypeUi->enableButton->setChecked(entry->autoTypeEnabled());
if (entry->defaultAutoTypeSequence().isEmpty()) { if (entry->defaultAutoTypeSequence().isEmpty()) {

View file

@ -36,9 +36,9 @@ public:
{ {
} }
void set(Group* temporaryGroup) const void set(Group* temporaryGroup, QSharedPointer<Database> database) const
{ {
editPage->set(widget, temporaryGroup); editPage->set(widget, temporaryGroup, database);
} }
void assign() const void assign() const
@ -133,7 +133,7 @@ void EditGroupWidget::loadGroup(Group* group, bool create, const QSharedPointer<
m_editWidgetProperties->setCustomData(m_temporaryGroup->customData()); m_editWidgetProperties->setCustomData(m_temporaryGroup->customData());
for (const ExtraPage& page : asConst(m_extraPages)) { for (const ExtraPage& page : asConst(m_extraPages)) {
page.set(m_temporaryGroup.data()); page.set(m_temporaryGroup.data(), m_db);
} }
setCurrentPage(0); setCurrentPage(0);

View file

@ -43,7 +43,7 @@ public:
virtual QString name() = 0; virtual QString name() = 0;
virtual QIcon icon() = 0; virtual QIcon icon() = 0;
virtual QWidget* createWidget() = 0; virtual QWidget* createWidget() = 0;
virtual void set(QWidget* widget, Group* tempoaryGroup) = 0; virtual void set(QWidget* widget, Group* tempoaryGroup, QSharedPointer<Database> database) = 0;
virtual void assign(QWidget* widget) = 0; virtual void assign(QWidget* widget) = 0;
}; };

View file

@ -124,7 +124,7 @@ QVariant GroupModel::data(const QModelIndex& index, int role) const
Group* group = groupFromIndex(index); Group* group = groupFromIndex(index);
if (role == Qt::DisplayRole) { if (role == Qt::DisplayRole) {
QString nameTemplate = tr("%1", "Template for name without annotation"); QString nameTemplate = "%1";
#if defined(WITH_XC_KEESHARE) #if defined(WITH_XC_KEESHARE)
nameTemplate = KeeShare::indicatorSuffix(group, nameTemplate); nameTemplate = KeeShare::indicatorSuffix(group, nameTemplate);
#endif #endif

View file

@ -40,7 +40,10 @@ PasswordEditWidget::~PasswordEditWidget()
bool PasswordEditWidget::addToCompositeKey(QSharedPointer<CompositeKey> key) bool PasswordEditWidget::addToCompositeKey(QSharedPointer<CompositeKey> key)
{ {
key->addKey(QSharedPointer<PasswordKey>::create(m_compUi->enterPasswordEdit->text())); QString pw = m_compUi->enterPasswordEdit->text();
if (!pw.isEmpty()) {
key->addKey(QSharedPointer<PasswordKey>::create(pw));
}
return true; return true;
} }
@ -60,6 +63,11 @@ bool PasswordEditWidget::isPasswordVisible() const
return m_compUi->togglePasswordButton->isChecked(); return m_compUi->togglePasswordButton->isChecked();
} }
bool PasswordEditWidget::isEmpty() const
{
return m_compUi->enterPasswordEdit->text().isEmpty();
}
QWidget* PasswordEditWidget::componentEditWidget() QWidget* PasswordEditWidget::componentEditWidget()
{ {
m_compEditWidget = new QWidget(); m_compEditWidget = new QWidget();
@ -86,11 +94,6 @@ void PasswordEditWidget::initComponentEditWidget(QWidget* widget)
bool PasswordEditWidget::validate(QString& errorMessage) const bool PasswordEditWidget::validate(QString& errorMessage) const
{ {
if (m_compUi->enterPasswordEdit->text().isEmpty()) {
errorMessage = tr("Password cannot be empty.");
return false;
}
if (m_compUi->enterPasswordEdit->text() != m_compUi->repeatPasswordEdit->text()) { if (m_compUi->enterPasswordEdit->text() != m_compUi->repeatPasswordEdit->text()) {
errorMessage = tr("Passwords do not match."); errorMessage = tr("Passwords do not match.");
return false; return false;

View file

@ -38,6 +38,7 @@ public:
bool addToCompositeKey(QSharedPointer<CompositeKey> key) override; bool addToCompositeKey(QSharedPointer<CompositeKey> key) override;
void setPasswordVisible(bool visible); void setPasswordVisible(bool visible);
bool isPasswordVisible() const; bool isPasswordVisible() const;
bool isEmpty() const;
bool validate(QString& errorMessage) const override; bool validate(QString& errorMessage) const override;
protected: protected:

View file

@ -93,7 +93,7 @@ void KeeShare::setOwn(const KeeShareSettings::Own& own)
bool KeeShare::isShared(const Group* group) bool KeeShare::isShared(const Group* group)
{ {
return group->customData()->contains(KeeShare_Reference); return group && group->customData()->contains(KeeShare_Reference);
} }
KeeShareSettings::Reference KeeShare::referenceOf(const Group* group) KeeShareSettings::Reference KeeShare::referenceOf(const Group* group)
@ -142,6 +142,40 @@ bool KeeShare::isEnabled(const Group* group)
return (reference.isImporting() && active.in) || (reference.isExporting() && active.out); return (reference.isImporting() && active.in) || (reference.isExporting() && active.out);
} }
const Group* KeeShare::resolveSharedGroup(const Group* group)
{
while (group && group != group->database()->rootGroup()) {
if (isShared(group)) {
return group;
}
group = group->parentGroup();
}
return nullptr;
}
QString KeeShare::sharingLabel(const Group* group)
{
auto* share = resolveSharedGroup(group);
if (!share) {
return {};
}
const auto reference = referenceOf(share);
switch (reference.type) {
case KeeShareSettings::Inactive:
return tr("Disabled share %1").arg(reference.path);
case KeeShareSettings::ImportFrom:
return tr("Import from share %1").arg(reference.path);
case KeeShareSettings::ExportTo:
return tr("Export to share %1").arg(reference.path);
case KeeShareSettings::SynchronizeWith:
return tr("Synchronize with share %1").arg(reference.path);
}
return {};
}
QPixmap KeeShare::indicatorBadge(const Group* group, QPixmap pixmap) QPixmap KeeShare::indicatorBadge(const Group* group, QPixmap pixmap)
{ {
if (!isShared(group)) { if (!isShared(group)) {

View file

@ -43,6 +43,9 @@ public:
static bool isShared(const Group* group); static bool isShared(const Group* group);
static bool isEnabled(const Group* group); static bool isEnabled(const Group* group);
static const Group* resolveSharedGroup(const Group* group);
static QString sharingLabel(const Group* group);
static KeeShareSettings::Own own(); static KeeShareSettings::Own own();
static KeeShareSettings::Active active(); static KeeShareSettings::Active active();
static KeeShareSettings::Foreign foreign(); static KeeShareSettings::Foreign foreign();

View file

@ -183,7 +183,7 @@ void SettingsWidgetKeeShare::exportCertificate()
} }
const auto filetype = tr("key.share", "Filetype for KeeShare key"); const auto filetype = tr("key.share", "Filetype for KeeShare key");
const auto filters = QString("%1 (*." + filetype + ");;%2 (*)").arg(tr("KeeShare key file"), tr("All files")); const auto filters = QString("%1 (*." + filetype + ");;%2 (*)").arg(tr("KeeShare key file"), tr("All files"));
QString filename = tr("%1.%2", "Template for KeeShare key file").arg(m_own.certificate.signer).arg(filetype); QString filename = QString("%1.%2").arg(m_own.certificate.signer).arg(filetype);
filename = fileDialog()->getSaveFileName( filename = fileDialog()->getSaveFileName(
this, tr("Select path"), defaultDirPath, filters, nullptr, QFileDialog::Options(0), filetype, filename); this, tr("Select path"), defaultDirPath, filters, nullptr, QFileDialog::Options(0), filetype, filename);
if (filename.isEmpty()) { if (filename.isEmpty()) {

View file

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>327</width> <width>378</width>
<height>434</height> <height>508</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0"> <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0">
@ -82,7 +82,7 @@
<item row="2" column="0"> <item row="2" column="0">
<widget class="QLabel" name="ownCertificateSignerLabel"> <widget class="QLabel" name="ownCertificateSignerLabel">
<property name="text"> <property name="text">
<string>Signer</string> <string>Signer:</string>
</property> </property>
</widget> </widget>
</item> </item>

View file

@ -25,6 +25,7 @@
#include "core/Entry.h" #include "core/Entry.h"
#include "core/FilePath.h" #include "core/FilePath.h"
#include "core/FileWatcher.h" #include "core/FileWatcher.h"
#include "core/Global.h"
#include "core/Group.h" #include "core/Group.h"
#include "core/Merger.h" #include "core/Merger.h"
#include "core/Metadata.h" #include "core/Metadata.h"
@ -191,7 +192,7 @@ void ShareObserver::reinitialize()
const auto active = KeeShare::active(); const auto active = KeeShare::active();
QList<Update> updated; QList<Update> updated;
QList<Group*> groups = m_db->rootGroup()->groupsRecursive(true); const QList<Group*> groups = m_db->rootGroup()->groupsRecursive(true);
for (Group* group : groups) { for (Group* group : groups) {
Update couple{group, m_groupToReference.value(group), KeeShare::referenceOf(group)}; Update couple{group, m_groupToReference.value(group), KeeShare::referenceOf(group)};
if (couple.oldReference == couple.newReference) { if (couple.oldReference == couple.newReference) {
@ -214,7 +215,9 @@ void ShareObserver::reinitialize()
QStringList success; QStringList success;
QStringList warning; QStringList warning;
QStringList error; QStringList error;
for (const auto& update : updated) { QMap<QString, QStringList> imported;
QMap<QString, QStringList> exported;
for (const auto& update : asConst(updated)) {
if (!update.oldReference.path.isEmpty()) { if (!update.oldReference.path.isEmpty()) {
m_fileWatcher->removePath(update.oldReference.path); m_fileWatcher->removePath(update.oldReference.path);
} }
@ -222,8 +225,12 @@ void ShareObserver::reinitialize()
if (!update.newReference.path.isEmpty() && update.newReference.type != KeeShareSettings::Inactive) { if (!update.newReference.path.isEmpty() && update.newReference.type != KeeShareSettings::Inactive) {
m_fileWatcher->addPath(update.newReference.path); m_fileWatcher->addPath(update.newReference.path);
} }
if (update.newReference.isExporting()) {
exported[update.newReference.path] << update.group->name();
}
if (update.newReference.isImporting()) { if (update.newReference.isImporting()) {
imported[update.newReference.path] << update.group->name();
const auto result = this->importFromReferenceContainer(update.newReference.path); const auto result = this->importFromReferenceContainer(update.newReference.path);
if (!result.isValid()) { if (!result.isValid()) {
// tolerable result - blocked import or missing source // tolerable result - blocked import or missing source
@ -241,6 +248,16 @@ void ShareObserver::reinitialize()
} }
} }
} }
for (auto it = imported.cbegin(); it != imported.cend(); ++it) {
if (it.value().count() > 1) {
warning << tr("Multiple import source path to %1 in %2").arg(it.key(), it.value().join(", "));
}
}
for (auto it = exported.cbegin(); it != exported.cend(); ++it) {
if (it.value().count() > 1) {
error << tr("Conflicting export target path %1 in %2").arg(it.key(), it.value().join(", "));
}
}
notifyAbout(success, warning, error); notifyAbout(success, warning, error);
} }
@ -659,8 +676,10 @@ ShareObserver::Result ShareObserver::exportIntoReferenceSignedContainer(const Ke
QuaZipFile file(&zip); QuaZipFile file(&zip);
const auto signatureOpened = file.open(QIODevice::WriteOnly, QuaZipNewInfo(KeeShare_Signature)); const auto signatureOpened = file.open(QIODevice::WriteOnly, QuaZipNewInfo(KeeShare_Signature));
if (!signatureOpened) { if (!signatureOpened) {
::qWarning("Embedding signature failed: %d", zip.getZipError()); ::qWarning("Embedding signature failed: Could not open file to write (%d)", zip.getZipError());
return {reference.path, Result::Error, tr("Could not embed signature (%1)").arg(file.getZipError())}; return {reference.path,
Result::Error,
tr("Could not embed signature: Could not open file to write (%1)").arg(file.getZipError())};
} }
QTextStream stream(&file); QTextStream stream(&file);
KeeShareSettings::Sign sign; KeeShareSettings::Sign sign;
@ -672,8 +691,10 @@ ShareObserver::Result ShareObserver::exportIntoReferenceSignedContainer(const Ke
stream << KeeShareSettings::Sign::serialize(sign); stream << KeeShareSettings::Sign::serialize(sign);
stream.flush(); stream.flush();
if (file.getZipError() != ZIP_OK) { if (file.getZipError() != ZIP_OK) {
::qWarning("Embedding signature failed: %d", zip.getZipError()); ::qWarning("Embedding signature failed: Could not write file (%d)", zip.getZipError());
return {reference.path, Result::Error, tr("Could not embed signature (%1)").arg(file.getZipError())}; return {reference.path,
Result::Error,
tr("Could not embed signature: Could not write file (%1)").arg(file.getZipError())};
} }
file.close(); file.close();
} }
@ -681,14 +702,18 @@ ShareObserver::Result ShareObserver::exportIntoReferenceSignedContainer(const Ke
QuaZipFile file(&zip); QuaZipFile file(&zip);
const auto dbOpened = file.open(QIODevice::WriteOnly, QuaZipNewInfo(KeeShare_Container)); const auto dbOpened = file.open(QIODevice::WriteOnly, QuaZipNewInfo(KeeShare_Container));
if (!dbOpened) { if (!dbOpened) {
::qWarning("Embedding database failed: %d", zip.getZipError()); ::qWarning("Embedding database failed: Could not open file to write (%d)", zip.getZipError());
return {reference.path, Result::Error, tr("Could not embed database (%1)").arg(file.getZipError())}; return {reference.path,
} Result::Error,
if (file.getZipError() != ZIP_OK) { tr("Could not embed database: Could not open file to write (%1)").arg(file.getZipError())};
::qWarning("Embedding database failed: %d", zip.getZipError());
return {reference.path, Result::Error, tr("Could not embed database (%1)").arg(file.getZipError())};
} }
file.write(bytes); file.write(bytes);
if (file.getZipError() != ZIP_OK) {
::qWarning("Embedding database failed: Could not write file (%d)", zip.getZipError());
return {reference.path,
Result::Error,
tr("Could not embed database: Could not write file (%1)").arg(file.getZipError())};
}
file.close(); file.close();
} }
zip.close(); zip.close();
@ -725,28 +750,55 @@ ShareObserver::Result ShareObserver::exportIntoReferenceUnsignedContainer(const
QList<ShareObserver::Result> ShareObserver::exportIntoReferenceContainers() QList<ShareObserver::Result> ShareObserver::exportIntoReferenceContainers()
{ {
QList<Result> results; QList<Result> results;
struct Reference
{
KeeShareSettings::Reference config;
const Group* group;
};
QMap<QString, QList<Reference>> references;
const auto groups = m_db->rootGroup()->groupsRecursive(true); const auto groups = m_db->rootGroup()->groupsRecursive(true);
for (const auto* group : groups) { for (const auto* group : groups) {
const auto reference = KeeShare::referenceOf(group); const auto reference = KeeShare::referenceOf(group);
if (!reference.isExporting()) { if (!reference.isExporting()) {
continue; continue;
} }
references[reference.path] << Reference{reference, group};
}
m_fileWatcher->ignoreFileChanges(reference.path); for (auto it = references.cbegin(); it != references.cend(); ++it) {
QScopedPointer<Database> targetDb(exportIntoContainer(reference, group)); if (it.value().count() != 1) {
QFileInfo info(reference.path); const auto path = it.value().first().config.path;
QStringList groups;
for (const auto& reference : it.value()) {
groups << reference.group->name();
}
results << Result{
path, Result::Error, tr("Conflicting export target path %1 in %2").arg(path, groups.join(", "))};
}
}
if (!results.isEmpty()) {
// We need to block export due to config
return results;
}
for (auto it = references.cbegin(); it != references.cend(); ++it) {
const auto& reference = it.value().first();
m_fileWatcher->ignoreFileChanges(reference.config.path);
QScopedPointer<Database> targetDb(exportIntoContainer(reference.config, reference.group));
QFileInfo info(reference.config.path);
if (isOfExportType(info, KeeShare::signedContainerFileType())) { if (isOfExportType(info, KeeShare::signedContainerFileType())) {
results << exportIntoReferenceSignedContainer(reference, targetDb.data()); results << exportIntoReferenceSignedContainer(reference.config, targetDb.data());
m_fileWatcher->observeFileChanges(true); m_fileWatcher->observeFileChanges(true);
continue; continue;
} }
if (isOfExportType(info, KeeShare::unsignedContainerFileType())) { if (isOfExportType(info, KeeShare::unsignedContainerFileType())) {
results << exportIntoReferenceUnsignedContainer(reference, targetDb.data()); results << exportIntoReferenceUnsignedContainer(reference.config, targetDb.data());
m_fileWatcher->observeFileChanges(true); m_fileWatcher->observeFileChanges(true);
continue; continue;
} }
Q_ASSERT(false); Q_ASSERT(false);
results << Result{reference.path, Result::Error, tr("Unexpected export error occurred")}; results << Result{reference.config.path, Result::Error, tr("Unexpected export error occurred")};
} }
return results; return results;
} }
@ -759,6 +811,7 @@ void ShareObserver::handleDatabaseSaved()
QStringList error; QStringList error;
QStringList warning; QStringList warning;
QStringList success; QStringList success;
const auto results = exportIntoReferenceContainers(); const auto results = exportIntoReferenceContainers();
for (const Result& result : results) { for (const Result& result : results) {
if (!result.isValid()) { if (!result.isValid()) {
@ -787,7 +840,7 @@ ShareObserver::Result::Result(const QString& path, ShareObserver::Result::Type t
bool ShareObserver::Result::isValid() const bool ShareObserver::Result::isValid() const
{ {
return !path.isEmpty() || !message.isEmpty() || !message.isEmpty() || !message.isEmpty(); return !path.isEmpty() || !message.isEmpty();
} }
bool ShareObserver::Result::isError() const bool ShareObserver::Result::isError() const

View file

@ -42,10 +42,10 @@ QWidget* EditGroupPageKeeShare::createWidget()
return new EditGroupWidgetKeeShare(); return new EditGroupWidgetKeeShare();
} }
void EditGroupPageKeeShare::set(QWidget* widget, Group* temporaryGroup) void EditGroupPageKeeShare::set(QWidget* widget, Group* temporaryGroup, QSharedPointer<Database> database)
{ {
EditGroupWidgetKeeShare* settingsWidget = reinterpret_cast<EditGroupWidgetKeeShare*>(widget); EditGroupWidgetKeeShare* settingsWidget = reinterpret_cast<EditGroupWidgetKeeShare*>(widget);
settingsWidget->setGroup(temporaryGroup); settingsWidget->setGroup(temporaryGroup, database);
} }
void EditGroupPageKeeShare::assign(QWidget* widget) void EditGroupPageKeeShare::assign(QWidget* widget)

View file

@ -30,7 +30,7 @@ public:
QString name() override; QString name() override;
QIcon icon() override; QIcon icon() override;
QWidget* createWidget() override; QWidget* createWidget() override;
void set(QWidget* widget, Group* temporaryGroup) override; void set(QWidget* widget, Group* temporaryGroup, QSharedPointer<Database> database) override;
void assign(QWidget* widget) override; void assign(QWidget* widget) override;
}; };

View file

@ -54,6 +54,7 @@ EditGroupWidgetKeeShare::EditGroupWidgetKeeShare(QWidget* parent)
connect(m_ui->pathEdit, SIGNAL(editingFinished()), SLOT(selectPath())); connect(m_ui->pathEdit, SIGNAL(editingFinished()), SLOT(selectPath()));
connect(m_ui->pathSelectionButton, SIGNAL(pressed()), SLOT(launchPathSelectionDialog())); connect(m_ui->pathSelectionButton, SIGNAL(pressed()), SLOT(launchPathSelectionDialog()));
connect(m_ui->typeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(selectType())); connect(m_ui->typeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(selectType()));
connect(m_ui->clearButton, SIGNAL(clicked(bool)), SLOT(clearInputs()));
connect(KeeShare::instance(), SIGNAL(activeChanged()), SLOT(showSharingState())); connect(KeeShare::instance(), SIGNAL(activeChanged()), SLOT(showSharingState()));
@ -84,12 +85,13 @@ EditGroupWidgetKeeShare::~EditGroupWidgetKeeShare()
{ {
} }
void EditGroupWidgetKeeShare::setGroup(Group* temporaryGroup) void EditGroupWidgetKeeShare::setGroup(Group* temporaryGroup, QSharedPointer<Database> database)
{ {
if (m_temporaryGroup) { if (m_temporaryGroup) {
m_temporaryGroup->disconnect(this); m_temporaryGroup->disconnect(this);
} }
m_database = database;
m_temporaryGroup = temporaryGroup; m_temporaryGroup = temporaryGroup;
if (m_temporaryGroup) { if (m_temporaryGroup) {
@ -127,9 +129,43 @@ void EditGroupWidgetKeeShare::showSharingState()
.arg(supportedExtensions.join(", ")), .arg(supportedExtensions.join(", ")),
MessageWidget::Warning); MessageWidget::Warning);
return; return;
} else {
m_ui->messageWidget->hide();
} }
const auto groups = m_database->rootGroup()->groupsRecursive(true);
bool conflictExport = false;
bool multipleImport = false;
bool cycleImportExport = false;
for (const auto* group : groups) {
if (group->uuid() == m_temporaryGroup->uuid()) {
continue;
}
const auto other = KeeShare::referenceOf(group);
if (other.path != reference.path) {
continue;
}
multipleImport |= other.isImporting() && reference.isImporting();
conflictExport |= other.isExporting() && reference.isExporting();
cycleImportExport |=
(other.isImporting() && reference.isExporting()) || (other.isExporting() && reference.isImporting());
}
if (conflictExport) {
m_ui->messageWidget->showMessage(tr("The export container %1 is already referenced.").arg(reference.path),
MessageWidget::Error);
return;
}
if (multipleImport) {
m_ui->messageWidget->showMessage(tr("The import container %1 is already imported.").arg(reference.path),
MessageWidget::Warning);
return;
}
if (cycleImportExport) {
m_ui->messageWidget->showMessage(
tr("The container %1 imported and export by different groups.").arg(reference.path),
MessageWidget::Warning);
return;
}
m_ui->messageWidget->hide();
} }
const auto active = KeeShare::active(); const auto active = KeeShare::active();
if (!active.in && !active.out) { if (!active.in && !active.out) {
@ -166,6 +202,17 @@ void EditGroupWidgetKeeShare::update()
m_ui->togglePasswordButton->setChecked(false); m_ui->togglePasswordButton->setChecked(false);
} }
void EditGroupWidgetKeeShare::clearInputs()
{
if (m_temporaryGroup) {
KeeShare::setReferenceTo(m_temporaryGroup, KeeShareSettings::Reference());
}
m_ui->passwordEdit->clear();
m_ui->pathEdit->clear();
m_ui->typeComboBox->setCurrentIndex(KeeShareSettings::Inactive);
m_ui->passwordGenerator->setVisible(false);
}
void EditGroupWidgetKeeShare::togglePasswordGeneratorButton(bool checked) void EditGroupWidgetKeeShare::togglePasswordGeneratorButton(bool checked)
{ {
m_ui->passwordGenerator->regeneratePassword(); m_ui->passwordGenerator->regeneratePassword();

View file

@ -37,13 +37,14 @@ public:
explicit EditGroupWidgetKeeShare(QWidget* parent = nullptr); explicit EditGroupWidgetKeeShare(QWidget* parent = nullptr);
~EditGroupWidgetKeeShare(); ~EditGroupWidgetKeeShare();
void setGroup(Group* temporaryGroup); void setGroup(Group* temporaryGroup, QSharedPointer<Database> database);
private slots: private slots:
void showSharingState(); void showSharingState();
private slots: private slots:
void update(); void update();
void clearInputs();
void selectType(); void selectType();
void selectPassword(); void selectPassword();
void launchPathSelectionDialog(); void launchPathSelectionDialog();
@ -54,6 +55,7 @@ private slots:
private: private:
QScopedPointer<Ui::EditGroupWidgetKeeShare> m_ui; QScopedPointer<Ui::EditGroupWidgetKeeShare> m_ui;
QPointer<Group> m_temporaryGroup; QPointer<Group> m_temporaryGroup;
QSharedPointer<Database> m_database;
}; };
#endif // KEEPASSXC_EDITGROUPWIDGETKEESHARE_H #endif // KEEPASSXC_EDITGROUPWIDGETKEESHARE_H

View file

@ -97,6 +97,13 @@
<item row="5" column="1"> <item row="5" column="1">
<widget class="PasswordGeneratorWidget" name="passwordGenerator" native="true"/> <widget class="PasswordGeneratorWidget" name="passwordGenerator" native="true"/>
</item> </item>
<item row="6" column="1">
<widget class="QPushButton" name="clearButton">
<property name="text">
<string>Clear</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>

View file

@ -67,19 +67,13 @@ int main(int argc, char** argv)
Bootstrap::bootstrapApplication(); Bootstrap::bootstrapApplication();
QCommandLineParser parser; QCommandLineParser parser;
parser.setApplicationDescription( parser.setApplicationDescription(QObject::tr("KeePassXC - cross-platform password manager"));
QObject::tr("KeePassXC - cross-platform password manager"));
parser.addPositionalArgument( parser.addPositionalArgument(
"filename", "filename", QObject::tr("filenames of the password databases to open (*.kdbx)"), "[filename(s)]");
QObject::tr("filenames of the password databases to open (*.kdbx)"),
"[filename(s)]");
QCommandLineOption configOption( QCommandLineOption configOption("config", QObject::tr("path to a custom config file"), "config");
"config", QObject::tr("path to a custom config file"), "config"); QCommandLineOption keyfileOption("keyfile", QObject::tr("key file of the database"), "keyfile");
QCommandLineOption keyfileOption( QCommandLineOption pwstdinOption("pw-stdin", QObject::tr("read password of the database from stdin"));
"keyfile", QObject::tr("key file of the database"), "keyfile");
QCommandLineOption pwstdinOption("pw-stdin",
QObject::tr("read password of the database from stdin"));
// This is needed under Windows where clients send --parent-window parameter with Native Messaging connect method // This is needed under Windows where clients send --parent-window parameter with Native Messaging connect method
QCommandLineOption parentWindowOption(QStringList() << "pw" QCommandLineOption parentWindowOption(QStringList() << "pw"
<< "parent-window", << "parent-window",
@ -106,9 +100,7 @@ int main(int argc, char** argv)
if (!fileNames.isEmpty()) { if (!fileNames.isEmpty()) {
app.sendFileNamesToRunningInstance(fileNames); app.sendFileNamesToRunningInstance(fileNames);
} }
qWarning() << QObject::tr("Another instance of KeePassXC is already running.") qWarning() << QObject::tr("Another instance of KeePassXC is already running.").toUtf8().constData();
.toUtf8()
.constData();
return 0; return 0;
} }

View file

@ -19,7 +19,7 @@
#include <QCoreApplication> #include <QCoreApplication>
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#include <Winsock2.h> #include <winsock2.h>
#endif #endif
NativeMessagingHost::NativeMessagingHost() NativeMessagingHost::NativeMessagingHost()
@ -36,14 +36,12 @@ NativeMessagingHost::NativeMessagingHost()
} }
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
m_running.store(true); m_running.store(true);
m_future = m_future = QtConcurrent::run(this, &NativeMessagingHost::readNativeMessages);
QtConcurrent::run(this, static_cast<void (NativeMessagingHost::*)()>(&NativeMessagingHost::readNativeMessages));
#endif #endif
connect(m_localSocket, SIGNAL(readyRead()), this, SLOT(newLocalMessage())); connect(m_localSocket, SIGNAL(readyRead()), this, SLOT(newLocalMessage()));
connect(m_localSocket, SIGNAL(disconnected()), this, SLOT(deleteSocket())); connect(m_localSocket, SIGNAL(disconnected()), this, SLOT(deleteSocket()));
connect(m_localSocket, connect(m_localSocket,
SIGNAL(stateChanged(QLocalSocket::LocalSocketState)), SIGNAL(stateChanged(QLocalSocket::LocalSocketState)),
this,
SLOT(socketStateChanged(QLocalSocket::LocalSocketState))); SLOT(socketStateChanged(QLocalSocket::LocalSocketState)));
} }

View file

@ -25,7 +25,7 @@ class NativeMessagingHost : public NativeMessagingBase
Q_OBJECT Q_OBJECT
public: public:
NativeMessagingHost(); NativeMessagingHost();
~NativeMessagingHost(); ~NativeMessagingHost() override;
public slots: public slots:
void newLocalMessage(); void newLocalMessage();
@ -33,12 +33,14 @@ public slots:
void socketStateChanged(QLocalSocket::LocalSocketState socketState); void socketStateChanged(QLocalSocket::LocalSocketState socketState);
private: private:
void readNativeMessages(); void readNativeMessages() override;
void readLength(); void readLength() override;
bool readStdIn(const quint32 length); bool readStdIn(const quint32 length) override;
private: private:
QLocalSocket* m_localSocket; QLocalSocket* m_localSocket;
Q_DISABLE_COPY(NativeMessagingHost)
}; };
#endif // NATIVEMESSAGINGHOST_H #endif // NATIVEMESSAGINGHOST_H

View file

@ -55,13 +55,29 @@ void catchUnixSignals(std::initializer_list<int> quitSignals)
sigaction(sig, &sa, nullptr); sigaction(sig, &sa, nullptr);
} }
} }
#else
#include <windows.h>
BOOL WINAPI ConsoleHandler(DWORD dwType)
{
switch (dwType) {
case CTRL_C_EVENT:
case CTRL_SHUTDOWN_EVENT:
case CTRL_LOGOFF_EVENT:
QCoreApplication::quit();
break;
}
return TRUE;
}
#endif #endif
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
QCoreApplication a(argc, argv); QCoreApplication a(argc, argv);
#if defined(Q_OS_UNIX) || defined(Q_OS_LINUX) #ifndef Q_OS_WIN
catchUnixSignals({SIGQUIT, SIGINT, SIGTERM, SIGHUP}); catchUnixSignals({SIGQUIT, SIGINT, SIGTERM, SIGHUP});
#else
SetConsoleCtrlHandler(static_cast<PHANDLER_ROUTINE>(ConsoleHandler), TRUE);
#endif #endif
NativeMessagingHost host; NativeMessagingHost host;
return a.exec(); return a.exec();

View file

@ -28,6 +28,7 @@ SymmetricCipherStream::SymmetricCipherStream(QIODevice* baseDevice,
, m_error(false) , m_error(false)
, m_isInitialized(false) , m_isInitialized(false)
, m_dataWritten(false) , m_dataWritten(false)
, m_streamCipher(false)
{ {
} }

View file

@ -16,11 +16,11 @@
*/ */
#include "UpdateChecker.h" #include "UpdateChecker.h"
#include "core/Config.h"
#include "config-keepassx.h" #include "config-keepassx.h"
#include "core/Config.h"
#include <QJsonObject> #include <QJsonObject>
#include <QtNetwork>
#include <QNetworkAccessManager> #include <QNetworkAccessManager>
#include <QtNetwork>
UpdateChecker* UpdateChecker::m_instance(nullptr); UpdateChecker* UpdateChecker::m_instance(nullptr);
@ -28,6 +28,7 @@ UpdateChecker::UpdateChecker(QObject* parent)
: QObject(parent) : QObject(parent)
, m_netMgr(new QNetworkAccessManager(this)) , m_netMgr(new QNetworkAccessManager(this))
, m_reply(nullptr) , m_reply(nullptr)
, m_isManuallyRequested(false)
{ {
} }

View file

@ -17,8 +17,8 @@
#ifndef KEEPASSXC_UPDATECHECK_H #ifndef KEEPASSXC_UPDATECHECK_H
#define KEEPASSXC_UPDATECHECK_H #define KEEPASSXC_UPDATECHECK_H
#include <QString>
#include <QObject> #include <QObject>
#include <QString>
class QNetworkAccessManager; class QNetworkAccessManager;
class QNetworkReply; class QNetworkReply;
@ -57,4 +57,4 @@ inline UpdateChecker* updateCheck()
return UpdateChecker::instance(); return UpdateChecker::instance();
} }
#endif //KEEPASSXC_UPDATECHECK_H #endif // KEEPASSXC_UPDATECHECK_H

View file

@ -177,8 +177,8 @@ void TestEntrySearcher::testAllAttributesAreSearched()
void TestEntrySearcher::testSearchTermParser() void TestEntrySearcher::testSearchTermParser()
{ {
// Test standard search terms // Test standard search terms
auto terms =
m_entrySearcher.parseSearchTerms("-test \"quoted \\\"string\\\"\" user:user pass:\"test me\" noquote "); m_entrySearcher.parseSearchTerms("-test \"quoted \\\"string\\\"\" user:user pass:\"test me\" noquote ");
auto terms = m_entrySearcher.m_searchTerms;
QCOMPARE(terms.length(), 5); QCOMPARE(terms.length(), 5);
@ -200,7 +200,8 @@ void TestEntrySearcher::testSearchTermParser()
QCOMPARE(terms[4]->word, QString("noquote")); QCOMPARE(terms[4]->word, QString("noquote"));
// Test wildcard and regex search terms // Test wildcard and regex search terms
terms = m_entrySearcher.parseSearchTerms("+url:*.google.com *user:\\d+\\w{2}"); m_entrySearcher.parseSearchTerms("+url:*.google.com *user:\\d+\\w{2}");
terms = m_entrySearcher.m_searchTerms;
QCOMPARE(terms.length(), 2); QCOMPARE(terms.length(), 2);

View file

@ -811,7 +811,6 @@ void TestGroup::testCopyDataFrom()
group3->setName("TestGroup3"); group3->setName("TestGroup3");
group3->customData()->set("testKey", "value"); group3->customData()->set("testKey", "value");
QSignalSpy spyGroupModified(group.data(), SIGNAL(groupModified())); QSignalSpy spyGroupModified(group.data(), SIGNAL(groupModified()));
QSignalSpy spyGroupDataChanged(group.data(), SIGNAL(groupDataChanged(Group*))); QSignalSpy spyGroupDataChanged(group.data(), SIGNAL(groupDataChanged(Group*)));

View file

@ -17,8 +17,8 @@
#include "TestUpdateCheck.h" #include "TestUpdateCheck.h"
#include "TestGlobal.h" #include "TestGlobal.h"
#include "updatecheck/UpdateChecker.h"
#include "crypto/Crypto.h" #include "crypto/Crypto.h"
#include "updatecheck/UpdateChecker.h"
QTEST_GUILESS_MAIN(TestUpdateCheck) QTEST_GUILESS_MAIN(TestUpdateCheck)

View file

@ -22,7 +22,7 @@
class TestUpdateCheck : public QObject class TestUpdateCheck : public QObject
{ {
Q_OBJECT Q_OBJECT
private slots: private slots:
void initTestCase(); void initTestCase();

142
utils/keepassxc-snap-helper.sh Executable file
View file

@ -0,0 +1,142 @@
#!/usr/bin/env bash
#
# KeePassXC Browser Extension Native Messaging Installer Tool
# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 or (at your option)
# version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set -e
DEBUG=false
JSON_BASE=$(cat << EOF
{
"name": "org.keepassxc.keepassxc_browser",
"description": "KeePassXC integration with native messaging support",
"path": "/snap/bin/keepassxc.proxy",
"type": "stdio",
__EXT__
}
EOF
)
JSON_FIREFOX=$(cat << EOF
"allowed_extensions": [
"keepassxc-browser@keepassxc.org"
]
EOF
)
JSON_CHROME=$(cat << EOF
"allowed_origins": [
"chrome-extension://iopaggbpplllidnfmcghoonnokmjoicf/",
"chrome-extension://oboonakemofpalcgghocfoadofidjkkk/"
]
EOF
)
JSON_OUT=""
BASE_DIR="."
INSTALL_DIR=""
INSTALL_FILE="org.keepassxc.keepassxc_browser.json"
buildJson() {
if [[ ! -z $1 ]]; then
# Insert Firefox data
JSON_OUT="${JSON_BASE/__EXT__/$JSON_FIREFOX}"
else
# Insert Chrome data
JSON_OUT="${JSON_BASE/__EXT__/$JSON_CHROME}"
fi
}
askBrowserSnap() {
if (whiptail --title "Snap Choice" --defaultno \
--yesno "Is this browser installed as a snap (usually NO)?" 8 60); then
# BASE_DIR="$1"
whiptail --title "Snap Choice" --msgbox "Sorry, browsers installed as snaps are not supported at this time" 8 50
exit 0
fi
}
setupFirefox() {
askBrowserSnap "./snap/firefox/common"
buildJson "firefox"
INSTALL_DIR="${BASE_DIR}/.mozilla/native-messaging-hosts"
}
setupChrome() {
buildJson
INSTALL_DIR="${BASE_DIR}/.config/google-chrome/NativeMessagingHosts"
}
setupChromium() {
askBrowserSnap "./snap/chromium/current"
buildJson
INSTALL_DIR="${BASE_DIR}/.config/chromium/NativeMessagingHosts"
}
setupVivaldi() {
buildJson
INSTALL_DIR="${BASE_DIR}/.config/vivaldi/NativeMessagingHosts"
}
setupTorBrowser() {
buildJson "firefox"
INSTALL_DIR="${BASE_DIR}/.tor-browser/app/Browser/TorBrowser/Data/Browser/.mozilla/native-messaging-hosts"
}
# --------------------------------
# Start of script
# --------------------------------
BROWSER=$(whiptail \
--title "Browser Selection" \
--menu "Choose a browser to integrate with KeePassXC:" \
15 60 5 \
"1" "Firefox" \
"2" "Chrome" \
"3" "Chromium" \
"4" "Vivaldi" \
"5" "Tor Browser" \
3>&1 1>&2 2>&3)
clear
exitstatus=$?
if [ $exitstatus = 0 ]; then
# Configure settings for the chosen browser
case "$BROWSER" in
1) setupFirefox ;;
2) setupChrome ;;
3) setupChromium ;;
4) setupVivaldi ;;
5) setupTorBrowser ;;
esac
# Install the JSON file
cd ~
mkdir -p "$INSTALL_DIR"
echo "$JSON_OUT" > ${INSTALL_DIR}/${INSTALL_FILE}
$DEBUG && echo "Installed to: ${INSTALL_DIR}/${INSTALL_FILE}"
whiptail \
--title "Installation Complete" \
--msgbox "You will need to restart your browser in order to connect to KeePassXC" \
8 50
else
whiptail --title "Installation Canceled" --msgbox "No changes were made to your system" 8 50
fi