mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-12-04 15:39:34 +01:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a954e9a4d8 | ||
|
|
95c449481e | ||
|
|
0b43607aa1 | ||
|
|
e75efb8bfb | ||
|
|
d83fee89bd | ||
|
|
98417d6465 | ||
|
|
0ea64afe92 | ||
|
|
a862f62fe8 | ||
|
|
5bd525a6dd | ||
|
|
af3d896bdf | ||
|
|
ceeb72a277 | ||
|
|
2c17fdcff0 | ||
|
|
41a7c96968 | ||
|
|
98d9dae087 | ||
|
|
2033174d95 | ||
|
|
606e36acf3 | ||
|
|
0422943d52 | ||
|
|
0024f2e30f | ||
|
|
abe5e8ecea | ||
|
|
61503a8047 | ||
|
|
fcb5deff0a | ||
|
|
fdec16c3a0 | ||
|
|
84ee8b993f | ||
|
|
3d1c27ceb7 |
@@ -1,3 +1,10 @@
|
||||
2.0 Beta 2 (2015-09-06)
|
||||
=========================
|
||||
|
||||
- Fix crash when locking with search UI open [#309]
|
||||
- Fix file locking on Mac OS X [#327]
|
||||
- Set default extension when saving a database [#79, #308]
|
||||
|
||||
2.0 Beta 1 (2015-07-18)
|
||||
=========================
|
||||
|
||||
|
||||
@@ -34,8 +34,8 @@ option(WITH_GUI_TESTS "Enable building of GUI tests" OFF)
|
||||
option(WITH_LTO "Enable Link Time Optimization (LTO)" OFF)
|
||||
option(WITH_CXX11 "Build with the C++ 11 standard" ON)
|
||||
|
||||
set(KEEPASSX_VERSION "2.0 beta 1")
|
||||
set(KEEPASSX_VERSION_NUM "1.9.91")
|
||||
set(KEEPASSX_VERSION "2.0 beta 2")
|
||||
set(KEEPASSX_VERSION_NUM "1.9.92")
|
||||
|
||||
if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
||||
set(CMAKE_COMPILER_IS_CLANG 1)
|
||||
@@ -118,6 +118,9 @@ endif()
|
||||
if (WITH_CXX11)
|
||||
add_gcc_compiler_cxxflags("-std=c++0x")
|
||||
add_gcc_compiler_cflags("-ansi")
|
||||
if(APPLE)
|
||||
add_gcc_compiler_cxxflags("-stdlib=libc++")
|
||||
endif()
|
||||
else()
|
||||
add_gcc_compiler_flags("-ansi")
|
||||
endif()
|
||||
|
||||
2
COPYING
2
COPYING
@@ -139,10 +139,10 @@ Files: share/icons/application/*/actions/application-exit.png
|
||||
share/icons/application/*/actions/password-copy.png
|
||||
share/icons/application/*/actions/password-show-*.png
|
||||
share/icons/application/*/actions/system-search.png
|
||||
share/icons/application/*/actions/username-copy.png
|
||||
share/icons/application/*/status/dialog-error.png
|
||||
share/icons/application/*/status/dialog-information.png
|
||||
share/icons/application/*/status/dialog-warning.png
|
||||
share/icons/application/*/status/username-copy.png
|
||||
share/icons/svg/*.svgz
|
||||
Copyright: 2007, Nuno Pinheiro <nuno@oxygen-icons.org>
|
||||
2007, David Vignoni <david@icon-king.com>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<name>AboutDialog</name>
|
||||
<message>
|
||||
<source>About KeePassX</source>
|
||||
<translation>O aplikaci KeePassX</translation>
|
||||
<translation>O KeePassX</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassX is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
@@ -44,7 +44,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Select entry to Auto-Type:</source>
|
||||
<translation>Vyberte položku pro samočinné vyplňování:</translation>
|
||||
<translation>Vyberte položku, kterou se bude samočinně vyplňovat:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -103,11 +103,21 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to use an empty string as password?</source>
|
||||
<translation>Opravdu chcete heslo ponechat nevyplněné?</translation>
|
||||
<translation>Opravdu chcete ponechat bez hesla, tedy nechráněné?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Zadání hesla nejsou shodná.</translation>
|
||||
<translation>Nepodařilo se vám zadat heslo tak, aby jeho znění bylo stejné v obou políčkách.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation>Nezdařilo se nastavit soubor s klíčem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>Nezdařilo se nastavit %1 jako soubor s klíčem:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -138,7 +148,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Soubor s klíčem nelze otevřít.</translation>
|
||||
<translation>Soubor s klíčem se nedaří otevřít</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
@@ -165,7 +175,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Transform rounds:</source>
|
||||
<translation>Počet průchodů:</translation>
|
||||
<translation>Počet průchodů algoritmu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default username:</source>
|
||||
@@ -173,7 +183,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Use recycle bin:</source>
|
||||
<translation>Použít Koš:</translation>
|
||||
<translation>Mazat do Koše:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> MiB</source>
|
||||
@@ -185,11 +195,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Max. history items:</source>
|
||||
<translation>Nejvyšší umožněný položek historie:</translation>
|
||||
<translation>Nejvyšší umožněný počet položek historie:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max. history size:</source>
|
||||
<translation>Nejvyšší umožněná velikost historie:</translation>
|
||||
<translation>Nejvyšší umožněný objem dat historie záznamů:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -234,12 +244,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>Zavřít?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>%1 je upravováno.
|
||||
Přesto zavřít?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>Uložit změny?</translation>
|
||||
@@ -270,6 +274,57 @@ Uložit změny?</translation>
|
||||
<source>locked</source>
|
||||
<translation>zamčeno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation>Pro databázi, kterou se pokoušíte otevřít, existuje zámek úprav (stejnojmenný
|
||||
.lock soubor). To znamená, že je nejspíš již otevřená v jiném okně KeePassX
|
||||
(v případě sdíleného úložiště, třeba i na jiném počítači). Pokud tomu tak není,
|
||||
je zámek nejspíš pozůstatkem předchozího neočekávaného ukončení aplikace
|
||||
a je možné ho smazat. V každém případě, dotčenou databázi je možné otevřít
|
||||
i tak, ale pouze pro čtení. Chcete?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation>Uzamknout databázi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation>Nelze uzamknout databázi, protože ji v tuto chvíli upravujete.
|
||||
Pokud chcete změny dokončit, klikněte na Zrušit. V opačném případě změny zahodíte.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation>Tato databáze doposud ještě nebyla uložena.
|
||||
Buď ji můžete uložit, nebo neuzamknout.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation>Tato databáze byla upravena.
|
||||
Chcete ji před uzamčením uložit?
|
||||
Pokud ne, změny budou ztraceny.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -283,7 +338,7 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to delete the entry "%1" for good?</source>
|
||||
<translation>Opravdu chcete smazat položku %1?</translation>
|
||||
<translation>Opravdu chcete nenávratně smazat položku %1?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entries?</source>
|
||||
@@ -291,7 +346,7 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to delete %1 entries for good?</source>
|
||||
<translation>Opravdu chcete smazat %1 položek?</translation>
|
||||
<translation>Opravdu chcete nenávratně smazat %1 položek?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entries to recycle bin?</source>
|
||||
@@ -299,7 +354,7 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Do you really want to move %n entry(s) to the recycle bin?</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>Opravdu chcete přesunout %n položku do Koše?</numerusform><numerusform>Opravdu chcete přesunout %n položky do Koše?</numerusform><numerusform>Opravdu chcete přesunout %n položek do Koše?</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete group?</source>
|
||||
@@ -307,12 +362,20 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to delete the group "%1" for good?</source>
|
||||
<translation>Opravdu chcete smazat skupinu %1?</translation>
|
||||
<translation>Opravdu chcete nenávratně smazat skupinu %1?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Current group</source>
|
||||
<translation>Stávající skupina</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Chyba</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Nebylo možné vypočítat hlavní klíč</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -388,11 +451,11 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n week(s)</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%n týden</numerusform><numerusform>%n týdny</numerusform><numerusform>%n týdnů</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n month(s)</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>%n měsíc</numerusform><numerusform>%n měsíce</numerusform><numerusform>%n měsíců</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>1 year</source>
|
||||
@@ -425,12 +488,16 @@ Uložit změny?</translation>
|
||||
<source>Save</source>
|
||||
<translation>Uložit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation>Otevřít</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
<message>
|
||||
<source>Enable Auto-Type for this entry</source>
|
||||
<translation>Zapnout samočinné vyplňování u této položky</translation>
|
||||
<translation>Zapnout samočinné vyplňování této položky</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inherit default Auto-Type sequence from the group</source>
|
||||
@@ -500,7 +567,7 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gen.</source>
|
||||
<translation>Obec.</translation>
|
||||
<translation>Tvoř</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>URL:</source>
|
||||
@@ -576,6 +643,14 @@ Uložit změny?</translation>
|
||||
<source>Auto-type</source>
|
||||
<translation>Samočinné vyplňování</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation>Použít výchozí posloupnost samočinného vyplňování z nadřazené skupiny</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation>Nastavit výchozí posloupnost samočinného vyplňování</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
@@ -613,26 +688,26 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>Ikonu není možné smazat. Je používána %n položkou.</numerusform><numerusform>Ikonu není možné smazat. Je používána %n položkami.</numerusform><numerusform>Ikonu není možné smazat. Je používána %n položek</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
<message>
|
||||
<source>Created:</source>
|
||||
<translation>Vytvořeno:</translation>
|
||||
<translation>Okamžik vytvoření:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Modified:</source>
|
||||
<translation>Čas poslední změny:</translation>
|
||||
<translation>Okamžik poslední úpravy:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accessed:</source>
|
||||
<translation>Čas posledního přístupu:</translation>
|
||||
<translation>Okamžik posledního přístupu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uuid:</source>
|
||||
<translation>Uuid identifikátor:</translation>
|
||||
<translation>Jedinečný identifikátor uživatele:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -646,7 +721,7 @@ Uložit změny?</translation>
|
||||
<name>EntryHistoryModel</name>
|
||||
<message>
|
||||
<source>Last modified</source>
|
||||
<translation>Čas poslední změny</translation>
|
||||
<translation>Okamžik poslední změny</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title</source>
|
||||
@@ -724,6 +799,10 @@ Uložit změny?</translation>
|
||||
<source>Root</source>
|
||||
<translation>Kořen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Nelze spočítat hlavní klíč</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -739,12 +818,16 @@ Uložit změny?</translation>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Chybný klíč nebo je databáze poškozená.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Nelze spočítat hlavní klíč</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
<message>
|
||||
<source>Fatal error while testing the cryptographic functions.</source>
|
||||
<translation>Při testování šifrovacích funkcí došlo k fatální chybě.</translation>
|
||||
<translation>Při ověřování šifrovacích funkcí byl zjištěn fatální nedostatek.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassX - Error</source>
|
||||
@@ -777,10 +860,6 @@ Uložit změny?</translation>
|
||||
<source>Groups</source>
|
||||
<translation>Skupiny</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Doplňující</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>Zobrazit</translation>
|
||||
@@ -857,18 +936,10 @@ Uložit změny?</translation>
|
||||
<source>Find</source>
|
||||
<translation>Najít</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Uživatelské jméno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Zkopírovat uživatelské jméno do schránky</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Heslo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Zkopírovat heslo do schránky</translation>
|
||||
@@ -913,6 +984,22 @@ Uložit změny?</translation>
|
||||
<source>Toggle window</source>
|
||||
<translation>Přepnout okno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation>Nástroje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -942,15 +1029,15 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Special Characters</source>
|
||||
<translation>Speciální znaky</translation>
|
||||
<translation>Zvláštní znaky</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exclude look-alike characters</source>
|
||||
<translation>Vynechat podobně vypadající znaky</translation>
|
||||
<translation>Vynechat podobně vypadající znaky (předejití záměně)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ensure that the password contains characters from every group</source>
|
||||
<translation>Zajistit, aby heslo obsahovalo znaky ze všech zvolených skupin</translation>
|
||||
<translation>Zajistit, aby heslo obsahovalo znaky ze všech zvolených skupin znaků</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept</source>
|
||||
@@ -1004,7 +1091,7 @@ Uložit změny?</translation>
|
||||
<name>QSaveFile</name>
|
||||
<message>
|
||||
<source>Existing file %1 is not writable</source>
|
||||
<translation>Existující soubor %1 není zapisovatelný</translation>
|
||||
<translation>Do stávajícího souboru %1 nelze zapisovat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing canceled by application</source>
|
||||
@@ -1012,7 +1099,7 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Partial write. Partition full?</source>
|
||||
<translation>Zápis nebylo možné dokončit zcela. Nedostatek volného místa?</translation>
|
||||
<translation>Zápis nebylo možné zcela dokončit. Nedostatek volného místa?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1023,15 +1110,15 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error writing to underlying device: </source>
|
||||
<translation>Chyba při zápisu na zařízení:</translation>
|
||||
<translation>Při zápisu na zařízení, na kterém se nachází, došlo k chybě:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error opening underlying device: </source>
|
||||
<translation>Chyba při otevírání zařízení:</translation>
|
||||
<translation>Při otevírání zařízení, na kterém se nachází, došlo k chybě:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading data from underlying device: </source>
|
||||
<translation>Chyba při čtení dat ze zařízení:</translation>
|
||||
<translation>Při čtení dat ze zařízení, na kterém se nachází, došlo k chybě:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error when decompressing: </source>
|
||||
@@ -1042,7 +1129,7 @@ Uložit změny?</translation>
|
||||
<name>QtIOCompressor::open</name>
|
||||
<message>
|
||||
<source>The gzip format not supported in this version of zlib.</source>
|
||||
<translation>Formát tohoto gzip archivu není podporován touto verzí knihovny zlib.</translation>
|
||||
<translation>Použitý formát gzip komprese není podporován verzí knihovny zlib, která je právě používána na tomto systému.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error: </source>
|
||||
@@ -1087,19 +1174,15 @@ Uložit změny?</translation>
|
||||
<name>SettingsWidgetGeneral</name>
|
||||
<message>
|
||||
<source>Remember last databases</source>
|
||||
<translation>Pamatovat si nedávno otevírané databáze</translation>
|
||||
<translation>Pamatovat si nedávno otevřené databáze</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Při startu otevřít minule otevřenou databázi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mark as modified on expanded state changes</source>
|
||||
<translation>Při změnách rozšířeného stavu označit jako změněné</translation>
|
||||
<translation>Při spuštění aplikace otevřít minule otevřené databáze</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Při ukončování samočinně uložit</translation>
|
||||
<translation>Před ukončením aplikace provést samočinné uložení případných změn v otevřených databázích</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save after every change</source>
|
||||
@@ -1107,7 +1190,7 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize when copying to clipboard</source>
|
||||
<translation>Po zkopírování do schránky samočinně zminimalizovat aplikaci</translation>
|
||||
<translation>Po zkopírování atributu do schránky samočinně minimalizovat okno KeePassX (do popředí se tak dostane okno, do kterého se zkopírovaný atribut bude vkládat)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use group icon on entry creation</source>
|
||||
@@ -1115,7 +1198,7 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Global Auto-Type shortcut</source>
|
||||
<translation>Všeobecná klávesová zkratka pro samočinné vyplňování</translation>
|
||||
<translation>Klávesová zkratka pro všeobecné samočinné vyplňování</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use entry title to match windows for global auto-type</source>
|
||||
@@ -1127,11 +1210,15 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show a system tray icon</source>
|
||||
<translation>Zobrazit ikonu v oznamovací oblasti</translation>
|
||||
<translation>Zobrazit ikonu v oznamovací oblasti hlavního panelu prostředí</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation>Minimalizovat do oznamovací oblasti</translation>
|
||||
<translation>Minimalizovat okno aplikace do oznamovací oblasti hlavního panelu prostředí</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Pamatovat si nedávno otevřené soubory s klíči</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1142,7 +1229,7 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> sec</source>
|
||||
<translation>sek</translation>
|
||||
<translation>sek.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock databases after inactivity of</source>
|
||||
@@ -1150,7 +1237,7 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show passwords in cleartext by default</source>
|
||||
<translation>Vždy zobrazovat hesla</translation>
|
||||
<translation>Hesla vždy viditelná (nezakrývat hvězdičkami)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always ask before performing auto-type</source>
|
||||
@@ -1163,14 +1250,6 @@ Uložit změny?</translation>
|
||||
<source>Unlock database</source>
|
||||
<translation>Odemknout databázi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Chyba</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key.</source>
|
||||
<translation>Chybný klíč.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WelcomeWidget</name>
|
||||
@@ -1183,11 +1262,11 @@ Uložit změny?</translation>
|
||||
<name>main</name>
|
||||
<message>
|
||||
<source>KeePassX - cross-platform password manager</source>
|
||||
<translation>KeePassX – multiplatformní správce hesel</translation>
|
||||
<translation>KeePassX – správce hesel, fungující napříč rozličnými operačními systémy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>filename of the password database to open (*.kdbx)</source>
|
||||
<translation>Soubor s databází hesel (*.kdbx), který otevřít</translation>
|
||||
<translation>který soubor s databází hesel (*.kdbx) otevřít</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>path to a custom config file</source>
|
||||
@@ -1195,7 +1274,7 @@ Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>password of the database (DANGEROUS!)</source>
|
||||
<translation>heslo databáze (NEBEZPEČNÉ!)</translation>
|
||||
<translation>heslo k databázi (NEBEZPEČNÉ!)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>key file of the database</source>
|
||||
|
||||
@@ -109,12 +109,22 @@
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Andre adgangskoder leveret.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation>Kan ikke sætte nøglefil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>Kunne ikke sætte %1 som Nøglefil:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseOpenWidget</name>
|
||||
<message>
|
||||
<source>Enter master key</source>
|
||||
<translation>Indtast primærnøgle</translation>
|
||||
<translation>Indtast hovednøgle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key File:</source>
|
||||
@@ -189,14 +199,14 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Max. history size:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Maks. historikstørrelse:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseTabWidget</name>
|
||||
<message>
|
||||
<source>Root</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Rod</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
@@ -234,11 +244,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>Luk?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>Gem ændringer?</translation>
|
||||
@@ -246,7 +251,8 @@ Close anyway?</source>
|
||||
<message>
|
||||
<source>"%1" was modified.
|
||||
Save changes?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>"%1" blev ændret.
|
||||
Gem disse ændringer?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@@ -268,12 +274,59 @@ Save changes?</source>
|
||||
<source>locked</source>
|
||||
<translation>låst</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation>Den database, du prøver at åbne er låst af en anden forekomst af KeePassX.
|
||||
Vil du åbne den alligevel? Alternativt åbnes databasen skrivebeskyttet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation>Lås database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation>Kan ikke låse databasen, mens du redigerer i den.
|
||||
Tryk på Afbryd for at afslutte dine ændringer eller kassere dem.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation>Denne database er aldrig blevet gemt.
|
||||
Du kan gemme databasen eller stop låsning.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation>Denne database er blevet ændret.
|
||||
Vil du gemme databasen før låsning?
|
||||
Ellers mister du dine ændringer.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation>Eksportér databasen til CSV-fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation>CSV-fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation>Kan ikke skrive til CSV-fil.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
<translation>Skift primærnøgle</translation>
|
||||
<translation>Skift hovednøgle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entry?</source>
|
||||
@@ -281,7 +334,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to delete the entry "%1" for good?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Vil du virkelig slette posten "%1" permanent?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entries?</source>
|
||||
@@ -289,7 +342,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to delete %1 entries for good?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Vil du virkelig slette %1 poster permanent?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entries to recycle bin?</source>
|
||||
@@ -297,7 +350,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Do you really want to move %n entry(s) to the recycle bin?</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>Ønsker du virkelig at flytte %n post over i papirkurven?</numerusform><numerusform>Ønsker du virkelig at flytte %n poster over i papirkurven?</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete group?</source>
|
||||
@@ -305,12 +358,20 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to delete the group "%1" for good?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ønsker du at slette gruppen "%1" permanent?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Current group</source>
|
||||
<translation>Nuværende gruppe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fejl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Kan ikke beregne hovednøgle</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -377,7 +438,7 @@ Save changes?</source>
|
||||
<message>
|
||||
<source>Unable to save the attachment:
|
||||
</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kan ikke gemme vedhæftningen:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tomorrow</source>
|
||||
@@ -422,6 +483,10 @@ Save changes?</source>
|
||||
<source>Save</source>
|
||||
<translation>Gem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation>Åben</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
@@ -451,11 +516,11 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default sequence</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Brug standardsekvens</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set custom sequence:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Definér brugervalgt sekvens:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -509,7 +574,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Presets</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Predefinerede</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Notes:</source>
|
||||
@@ -573,6 +638,14 @@ Save changes?</source>
|
||||
<source>Auto-type</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
@@ -610,7 +683,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation type="unfinished"><numerusform></numerusform><numerusform></numerusform></translation>
|
||||
<translation><numerusform>Kan ikke slette ikonet. Det anvendes stadig af %n element.</numerusform><numerusform>Kan ikke slette ikonet. Det anvendes stadig af %n elementer.</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -719,7 +792,11 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Root</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Rod</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Kan ikke beregne hovednøgle</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -736,6 +813,10 @@ Save changes?</source>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Forkert nøgle eller databasefil er korrupt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Kan ikke beregne hovednøgle</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -774,10 +855,6 @@ Save changes?</source>
|
||||
<source>Groups</source>
|
||||
<translation>Grupper</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>Vis</translation>
|
||||
@@ -836,7 +913,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
<translation>Skift primærnøgle</translation>
|
||||
<translation>Skift hovednøgle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database settings</source>
|
||||
@@ -854,18 +931,10 @@ Save changes?</source>
|
||||
<source>Find</source>
|
||||
<translation>Find</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Brugernavn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Kopiér brugernavn til udklipsholder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Adgangskode</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Kopiér adgangskode til udklipsholder</translation>
|
||||
@@ -910,6 +979,22 @@ Save changes?</source>
|
||||
<source>Toggle window</source>
|
||||
<translation>Skift vindue</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation>Værktøj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation>Kopiér adgangskode</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation>Kopiér adgangskode</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Eksportér til CSV-fil</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -931,7 +1016,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lower Case Letters</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Små Bogstaver</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Numbers</source>
|
||||
@@ -939,15 +1024,15 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Special Characters</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Specialtegn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exclude look-alike characters</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Udeluk lool-alike tegn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ensure that the password contains characters from every group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Vær sikker på at din adgangskode indeholder tegn fra alle grupper</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept</source>
|
||||
@@ -1020,11 +1105,11 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error writing to underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fejl ved skrivning til enhed:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error opening underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fejl ved åbning fra enhed:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading data from underlying device: </source>
|
||||
@@ -1032,7 +1117,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error when decompressing: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Intern zlib-fejl ved dekomprimering:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1054,7 +1139,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Case sensitive</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Versalfølsom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Current group</source>
|
||||
@@ -1062,7 +1147,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Root group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Rodgruppe</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1073,7 +1158,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>General</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Generelt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Security</source>
|
||||
@@ -1084,15 +1169,11 @@ Save changes?</source>
|
||||
<name>SettingsWidgetGeneral</name>
|
||||
<message>
|
||||
<source>Remember last databases</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Husk seneste databaser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mark as modified on expanded state changes</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Åben foregående databaser ved opstart</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
@@ -1108,7 +1189,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use group icon on entry creation</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Brug gruppeikon ved oprettelse af post</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Global Auto-Type shortcut</source>
|
||||
@@ -1130,6 +1211,10 @@ Save changes?</source>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation>Skjul vindue i systembakken når det er minimeret</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Husk de sidste nøglefiler</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1143,11 +1228,11 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock databases after inactivity of</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Lås databaserne efter inaktivitet i</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show passwords in cleartext by default</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Vis adgangskoder i klartekst som standard</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always ask before performing auto-type</source>
|
||||
@@ -1160,14 +1245,6 @@ Save changes?</source>
|
||||
<source>Unlock database</source>
|
||||
<translation>Lås database op</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fejl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key.</source>
|
||||
<translation>Forkert nøgle.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WelcomeWidget</name>
|
||||
@@ -1188,7 +1265,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>path to a custom config file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>sti til brugerdefineret indstillingsfil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>password of the database (DANGEROUS!)</source>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassX is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation>KeePassX ist unter der GNU General Public License (GPL) version 2 (version 3) veröffentlicht.</translation>
|
||||
<translation>KeePassX steht unter der GNU General Public License (GPL) version 2 (version 3).</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -109,6 +109,15 @@
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Unterschiedliche Passwörter eingegeben.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation>Festlegen der Schlüsseldatei nicht möglich.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>Festlegen von %1 als Schlüsseldatei nicht möglich: %2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseOpenWidget</name>
|
||||
@@ -234,12 +243,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>Schließen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>"%1" wird bearbeitet.
|
||||
Trotzdem schließen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>Änderungen speichern?</translation>
|
||||
@@ -270,6 +273,53 @@ Save changes?</source>
|
||||
<source>locked</source>
|
||||
<translation>gesperrt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation>Die Datenbank, die geöffnet werden soll, ist aktuell von einer anderen Instanz von KeePassX blockiert. Soll sie dennoch geöffnet werden? Andererseits wird die Datenbank schreibgeschützt geöffnet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation>Datenbank sperren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation>Datenbank kann nicht gesperrt werden, da sie gerade bearbeitet wird.
|
||||
Wählen sie "cancel", um die Änderungen zu speichern oder sie zurückzunehmen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation>Diese Datenbank wurde noch nicht gespeichert.
|
||||
Sie können sie speichern oder Sperre freigeben.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation>Dieses Datenbank wurde geändert.
|
||||
Soll sie gespeichert werden bevor sie gesperrt wirt?
|
||||
Anderenfalls gehen Ihre Änderungen verloren.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation>"%1" wird bearbeitet.
|
||||
Änderungen verwerfen und trotzdem schließen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation>Datenbank als CSV Datei exportieren.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation>CSV Datei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation>Die CSV Datei konnte nicht gespeichert werden.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -313,6 +363,14 @@ Save changes?</source>
|
||||
<source>Current group</source>
|
||||
<translation>Aktuelle Gruppe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Berechnung des "master keys" gescheitert</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -424,6 +482,10 @@ Save changes?</source>
|
||||
<source>Save</source>
|
||||
<translation>Speichern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation>Offen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
@@ -575,6 +637,14 @@ Save changes?</source>
|
||||
<source>Auto-type</source>
|
||||
<translation>Auto-type</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation>Auto-Type-Sequenz der übergeordneten Gruppe anwenden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation>Standard Auto-Type-Sequenz setzen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
@@ -723,6 +793,10 @@ Save changes?</source>
|
||||
<source>Root</source>
|
||||
<translation>Root</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Berechnung des "master keys" gescheitert</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -738,6 +812,10 @@ Save changes?</source>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Falscher Schlüssel oder die Datei ist beschädigt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Berechnung des "master keys" gescheitert</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -776,10 +854,6 @@ Save changes?</source>
|
||||
<source>Groups</source>
|
||||
<translation>Gruppen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Extras</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>Ansicht</translation>
|
||||
@@ -856,18 +930,10 @@ Save changes?</source>
|
||||
<source>Find</source>
|
||||
<translation>Suchen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Benutzername</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Benutzername in die Zwischenablage kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Passwort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Passwort in die Zwischenablage kopieren</translation>
|
||||
@@ -912,6 +978,22 @@ Save changes?</source>
|
||||
<source>Toggle window</source>
|
||||
<translation>Fenster zeigen/verstecken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation>Tools</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation>Benutzername kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation>Passwort kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Als CSV Datei exportieren</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1092,10 +1174,6 @@ Save changes?</source>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Letzte Datenbank beim Starten öffnen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mark as modified on expanded state changes</source>
|
||||
<translation>Als erweiterte Zustandsänderungen makieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Automatisch speichern beim Schließen</translation>
|
||||
@@ -1132,6 +1210,10 @@ Save changes?</source>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation>Fenster verstecken wenn minimiert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Letzte Schlüsseldateien merken</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1162,14 +1244,6 @@ Save changes?</source>
|
||||
<source>Unlock database</source>
|
||||
<translation>Datenbank entsperren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key.</source>
|
||||
<translation>Falscher Schlüssel.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WelcomeWidget</name>
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
<source>KeePassX is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Revision</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -316,6 +320,11 @@ Discard changes and close anyway?</source>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to save as is locked by another instance of KeePassX.
|
||||
Do you want to save it anyway?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -1274,10 +1283,6 @@ Discard changes and close anyway?</source>
|
||||
<source>path to a custom config file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>password of the database (DANGEROUS!)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>key file of the database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Key files</source>
|
||||
<translation>Archivos de llaves</translation>
|
||||
<translation>Archivos llave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
@@ -109,6 +109,16 @@
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Las contraseñas ingresadas son distintas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation>No se pudo establecer el archivo llave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>No se pudo establecer %1 como el Archivo llave:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseOpenWidget</name>
|
||||
@@ -118,7 +128,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Key File:</source>
|
||||
<translation>Archivo clave:</translation>
|
||||
<translation>Archivo llave:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password:</source>
|
||||
@@ -196,7 +206,7 @@
|
||||
<name>DatabaseTabWidget</name>
|
||||
<message>
|
||||
<source>Root</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Raíz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
@@ -234,12 +244,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>¿Cerrar?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>"%1" está en modo de edición.
|
||||
¿Cerrar de todas formas?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>¿Guardar cambios?</translation>
|
||||
@@ -270,12 +274,60 @@ Save changes?</source>
|
||||
<source>locked</source>
|
||||
<translation>bloqueado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation>La base de datos que está intentando abrir está bloqueada por otra instancia de KeePassX.
|
||||
¿Quiere abrirla de todos modos? Alternativamente, la base de datos se abre como sólo lectura.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation>Bloquear base de datos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation>No se puede bloquear la base de datos porque actualmente está editándola.
|
||||
Por favor, pulse cancelar para terminar sus cambios o descartarlos.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation>Esta base de datos nunca ha sido guardada.
|
||||
Puede guardar la base de datos o dejar de bloquearla.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation>Esta base de datos ha sido modificada.
|
||||
¿Desea guardar la base de datos antes de bloquearla?
|
||||
De lo contrario se perderán los cambios.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation>"% 1" está en el modo de edición.
|
||||
¿Descartar cambios y cerrar de todos modos?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation>Exportar base de datos a un archivo CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation>Archivo CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation>La escritura del archivo CSV falló.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
<translation>Cambiar la llave maestra</translation>
|
||||
<translation>Cambiar la clave maestra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entry?</source>
|
||||
@@ -313,6 +365,14 @@ Save changes?</source>
|
||||
<source>Current group</source>
|
||||
<translation>Grupo actual</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>No se puede calcular la llave maestra</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -425,6 +485,10 @@ Save changes?</source>
|
||||
<source>Save</source>
|
||||
<translation>Guardar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation>Abrir</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
@@ -576,6 +640,14 @@ Save changes?</source>
|
||||
<source>Auto-type</source>
|
||||
<translation>Auto-escritura</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation>Usar escritura automática por defecto del grupo padre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation>Establecer escritura automática por defecto</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
@@ -722,7 +794,11 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Root</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Raíz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>No se puede calcular la clave maestra</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -739,6 +815,10 @@ Save changes?</source>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>La contraseña es incorrecta o el archivo está dañado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>No se puede calcular la clave maestra</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -777,10 +857,6 @@ Save changes?</source>
|
||||
<source>Groups</source>
|
||||
<translation>Grupos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Extras</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>Ver</translation>
|
||||
@@ -839,7 +915,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
<translation>Cambiar la llave maestra</translation>
|
||||
<translation>Cambiar la clave maestra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database settings</source>
|
||||
@@ -857,18 +933,10 @@ Save changes?</source>
|
||||
<source>Find</source>
|
||||
<translation>Buscar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Usuario</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Copiar nombre de usuario al portapapeles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Contraseña</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Copiar contraseña al portapapeles</translation>
|
||||
@@ -913,6 +981,22 @@ Save changes?</source>
|
||||
<source>Toggle window</source>
|
||||
<translation>Cambiar a ventana</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation>Herramientas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation>Copiar nombre de usuario</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation>Copiar contraseña</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Exportar a un archivo CSV</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1065,7 +1149,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Root group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Grupo raíz</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1093,10 +1177,6 @@ Save changes?</source>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Abrir base de datos anterior al inicio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mark as modified on expanded state changes</source>
|
||||
<translation>Marcar como modificado en los cambios de estado ampliados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Guardar automáticamente al salir</translation>
|
||||
@@ -1133,6 +1213,10 @@ Save changes?</source>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation>Ocultar la ventana a la bandeja del sistema cuando se minimiza</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Recordar últimos archivos clave</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1163,14 +1247,6 @@ Save changes?</source>
|
||||
<source>Unlock database</source>
|
||||
<translation>Desbloquear base de datos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key.</source>
|
||||
<translation>Clave incorrecta.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WelcomeWidget</name>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Key file</source>
|
||||
<translation>Fichier de clé</translation>
|
||||
<translation>Fichier-clé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Browse</source>
|
||||
@@ -83,7 +83,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Create Key File...</source>
|
||||
<translation>Créer un fichier de clé...</translation>
|
||||
<translation>Créer un fichier-clé...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@@ -91,11 +91,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to create Key File : </source>
|
||||
<translation>Incapable de créer un fichier de clé :</translation>
|
||||
<translation>Impossible de créer un fichier-clé :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a key file</source>
|
||||
<translation>Choisir un fichier de clé</translation>
|
||||
<translation>Choisir un fichier-clé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Question</source>
|
||||
@@ -109,16 +109,26 @@
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Les mots de passe ne sont pas identiques.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation>Échec de définition du fichier-clé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>Impossible de définir %1 comme fichier-clé:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseOpenWidget</name>
|
||||
<message>
|
||||
<source>Enter master key</source>
|
||||
<translation>Entrez la clé maîtresse</translation>
|
||||
<translation>Entrez la clé maître</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key File:</source>
|
||||
<translation>Fichier de clé :</translation>
|
||||
<translation>Fichier-clé :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password:</source>
|
||||
@@ -138,7 +148,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Impossible d'ouvrir le fichier de clé</translation>
|
||||
<translation>Impossible d'ouvrir le fichier-clé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
@@ -146,11 +156,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Key files</source>
|
||||
<translation>Fichiers de clé</translation>
|
||||
<translation>Fichiers-clés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select key file</source>
|
||||
<translation>Choisissez un fichier de clé</translation>
|
||||
<translation>Choisissez un fichier-clé</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -208,7 +218,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Open database</source>
|
||||
<translation>Ovrire la base de données</translation>
|
||||
<translation>Ouvrir la base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
@@ -232,13 +242,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Close?</source>
|
||||
<translation>Fermer?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>"%1" est en cours de modification.
|
||||
Fermer quand même ?</translation>
|
||||
<translation>Fermer ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
@@ -270,12 +274,60 @@ Enregistrer les modifications ?</translation>
|
||||
<source>locked</source>
|
||||
<translation>verrouillée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation>La base de données que vous essayez d'ouvrir est verrouillée par une autre instance de KeePassX.
|
||||
Voulez-vous quand même l'ouvrir ? Dans ce cas, elle sera ouverte en lecture seule.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation>Verrouiiler la base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation>Impossible de verrouiller la base de données lors de modifications.
|
||||
Cliquez sur Annuler pour finir vos modifications ou abandonnez-les.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation>Cette base de données n'a pas encore été sauvegardée.
|
||||
Vous devez la sauvegarder ou annuler son verrouillage.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation>La base de données a été modifiée.
|
||||
Voulez-vous l'enregistrer avant de la verrouiller ?
|
||||
Autrement, vos modifications seront perdues.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation>"%1" est en mode édition.
|
||||
Ignorer les changements et fermer ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation>Exporter la base de données au format CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation>Fichier CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation>Échec de l'écriture du fichier CSV.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
<translation>Changer la clé maîtresse</translation>
|
||||
<translation>Changer la clé maître</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entry?</source>
|
||||
@@ -311,7 +363,15 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Current group</source>
|
||||
<translation>Group actif</translation>
|
||||
<translation>Groupe actif</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Erreur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Impossible de calculer la clé maître</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -322,7 +382,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Advanced</source>
|
||||
<translation>Avancées</translation>
|
||||
<translation>Avancé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Icon</source>
|
||||
@@ -330,7 +390,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type</source>
|
||||
<translation>Auto-Type</translation>
|
||||
<translation>Remplissage automatique</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Properties</source>
|
||||
@@ -379,7 +439,7 @@ Enregistrer les modifications ?</translation>
|
||||
<message>
|
||||
<source>Unable to save the attachment:
|
||||
</source>
|
||||
<translation>Impossible de enregistrer le fichier attaché:
|
||||
<translation>Impossible d'enregistrer le fichier attaché:
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -396,14 +456,14 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>1 year</source>
|
||||
<translation>Une année</translation>
|
||||
<translation>1 an</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAdvanced</name>
|
||||
<message>
|
||||
<source>Additional attributes</source>
|
||||
<translation>Attributs additionnel </translation>
|
||||
<translation>Attributs supplémentaires </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add</source>
|
||||
@@ -425,20 +485,24 @@ Enregistrer les modifications ?</translation>
|
||||
<source>Save</source>
|
||||
<translation>Enregistrer le fichier </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation>Ouvrir</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
<message>
|
||||
<source>Enable Auto-Type for this entry</source>
|
||||
<translation>Activer l'Auto-Type pour cette entrée</translation>
|
||||
<translation>Activer le remplissage automatique pour cette entrée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inherit default Auto-Type sequence from the group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Utiliser la séquence de remplissage automatique par défaut du groupe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use custom Auto-Type sequence:</source>
|
||||
<translation>Utiliser une séquence d'Auto-Type personnalisée :</translation>
|
||||
<translation>Utiliser une séquence de remplissage automatique personnalisée :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>+</source>
|
||||
@@ -450,7 +514,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Window title:</source>
|
||||
<translation>Titre de la fenêtre:</translation>
|
||||
<translation>Titre de la fenêtre :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default sequence</source>
|
||||
@@ -458,14 +522,14 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set custom sequence:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Définir une séquence personnalisé :</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetHistory</name>
|
||||
<message>
|
||||
<source>Show</source>
|
||||
<translation>Exposer</translation>
|
||||
<translation>Afficher</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Restore</source>
|
||||
@@ -484,19 +548,19 @@ Enregistrer les modifications ?</translation>
|
||||
<name>EditEntryWidgetMain</name>
|
||||
<message>
|
||||
<source>Title:</source>
|
||||
<translation>Titre:</translation>
|
||||
<translation>Titre :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
<translation>Non d'utilisateur:</translation>
|
||||
<translation>Non d'utilisateur :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password:</source>
|
||||
<translation>Mot de passe:</translation>
|
||||
<translation>Mot de passe :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat:</source>
|
||||
<translation>Confirme: </translation>
|
||||
<translation>Confirmation :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gen.</source>
|
||||
@@ -504,7 +568,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>URL:</source>
|
||||
<translation>URL:</translation>
|
||||
<translation>URL :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires</source>
|
||||
@@ -516,7 +580,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Notes:</source>
|
||||
<translation>Notes:</translation>
|
||||
<translation>Notes :</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -539,7 +603,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit group</source>
|
||||
<translation>Modifie le groupe</translation>
|
||||
<translation>Modifier le groupe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable</source>
|
||||
@@ -566,7 +630,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires</source>
|
||||
<translation>Expires</translation>
|
||||
<translation>Expiration</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search</source>
|
||||
@@ -574,7 +638,15 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-type</source>
|
||||
<translation>Auto-type</translation>
|
||||
<translation>Remplissage automatique</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation>Utiliser la séquence de remplissage automatique par défaut du groupe parent</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation>Définir une séquence de remplissage automatique par défaut</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -605,7 +677,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select Image</source>
|
||||
<translation>Choisis un image. </translation>
|
||||
<translation>Choisir une image</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't delete icon!</source>
|
||||
@@ -632,7 +704,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uuid:</source>
|
||||
<translation>Uuid:</translation>
|
||||
<translation>Uuid :</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -684,14 +756,14 @@ Enregistrer les modifications ?</translation>
|
||||
<name>Group</name>
|
||||
<message>
|
||||
<source>Recycle Bin</source>
|
||||
<translation>Bac de Recyclage</translation>
|
||||
<translation>Corbeille</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass1OpenWidget</name>
|
||||
<message>
|
||||
<source>Import KeePass1 database</source>
|
||||
<translation>Importe un KeePass1 bas de données</translation>
|
||||
<translation>Importer une base de données au format KeePass1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@@ -699,14 +771,14 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Impossible d'ouvrir la bas de données.</translation>
|
||||
<translation>Impossible d'ouvrir la base de données.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass1Reader</name>
|
||||
<message>
|
||||
<source>Unable to read keyfile.</source>
|
||||
<translation>Impossible de lire le fichier de clé.</translation>
|
||||
<translation>Impossible de lire le fichier-clé.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not a KeePass database.</source>
|
||||
@@ -724,6 +796,10 @@ Enregistrer les modifications ?</translation>
|
||||
<source>Root</source>
|
||||
<translation>Racine</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Impossible de calculer la clé maître</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -739,6 +815,10 @@ Enregistrer les modifications ?</translation>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Mauvaise clé ou fichier de base de donnée corrompu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Impossible de calculer la clé maître</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -777,10 +857,6 @@ Enregistrer les modifications ?</translation>
|
||||
<source>Groups</source>
|
||||
<translation>Groupes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Extras</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>Vue</translation>
|
||||
@@ -857,18 +933,10 @@ Enregistrer les modifications ?</translation>
|
||||
<source>Find</source>
|
||||
<translation>Chercher</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Nom d'utilisateur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Copier le nom d'utilisateur dans le presse-papiers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Mot de passe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Copier le mot de passe dans le presse-papiers</translation>
|
||||
@@ -879,7 +947,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Perform Auto-Type</source>
|
||||
<translation>Effectuer un Auto-Type</translation>
|
||||
<translation>Effectuer un remplissage automatique</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open URL</source>
|
||||
@@ -913,12 +981,28 @@ Enregistrer les modifications ?</translation>
|
||||
<source>Toggle window</source>
|
||||
<translation>Basculer de fenêtre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation>Outils</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation>Copier le nom d'utilisateur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation>Copier le mot de passe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Exporter au format CSV</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
<message>
|
||||
<source>Password:</source>
|
||||
<translation>Mot de passe:</translation>
|
||||
<translation>Mot de passe :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length:</source>
|
||||
@@ -1023,15 +1107,15 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error writing to underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Erreur d'écriture sur le périphérique concerné :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error opening underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Erreur d'ouverture du périphérique concerné :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading data from underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Erreur de lecture sur le périphérique concerné :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error when decompressing: </source>
|
||||
@@ -1093,10 +1177,6 @@ Enregistrer les modifications ?</translation>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Ouvrir les base de données précédentes au démarrage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mark as modified on expanded state changes</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Sauvegarde automatiquement à la sortie</translation>
|
||||
@@ -1107,7 +1187,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize when copying to clipboard</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Réduire lors de la copie dans le presse-papiers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use group icon on entry creation</source>
|
||||
@@ -1115,11 +1195,11 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Global Auto-Type shortcut</source>
|
||||
<translation>Raccourci d'Auto-Type global</translation>
|
||||
<translation>Raccourci de remplissage automatique global</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use entry title to match windows for global auto-type</source>
|
||||
<translation>Utiliser la correspondance entre le titre de l'entrée et de la fenêtre pour l'Auto-Type global</translation>
|
||||
<translation>Utiliser la correspondance entre le titre de l'entrée et de la fenêtre pour le remplissage automatique global</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Language</source>
|
||||
@@ -1127,11 +1207,15 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show a system tray icon</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Afficher une icône dans la zone de notification</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Réduire la fenêtre vers la zone de notification lors de sa réduction</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Se rappeler les derniers fichiers-clés ouverts</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1154,7 +1238,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always ask before performing auto-type</source>
|
||||
<translation>Toujours demander avant d'effectuer un auto-type</translation>
|
||||
<translation>Toujours demander avant d'effectuer un remplissage automatique</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1163,14 +1247,6 @@ Enregistrer les modifications ?</translation>
|
||||
<source>Unlock database</source>
|
||||
<translation>Déverrouiller la base de donnée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Erreur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key.</source>
|
||||
<translation>Mauvaise clé.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WelcomeWidget</name>
|
||||
@@ -1199,7 +1275,7 @@ Enregistrer les modifications ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>key file of the database</source>
|
||||
<translation>Fichier de clé de la base de donnée</translation>
|
||||
<translation>Fichier-clé de la base de données</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -109,6 +109,15 @@
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Kata sandi yang berbeda diberikan.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseOpenWidget</name>
|
||||
@@ -234,12 +243,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>Tutup?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>"%1" dalam berada mode sunting.
|
||||
Tetap tutup?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>Simpan perubahan?</translation>
|
||||
@@ -270,6 +273,48 @@ Simpan perubahan?</translation>
|
||||
<source>locked</source>
|
||||
<translation>terkunci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -313,6 +358,14 @@ Simpan perubahan?</translation>
|
||||
<source>Current group</source>
|
||||
<translation>Grup saat ini</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -425,6 +478,10 @@ Simpan perubahan?</translation>
|
||||
<source>Save</source>
|
||||
<translation>Simpan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
@@ -576,6 +633,14 @@ Simpan perubahan?</translation>
|
||||
<source>Auto-type</source>
|
||||
<translation>Ketik-otomatis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
@@ -724,6 +789,10 @@ Simpan perubahan?</translation>
|
||||
<source>Root</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -739,6 +808,10 @@ Simpan perubahan?</translation>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Kunci salah atau berkas basis data korup.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -777,10 +850,6 @@ Simpan perubahan?</translation>
|
||||
<source>Groups</source>
|
||||
<translation>Grup</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Ekstra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation type="unfinished"/>
|
||||
@@ -857,18 +926,10 @@ Simpan perubahan?</translation>
|
||||
<source>Find</source>
|
||||
<translation>Temukan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Nama pengguna</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Salin nama pengguna ke papan klip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Kata sandi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Salin kata sandi ke papan klip</translation>
|
||||
@@ -913,6 +974,22 @@ Simpan perubahan?</translation>
|
||||
<source>Toggle window</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1093,10 +1170,6 @@ Simpan perubahan?</translation>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Buka basis data sebelumnya saat mulai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mark as modified on expanded state changes</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Otomatis simpan ketika keluar</translation>
|
||||
@@ -1133,6 +1206,10 @@ Simpan perubahan?</translation>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation>Sembunyikan jendela ke baki sistem ketika dikecilkan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1163,14 +1240,6 @@ Simpan perubahan?</translation>
|
||||
<source>Unlock database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Galat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key.</source>
|
||||
<translation>Kunci salah.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WelcomeWidget</name>
|
||||
|
||||
@@ -19,7 +19,7 @@ GNU General Public License (GPL) versione 2 o, a tua scelta, della versione 3.</
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't find an entry that matches the window title:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Impossibile trovare una voce che corrisponda al titolo della finestra</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -112,12 +112,12 @@ GNU General Public License (GPL) versione 2 o, a tua scelta, della versione 3.</
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Impossibile impostare il file della chiave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Impossibile impostare %1 come file della Chiave: %2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -244,12 +244,6 @@ GNU General Public License (GPL) versione 2 o, a tua scelta, della versione 3.</
|
||||
<source>Close?</source>
|
||||
<translation>Chiudere?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>"%1" è in modalità modifica.
|
||||
Chiudere comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>Salvare modifiche?</translation>
|
||||
@@ -283,27 +277,49 @@ Salvare le modifiche?</translation>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Il Database che stai tentando di aprire è bloccato da un'altra esecuzione di KeePassX.
|
||||
Vuoi aprire comunque il database? In alternativa, il database è aperto in sola lettura.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Bloccare database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Non è possibile bloccare il database ne modo in cui lo stai modificando.
|
||||
Premere annulla per terminare le modifiche o scartarle .</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Questo database non è ancora stato salvato.
|
||||
È possibile salvare il database o interrompere bloccandolo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Questo database è stato modificato.
|
||||
Vuoi salvare il database prima di bloccarlo?
|
||||
Altrimenti le modifiche verranno perse.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation>"%1" è in modalità modifica. Annullare le modifiche e chiudere comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation>Esporta il database come file CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation>file CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation>Scrittura del file CSV fallita.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -350,11 +366,11 @@ Otherwise your changes are lost.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Errore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Impossibile calcolare la chiave master</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -470,7 +486,7 @@ Otherwise your changes are lost.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Apri</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -625,11 +641,11 @@ Otherwise your changes are lost.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ereditare la sequenza predefinita di auto-type dal gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Usare sequenza predefinita</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -781,7 +797,7 @@ Otherwise your changes are lost.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Impossibile calcolare la chiave master</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -800,18 +816,18 @@ Otherwise your changes are lost.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Impossibile calcolare la chiave master</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
<message>
|
||||
<source>Fatal error while testing the cryptographic functions.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Errore fatale durante il test delle funzioni di crittografia.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassX - Error</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>KeePassx - Errore</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -916,18 +932,10 @@ Otherwise your changes are lost.</source>
|
||||
<source>Find</source>
|
||||
<translation>Trovare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Nome Utente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Copiare nome utente negli appunti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Copiare password negli appunti</translation>
|
||||
@@ -970,11 +978,23 @@ Otherwise your changes are lost.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle window</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Cambia finestra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Strumenti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation>Copia nome utente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation>Copia password</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Esporta in un file CSV</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1182,19 +1202,19 @@ Otherwise your changes are lost.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Language</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Lingua</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show a system tray icon</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Mostra un'icona nell'area di notifica del sistema</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Nascondi la finestra nell'area di notifica del sistema quando viene minimizzatala finestra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ricorda gli ultimi files di chiave</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1231,14 +1251,14 @@ Otherwise your changes are lost.</source>
|
||||
<name>WelcomeWidget</name>
|
||||
<message>
|
||||
<source>Welcome!</source>
|
||||
<translation>Benvenuto/a!</translation>
|
||||
<translation>Benvenuto!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
<message>
|
||||
<source>KeePassX - cross-platform password manager</source>
|
||||
<translation>KeePassX - gestore di password cross-platform</translation>
|
||||
<translation>KeePassX - gestore di password multipiattafroma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>filename of the password database to open (*.kdbx)</source>
|
||||
|
||||
@@ -243,12 +243,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>閉じますか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>"%1" は編集されています。
|
||||
無視して閉じますか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>変更を保存しますか?</translation>
|
||||
@@ -305,6 +299,23 @@ Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -916,18 +927,10 @@ Otherwise your changes are lost.</source>
|
||||
<source>Find</source>
|
||||
<translation>検索</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>ユーザー名</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>ユーザー名をコピー</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>パスワード</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>パスワードをコピー</translation>
|
||||
@@ -976,6 +979,18 @@ Otherwise your changes are lost.</source>
|
||||
<source>Tools</source>
|
||||
<translation>ツール</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -109,6 +109,16 @@
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Verschillende wachtwoorden opgegeven.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation>Niet gelukt het sleutelbestand in te stellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>Niet gelukt %1 als sleutelbestand in te stellen:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseOpenWidget</name>
|
||||
@@ -234,12 +244,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>Sluiten?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>"%1" is in bewerkmodus.
|
||||
Toch sluiten?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>Wijzigingen opslaan?</translation>
|
||||
@@ -270,6 +274,54 @@ Opslaan?</translation>
|
||||
<source>locked</source>
|
||||
<translation>vergrendeld</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation>De database die u probeert te openen is vergrendeld door een andere instantie van KeePassX.
|
||||
Wilt u toch doorgaan met openen? U kunt de database ook alleen-lezen openen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation>Database vergrendelen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation>Kan de database niet vergrendelen omdat u deze momenteel aan het bewerken bent.
|
||||
Druk op annuleren om uw wijzigingen aan te passen of gooi de wijzigingen weg.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation>Deze database is nog niet opgeslagen.
|
||||
U kunt de database opslaan of het vergrendelen annuleren.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation>Deze database is gewijzigd.
|
||||
Wilt u de database opslaan voordat u deze vergrendelt?
|
||||
Zo nee, dan gaan de wijzigingen verloren.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation>"%1" is gewijzigd.
|
||||
Wijzigingen ongedaan maken en doorgaan met sluiten?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation>Database exporteren naar CSV-bestand</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation>CSV-bestand</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation>Schrijven van het CSV-bestand mislukt.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -313,6 +365,14 @@ Opslaan?</translation>
|
||||
<source>Current group</source>
|
||||
<translation>Huidige groep</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fout</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -425,6 +485,10 @@ Opslaan?</translation>
|
||||
<source>Save</source>
|
||||
<translation>Opslaan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation>Open</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
@@ -576,6 +640,14 @@ Opslaan?</translation>
|
||||
<source>Auto-type</source>
|
||||
<translation>Auto-typen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation>Gebruik standaard auto-typevolgorde van bovenliggende groep</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation>Stel standaard auto-typevolgorde in</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
@@ -724,6 +796,10 @@ Opslaan?</translation>
|
||||
<source>Root</source>
|
||||
<translation>Alles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -739,6 +815,10 @@ Opslaan?</translation>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Verkeerde sleutel of corrupte database.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -777,10 +857,6 @@ Opslaan?</translation>
|
||||
<source>Groups</source>
|
||||
<translation>Groepen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Extra's</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>Beeld</translation>
|
||||
@@ -857,18 +933,10 @@ Opslaan?</translation>
|
||||
<source>Find</source>
|
||||
<translation>Vind</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Gebruikersnaam</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Kopieer gebruikersnaam naar klembord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Wachtwoord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Kopieer wachtwoord naar klembord</translation>
|
||||
@@ -913,6 +981,22 @@ Opslaan?</translation>
|
||||
<source>Toggle window</source>
|
||||
<translation>Wissel venster</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation>Hulpmiddelen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation>Gebruikersnaam kopieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation>Wachtwoord kopiëren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Naar CSV-bestand exporteren</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1093,10 +1177,6 @@ Opslaan?</translation>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Open vorige databases bij starten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mark as modified on expanded state changes</source>
|
||||
<translation>Markeer database als gewijzigd bij wijzigen van de status</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Automatisch opslaan bij afsluiten</translation>
|
||||
@@ -1133,6 +1213,10 @@ Opslaan?</translation>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation>Bij minimaliseren enkel icoon in systray tonen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Onthoud laatste sleutelbestanden</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1163,14 +1247,6 @@ Opslaan?</translation>
|
||||
<source>Unlock database</source>
|
||||
<translation>Database ontgrendelen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fout</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key.</source>
|
||||
<translation>Verkeerd wachtwoord</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WelcomeWidget</name>
|
||||
|
||||
@@ -244,12 +244,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>Fechar ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>"%1" em modo de edição.
|
||||
Fechar na mesma ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>Guardar alterações ?</translation>
|
||||
@@ -310,6 +304,24 @@ Otherwise your changes are lost.</source>
|
||||
Pretende guardar a base de dados antes de a trancar ?
|
||||
Caso contrário as alterações serão perdidas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation>%1 está em modo de edição.
|
||||
Fechar e Ignorar alterações ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation>Exportar base de dados para ficheiro CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation>Ficheiro CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation>Falha na escrita do ficheiro CSV</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -920,18 +932,10 @@ Caso contrário as alterações serão perdidas.</translation>
|
||||
<source>Find</source>
|
||||
<translation>Encontrar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Nome de utilizador</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Copiar nome de utilizador para inserção</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Senha</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Copiar senha para inserção</translation>
|
||||
@@ -980,6 +984,18 @@ Caso contrário as alterações serão perdidas.</translation>
|
||||
<source>Tools</source>
|
||||
<translation>Ferramentas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation>Copiar nome de utilizador</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation>Copiar senha</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Exportar para ficheiro CSV</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Select entry to Auto-Type:</source>
|
||||
<translation>Выберете запись для автоввода:</translation>
|
||||
<translation>Выберите запись для автоввода:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -103,12 +103,22 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to use an empty string as password?</source>
|
||||
<translation>Вы действительно хотите использовать пустую строку как пароль?</translation>
|
||||
<translation>Вы действительно хотите использовать в качестве пароля пустую строку?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Пароли не совпадают.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation>Не удалось установить файл-ключ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>Не удалось установить %1 как файл-ключ:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseOpenWidget</name>
|
||||
@@ -150,7 +160,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Select key file</source>
|
||||
<translation>Выберете файл-ключ</translation>
|
||||
<translation>Выберите файл-ключ</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -169,7 +179,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Default username:</source>
|
||||
<translation>Имя пользователя по-умолчанию:</translation>
|
||||
<translation>Имя пользователя по умолчанию:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use recycle bin:</source>
|
||||
@@ -234,12 +244,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>Закрыть?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>«%1» в режиме редактирования.
|
||||
Всё равно закрыть?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>Сохранить изменения?</translation>
|
||||
@@ -268,14 +272,56 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>locked</source>
|
||||
<translation>заблокированно</translation>
|
||||
<translation>заблокировано</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation>Заблокировать хранилище</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation>Экспортировать хранилище в файл CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation>Файл CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
<translation>Сменить мастер-пароль</translation>
|
||||
<translation>Изменить мастер-пароль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entry?</source>
|
||||
@@ -313,6 +359,14 @@ Save changes?</source>
|
||||
<source>Current group</source>
|
||||
<translation>Текущая группа</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Ошибка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Невозможно вычислить мастер-пароль</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -326,7 +380,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Icon</source>
|
||||
<translation>Иконка</translation>
|
||||
<translation>Значок</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type</source>
|
||||
@@ -425,6 +479,10 @@ Save changes?</source>
|
||||
<source>Save</source>
|
||||
<translation>Сохранить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation>Открыть</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
@@ -527,7 +585,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Icon</source>
|
||||
<translation>Иконка</translation>
|
||||
<translation>Значок</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Properties</source>
|
||||
@@ -574,26 +632,34 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-type</source>
|
||||
<translation>автоввод</translation>
|
||||
<translation>Автоввод</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
<message>
|
||||
<source>Use default icon</source>
|
||||
<translation>Использовать стандартную иконку</translation>
|
||||
<translation>Использовать стандартный значок</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use custom icon</source>
|
||||
<translation>Использовать свою иконку</translation>
|
||||
<translation>Использовать свой значок</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add custom icon</source>
|
||||
<translation>Добавить свою иконку</translation>
|
||||
<translation>Добавить свой значок</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete custom icon</source>
|
||||
<translation>Удалить свою иконку</translation>
|
||||
<translation>Удалить свой значок</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Images</source>
|
||||
@@ -609,11 +675,11 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't delete icon!</source>
|
||||
<translation>Не могу удалить иконку!</translation>
|
||||
<translation>Не могу удалить значок!</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>Не могу удалить иконку, %n запись всё ещё использует её.</numerusform><numerusform>Не могу удалить иконку, %n записи всё ещё использует её.</numerusform><numerusform>Не могу удалить иконку, %n записей всё ещё использует её.</numerusform><numerusform>Не могу удалить иконку, %n записей всё ещё использует её.</numerusform></translation>
|
||||
<translation><numerusform>Не могу удалить иконку, %n запись всё ещё использует её.</numerusform><numerusform>Не могу удалить иконку, %n записи всё ещё использует её.</numerusform><numerusform>Не могу удалить иконку, %n записей всё ещё использует её.</numerusform><numerusform>Не могу удалить значок, %n записей всё ещё использует его.</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -724,6 +790,10 @@ Save changes?</source>
|
||||
<source>Root</source>
|
||||
<translation>Корень</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Невозможно вычислить мастер-пароль</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -739,6 +809,10 @@ Save changes?</source>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Неверный ключ или файл хранилища повреждён.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Невозможно вычислить мастер-пароль</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -777,10 +851,6 @@ Save changes?</source>
|
||||
<source>Groups</source>
|
||||
<translation>Группы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Дополнительно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>Вид</translation>
|
||||
@@ -857,18 +927,10 @@ Save changes?</source>
|
||||
<source>Find</source>
|
||||
<translation>Найти</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Имя пользователя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Скопировать имя пользователя в буфер обмена</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Пароль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Скопировать пароль в буфер обмена</translation>
|
||||
@@ -913,6 +975,22 @@ Save changes?</source>
|
||||
<source>Toggle window</source>
|
||||
<translation>Переключить окно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation>Инструменты</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation>Скопировать имя пользователя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation>Скопировать пароль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Экспортировать в файл CSV</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -950,7 +1028,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ensure that the password contains characters from every group</source>
|
||||
<translation>Пожалуйста, пусть пароль будет содержать символы всех видов</translation>
|
||||
<translation>Убедитесь, что пароль содержит символы всех видов</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept</source>
|
||||
@@ -1023,19 +1101,19 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error writing to underlying device: </source>
|
||||
<translation>Ошибка записи на нижлежащее устройство:</translation>
|
||||
<translation>Ошибка записи на низлежащее устройство:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error opening underlying device: </source>
|
||||
<translation>Ошибка открытия нижлежащего устройства:</translation>
|
||||
<translation>Ошибка открытия низлежащего устройства:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading data from underlying device: </source>
|
||||
<translation>Ошибка чтения с нижлежащего устройства:</translation>
|
||||
<translation>Ошибка чтения с низлежащего устройства:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error when decompressing: </source>
|
||||
<translation>Внутренняя ошибка zlib при расжатии:</translation>
|
||||
<translation>Внутренняя ошибка zlib при распаковке:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1093,10 +1171,6 @@ Save changes?</source>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Открывать предыдущее хранилище при запуске</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mark as modified on expanded state changes</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Автоматически сохранять при выходе</translation>
|
||||
@@ -1133,12 +1207,16 @@ Save changes?</source>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation>При сворачивании прятать окно в область системных уведомлений</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Запоминать последние файл-ключи</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
<message>
|
||||
<source>Clear clipboard after</source>
|
||||
<translation>Потом почтистить буфер обмена</translation>
|
||||
<translation>Очищать буфер обмена через</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> sec</source>
|
||||
@@ -1150,7 +1228,7 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show passwords in cleartext by default</source>
|
||||
<translation>Показывать пароль в открытую по-умолчанию</translation>
|
||||
<translation>По умолчанию показывать пароль в открытую</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always ask before performing auto-type</source>
|
||||
@@ -1163,14 +1241,6 @@ Save changes?</source>
|
||||
<source>Unlock database</source>
|
||||
<translation>Разблокировать хранилище</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Ошибка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key.</source>
|
||||
<translation>Неверный ключ.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WelcomeWidget</name>
|
||||
|
||||
@@ -109,6 +109,15 @@
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Olika lösenord angivna</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseOpenWidget</name>
|
||||
@@ -234,12 +243,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>Stäng?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>"%1" är i redigerar-läge.
|
||||
Stäng ändå?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>Spara ändringar?</translation>
|
||||
@@ -270,6 +273,48 @@ Spara ändringarna?</translation>
|
||||
<source>locked</source>
|
||||
<translation>låst</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -313,6 +358,14 @@ Spara ändringarna?</translation>
|
||||
<source>Current group</source>
|
||||
<translation>Nuvarande grupp</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -425,6 +478,10 @@ Spara ändringarna?</translation>
|
||||
<source>Save</source>
|
||||
<translation>Spara</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
@@ -576,6 +633,14 @@ Spara ändringarna?</translation>
|
||||
<source>Auto-type</source>
|
||||
<translation>Auto-skriv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
@@ -724,6 +789,10 @@ Spara ändringarna?</translation>
|
||||
<source>Root</source>
|
||||
<translation>Root</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -739,6 +808,10 @@ Spara ändringarna?</translation>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Fel lösenord eller korrupt databas-fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -777,10 +850,6 @@ Spara ändringarna?</translation>
|
||||
<source>Groups</source>
|
||||
<translation>Grupper</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Extra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>Vy</translation>
|
||||
@@ -857,18 +926,10 @@ Spara ändringarna?</translation>
|
||||
<source>Find</source>
|
||||
<translation>Sök</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Användarnamn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Kopiera användarnamn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>Lösenord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Kopiera lösenord</translation>
|
||||
@@ -913,6 +974,22 @@ Spara ändringarna?</translation>
|
||||
<source>Toggle window</source>
|
||||
<translation>Visa/dölj fönster</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1093,10 +1170,6 @@ Spara ändringarna?</translation>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Öppna senaste databasen är programmet startar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mark as modified on expanded state changes</source>
|
||||
<translation>Markera som ändrad när utökat läge ändras</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Spara automatiskt är applikationen anslutas</translation>
|
||||
@@ -1133,6 +1206,10 @@ Spara ändringarna?</translation>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation>Vid minimering, minimera fönstret till systemfältet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1163,14 +1240,6 @@ Spara ändringarna?</translation>
|
||||
<source>Unlock database</source>
|
||||
<translation>Lås upp databas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key.</source>
|
||||
<translation>Fel lösenord</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WelcomeWidget</name>
|
||||
|
||||
@@ -244,12 +244,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>关闭?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>正在编辑 "%1" 。
|
||||
仍要关闭吗?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>保存修改?</translation>
|
||||
@@ -310,6 +304,23 @@ Otherwise your changes are lost.</source>
|
||||
你想在锁住它以前保存修改吗?
|
||||
否则修改将会丢失。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -921,18 +932,10 @@ Otherwise your changes are lost.</source>
|
||||
<source>Find</source>
|
||||
<translation>查找</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>用户名</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>将用户名复制到剪贴板</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>密码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>将密码复制到剪贴板</translation>
|
||||
@@ -981,6 +984,18 @@ Otherwise your changes are lost.</source>
|
||||
<source>Tools</source>
|
||||
<translation>工具</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -109,6 +109,16 @@
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>提供了不同的密碼</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation>無法設定金鑰檔案</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>無法設定 %1 成為金鑰檔案:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseOpenWidget</name>
|
||||
@@ -234,11 +244,6 @@
|
||||
<source>Close?</source>
|
||||
<translation>關閉?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Close anyway?</source>
|
||||
<translation>"%1" 正在編輯中。仍然要關閉嗎?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>儲存修改?</translation>
|
||||
@@ -268,6 +273,53 @@ Save changes?</source>
|
||||
<source>locked</source>
|
||||
<translation>已鎖住</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database you are trying to open is locked by another instance of KeePassX.
|
||||
Do you want to open it anyway? Alternatively the database is opened read-only.</source>
|
||||
<translation>你嘗試要打開的資料庫已經被另一個正在執行的 KeePassX 鎖定
|
||||
你要打開它嗎?或者,打開唯讀的資料庫</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation>鎖定資料庫</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation>無法鎖定資料庫,因為目前你正在編輯它
|
||||
請按下取消完成修改或放棄</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation>這個資料庫尚未被儲存
|
||||
你能儲存資料庫或不再鎖定它</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
Do you want to save the database before locking it?
|
||||
Otherwise your changes are lost.</source>
|
||||
<translation>這個資料庫已經被修改
|
||||
想要在鎖定之前,儲存資料庫嗎?
|
||||
否則,這次修改將會遺失</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -311,6 +363,14 @@ Save changes?</source>
|
||||
<source>Current group</source>
|
||||
<translation>目前的群組</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>錯誤</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>無法計算主金鑰</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -423,6 +483,10 @@ Save changes?</source>
|
||||
<source>Save</source>
|
||||
<translation>儲存</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation>打開</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
@@ -574,6 +638,14 @@ Save changes?</source>
|
||||
<source>Auto-type</source>
|
||||
<translation>自動輸入</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation>使用預設的父群組自動輸入序列</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation>設定預設自動輸入序列</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
@@ -722,6 +794,10 @@ Save changes?</source>
|
||||
<source>Root</source>
|
||||
<translation>根</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>無法計算主金鑰</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -737,6 +813,10 @@ Save changes?</source>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>無法的金鑰或資料庫損壞</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>無法計算主金鑰</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -775,10 +855,6 @@ Save changes?</source>
|
||||
<source>Groups</source>
|
||||
<translation>群組</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>其它</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View</source>
|
||||
<translation>顯示</translation>
|
||||
@@ -855,18 +931,10 @@ Save changes?</source>
|
||||
<source>Find</source>
|
||||
<translation>尋找</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>使用者名稱</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>將使用者名稱複製到剪貼簿</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password</source>
|
||||
<translation>密碼</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>將密碼複製到剪貼簿</translation>
|
||||
@@ -911,6 +979,22 @@ Save changes?</source>
|
||||
<source>Toggle window</source>
|
||||
<translation>切換視窗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
<translation>工具</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1091,10 +1175,6 @@ Save changes?</source>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>在啟動時開啟最近的資料庫</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Mark as modified on expanded state changes</source>
|
||||
<translation>擴展狀態發生變化時,標記為已修改</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>離開時,自動儲存</translation>
|
||||
@@ -1131,6 +1211,10 @@ Save changes?</source>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation>將視窗最小化至工作列 </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation>記住最近的金鑰檔案</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
@@ -1161,14 +1245,6 @@ Save changes?</source>
|
||||
<source>Unlock database</source>
|
||||
<translation>解鎖資料庫</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>錯誤</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key.</source>
|
||||
<translation>錯誤的金鑰</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WelcomeWidget</name>
|
||||
|
||||
@@ -160,7 +160,7 @@ uint AutoTypePlatformX11::qtToNativeModifiers(Qt::KeyboardModifiers modifiers)
|
||||
|
||||
void AutoTypePlatformX11::unregisterGlobalShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers)
|
||||
{
|
||||
KeyCode keycode = XKeysymToKeycode(m_dpy, keyToKeySym(key));
|
||||
KeyCode keycode = XKeysymToKeycode(m_dpy, charToKeySym(key));
|
||||
uint nativeModifiers = qtToNativeModifiers(modifiers);
|
||||
|
||||
XUngrabKey(m_dpy, keycode, nativeModifiers, m_rootWindow);
|
||||
|
||||
@@ -83,10 +83,7 @@ public:
|
||||
// Returns \c true if the lock belongs to dead PID, or is old.
|
||||
// The attempt to delete it will tell us if it was really stale or not, though.
|
||||
bool isApparentlyStale() const;
|
||||
|
||||
#ifdef Q_OS_UNIX
|
||||
static int checkFcntlWorksAfterFlock();
|
||||
#endif
|
||||
static QString processNameByPid(qint64 pid);
|
||||
|
||||
QString fileName;
|
||||
#ifdef Q_OS_WIN
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 David Faure <faure+bluesystems@kde.org>
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
@@ -42,10 +43,17 @@
|
||||
#include <sys/file.h> // flock
|
||||
#include <sys/types.h> // kill
|
||||
#include <signal.h> // kill
|
||||
#include <unistd.h>
|
||||
#include <unistd.h> // gethostname
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
# include <libproc.h>
|
||||
#elif defined(Q_OS_LINUX)
|
||||
# include <unistd.h>
|
||||
# include <cstdio>
|
||||
#endif
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#define EINTR_LOOP(var, cmd) \
|
||||
@@ -77,13 +85,13 @@ static inline qint64 qt_safe_write(int fd, const void *data, qint64 len)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static QString localHostName() // from QHostInfo::localHostName()
|
||||
static QByteArray localHostName() // from QHostInfo::localHostName(), modified to return a QByteArray
|
||||
{
|
||||
char hostName[512];
|
||||
if (gethostname(hostName, sizeof(hostName)) == -1)
|
||||
return QString();
|
||||
hostName[sizeof(hostName) - 1] = '\0';
|
||||
return QString::fromLocal8Bit(hostName);
|
||||
QByteArray hostName(512, Qt::Uninitialized);
|
||||
if (gethostname(hostName.data(), hostName.size()) == -1)
|
||||
return QByteArray();
|
||||
hostName.truncate(strlen(hostName.data()));
|
||||
return hostName;
|
||||
}
|
||||
|
||||
// ### merge into qt_safe_write?
|
||||
@@ -122,8 +130,8 @@ QLockFile::LockError QLockFilePrivate::tryLock_sys()
|
||||
// (otherwise we'd have to check every write call)
|
||||
// Use operator% from the fast builder to avoid multiple memory allocations.
|
||||
QByteArray fileData = QByteArray::number(QCoreApplication::applicationPid()) + '\n'
|
||||
+ qAppName().toUtf8() + '\n'
|
||||
+ localHostName().toUtf8() + '\n';
|
||||
+ QCoreApplication::applicationName().toUtf8() + '\n'
|
||||
+ localHostName() + '\n';
|
||||
|
||||
const QByteArray lockFileName = QFile::encodeName(fileName);
|
||||
const int fd = qt_safe_open(lockFileName.constData(), O_WRONLY | O_CREAT | O_EXCL, 0644);
|
||||
@@ -161,7 +169,13 @@ bool QLockFilePrivate::removeStaleLock()
|
||||
const int fd = qt_safe_open(lockFileName.constData(), O_WRONLY, 0644);
|
||||
if (fd < 0) // gone already?
|
||||
return false;
|
||||
#ifdef Q_OS_MAC
|
||||
// ugly workaround: ignore setNativeLocks() result on Mac since it's broken there
|
||||
setNativeLocks(fd);
|
||||
bool success = (::unlink(lockFileName) == 0);
|
||||
#else
|
||||
bool success = setNativeLocks(fd) && (::unlink(lockFileName) == 0);
|
||||
#endif
|
||||
close(fd);
|
||||
return success;
|
||||
}
|
||||
@@ -170,16 +184,48 @@ bool QLockFilePrivate::isApparentlyStale() const
|
||||
{
|
||||
qint64 pid;
|
||||
QString hostname, appname;
|
||||
if (!getLockInfo(&pid, &hostname, &appname))
|
||||
return false;
|
||||
if (hostname.isEmpty() || hostname == localHostName()) {
|
||||
if (::kill(pid, 0) == -1 && errno == ESRCH)
|
||||
return true; // PID doesn't exist anymore
|
||||
if (getLockInfo(&pid, &hostname, &appname)) {
|
||||
if (hostname.isEmpty() || hostname == QString::fromLocal8Bit(localHostName())) {
|
||||
if (::kill(pid, 0) == -1 && errno == ESRCH)
|
||||
return true; // PID doesn't exist anymore
|
||||
const QString processName = processNameByPid(pid);
|
||||
if (!processName.isEmpty()) {
|
||||
QFileInfo fi(appname);
|
||||
if (fi.isSymLink())
|
||||
fi.setFile(fi.symLinkTarget());
|
||||
if (processName.toLower() != fi.fileName().toLower())
|
||||
return true; // PID got reused by a different application.
|
||||
}
|
||||
}
|
||||
}
|
||||
const qint64 age = QFileInfo(fileName).lastModified().secsTo(QDateTime::currentDateTime()) * 1000;
|
||||
return staleLockTime > 0 && age > staleLockTime;
|
||||
}
|
||||
|
||||
QString QLockFilePrivate::processNameByPid(qint64 pid)
|
||||
{
|
||||
#if defined(Q_OS_MAC)
|
||||
char name[1024];
|
||||
proc_name(pid, name, sizeof(name) / sizeof(char));
|
||||
return QFile::decodeName(name);
|
||||
#elif defined(Q_OS_LINUX)
|
||||
if (!QFile::exists(QString("/proc/version")))
|
||||
return QString();
|
||||
char exePath[64];
|
||||
char buf[PATH_MAX + 1];
|
||||
sprintf(exePath, "/proc/%lld/exe", pid);
|
||||
size_t len = static_cast<size_t>(readlink(exePath, buf, sizeof(buf)));
|
||||
if (len >= sizeof(buf)) {
|
||||
// The pid is gone. Return some invalid process name to fail the test.
|
||||
return QString("/ERROR/");
|
||||
}
|
||||
buf[len] = 0;
|
||||
return QFileInfo(QFile::decodeName(buf)).fileName();
|
||||
#else
|
||||
return QString();
|
||||
#endif
|
||||
}
|
||||
|
||||
void QLockFile::unlock()
|
||||
{
|
||||
Q_D(QLockFile);
|
||||
@@ -191,7 +237,6 @@ void QLockFile::unlock()
|
||||
qWarning() << "Could not remove our own lock file" << d->fileName << "maybe permissions changed meanwhile?";
|
||||
// This is bad because other users of this lock file will now have to wait for the stale-lock-timeout...
|
||||
}
|
||||
QFile::remove(d->fileName);
|
||||
d->lockError = QLockFile::NoError;
|
||||
d->isLocked = false;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2013 David Faure <faure+bluesystems@kde.org>
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
@@ -134,27 +135,75 @@ bool QLockFilePrivate::isApparentlyStale() const
|
||||
{
|
||||
qint64 pid;
|
||||
QString hostname, appname;
|
||||
if (!getLockInfo(&pid, &hostname, &appname))
|
||||
return false;
|
||||
|
||||
// On WinRT there seems to be no way of obtaining information about other
|
||||
// processes due to sandboxing
|
||||
#ifndef Q_OS_WINRT
|
||||
if (hostname == QString::fromLocal8Bit(localHostName())) {
|
||||
HANDLE procHandle = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);
|
||||
if (!procHandle)
|
||||
return true;
|
||||
// We got a handle but check if process is still alive
|
||||
DWORD dwR = ::WaitForSingleObject(procHandle, 0);
|
||||
::CloseHandle(procHandle);
|
||||
if (dwR == WAIT_TIMEOUT)
|
||||
return true;
|
||||
if (getLockInfo(&pid, &hostname, &appname)) {
|
||||
if (hostname.isEmpty() || hostname == QString::fromLocal8Bit(localHostName())) {
|
||||
HANDLE procHandle = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);
|
||||
if (!procHandle)
|
||||
return true;
|
||||
// We got a handle but check if process is still alive
|
||||
DWORD dwR = ::WaitForSingleObject(procHandle, 0);
|
||||
::CloseHandle(procHandle);
|
||||
if (dwR == WAIT_TIMEOUT)
|
||||
return true;
|
||||
const QString processName = processNameByPid(pid);
|
||||
if (!processName.isEmpty() && processName != appname)
|
||||
return true; // PID got reused by a different application.
|
||||
}
|
||||
}
|
||||
#endif // !Q_OS_WINRT
|
||||
#else // !Q_OS_WINRT
|
||||
Q_UNUSED(pid);
|
||||
Q_UNUSED(hostname);
|
||||
Q_UNUSED(appname);
|
||||
#endif // Q_OS_WINRT
|
||||
const qint64 age = QFileInfo(fileName).lastModified().msecsTo(QDateTime::currentDateTime());
|
||||
return staleLockTime > 0 && age > staleLockTime;
|
||||
}
|
||||
|
||||
QString QLockFilePrivate::processNameByPid(qint64 pid)
|
||||
{
|
||||
#if !defined(Q_OS_WINRT) && !defined(Q_OS_WINCE)
|
||||
typedef DWORD (WINAPI *GetModuleFileNameExFunc)(HANDLE, HMODULE, LPTSTR, DWORD);
|
||||
|
||||
HMODULE hPsapi = LoadLibraryA("psapi");
|
||||
if (!hPsapi)
|
||||
return QString();
|
||||
|
||||
GetModuleFileNameExFunc qGetModuleFileNameEx
|
||||
= (GetModuleFileNameExFunc)GetProcAddress(hPsapi, "GetModuleFileNameExW");
|
||||
if (!qGetModuleFileNameEx) {
|
||||
FreeLibrary(hPsapi);
|
||||
return QString();
|
||||
}
|
||||
|
||||
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, DWORD(pid));
|
||||
if (!hProcess) {
|
||||
FreeLibrary(hPsapi);
|
||||
return QString();
|
||||
}
|
||||
wchar_t buf[MAX_PATH];
|
||||
const DWORD length = qGetModuleFileNameEx(hProcess, NULL, buf, sizeof(buf) / sizeof(wchar_t));
|
||||
CloseHandle(hProcess);
|
||||
FreeLibrary(hPsapi);
|
||||
if (!length)
|
||||
return QString();
|
||||
QString name = QString::fromWCharArray(buf, length);
|
||||
int i = name.lastIndexOf(QLatin1Char('\\'));
|
||||
if (i >= 0)
|
||||
name.remove(0, i + 1);
|
||||
i = name.lastIndexOf(QLatin1Char('.'));
|
||||
if (i >= 0)
|
||||
name.truncate(i);
|
||||
return name;
|
||||
#else
|
||||
Q_UNUSED(pid);
|
||||
return QString();
|
||||
#endif
|
||||
}
|
||||
|
||||
void QLockFile::unlock()
|
||||
{
|
||||
Q_D(QLockFile);
|
||||
|
||||
@@ -127,6 +127,20 @@ void KeePass2Writer::writeDatabase(QIODevice* device, Database* db)
|
||||
KeePass2XmlWriter xmlWriter;
|
||||
xmlWriter.writeDatabase(m_device, db, &randomStream, headerHash);
|
||||
|
||||
// Explicitly close/reset streams so they are flushed and we can detect
|
||||
// errors. QIODevice::close() resets errorString() etc.
|
||||
if (ioCompressor) {
|
||||
ioCompressor->close();
|
||||
}
|
||||
if (!hashedStream.reset()) {
|
||||
raiseError(hashedStream.errorString());
|
||||
return;
|
||||
}
|
||||
if (!cipherStream.reset()) {
|
||||
raiseError(cipherStream.errorString());
|
||||
return;
|
||||
}
|
||||
|
||||
if (xmlWriter.hasError()) {
|
||||
raiseError(xmlWriter.errorString());
|
||||
}
|
||||
|
||||
@@ -57,6 +57,12 @@ void KeePass2XmlWriter::writeDatabase(QIODevice* device, Database* db, KeePass2R
|
||||
m_xml.writeEndElement();
|
||||
|
||||
m_xml.writeEndDocument();
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(4, 8, 0)
|
||||
if (m_xml.hasError()) {
|
||||
raiseError(device->errorString());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void KeePass2XmlWriter::writeDatabase(const QString& filename, Database* db)
|
||||
|
||||
@@ -295,24 +295,24 @@ bool DatabaseTabWidget::saveDatabase(Database* db)
|
||||
DatabaseManagerStruct& dbStruct = m_dbList[db];
|
||||
|
||||
if (dbStruct.saveToFilename) {
|
||||
bool result = false;
|
||||
|
||||
QSaveFile saveFile(dbStruct.filePath);
|
||||
if (saveFile.open(QIODevice::WriteOnly)) {
|
||||
m_writer.writeDatabase(&saveFile, db);
|
||||
result = saveFile.commit();
|
||||
if (m_writer.hasError()) {
|
||||
MessageBox::critical(this, tr("Error"), tr("Writing the database failed.") + "\n\n"
|
||||
+ m_writer.errorString());
|
||||
return false;
|
||||
}
|
||||
if (!saveFile.commit()) {
|
||||
MessageBox::critical(this, tr("Error"), tr("Writing the database failed.") + "\n\n"
|
||||
+ saveFile.errorString());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (result) {
|
||||
dbStruct.modified = false;
|
||||
updateTabName(db);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
MessageBox::critical(this, tr("Error"), tr("Writing the database failed.") + "\n\n"
|
||||
+ saveFile.errorString());
|
||||
return false;
|
||||
}
|
||||
dbStruct.modified = false;
|
||||
updateTabName(db);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return saveDatabaseAs(db);
|
||||
@@ -326,8 +326,12 @@ bool DatabaseTabWidget::saveDatabaseAs(Database* db)
|
||||
if (dbStruct.saveToFilename) {
|
||||
oldFileName = dbStruct.filePath;
|
||||
}
|
||||
else {
|
||||
oldFileName = tr("New database").append(".kdbx");
|
||||
}
|
||||
QString fileName = fileDialog()->getSaveFileName(this, tr("Save database as"),
|
||||
oldFileName, tr("KeePass 2 Database").append(" (*.kdbx)"));
|
||||
oldFileName, tr("KeePass 2 Database").append(" (*.kdbx)"),
|
||||
Q_NULLPTR, 0, "kdbx");
|
||||
if (!fileName.isEmpty()) {
|
||||
QFileInfo fileInfo(fileName);
|
||||
QString lockFilePath;
|
||||
@@ -370,6 +374,11 @@ bool DatabaseTabWidget::saveDatabaseAs(Database* db)
|
||||
}
|
||||
|
||||
m_writer.writeDatabase(&saveFile, db);
|
||||
if (m_writer.hasError()) {
|
||||
MessageBox::critical(this, tr("Error"), tr("Writing the database failed.") + "\n\n"
|
||||
+ m_writer.errorString());
|
||||
return false;
|
||||
}
|
||||
if (!saveFile.commit()) {
|
||||
MessageBox::critical(this, tr("Error"), tr("Writing the database failed.") + "\n\n"
|
||||
+ saveFile.errorString());
|
||||
@@ -442,7 +451,8 @@ void DatabaseTabWidget::exportToCsv()
|
||||
}
|
||||
|
||||
QString fileName = fileDialog()->getSaveFileName(this, tr("Export database to CSV file"),
|
||||
QString(), tr("CSV file").append(" (*.csv)"));
|
||||
QString(), tr("CSV file").append(" (*.csv)"),
|
||||
Q_NULLPTR, 0, "csv");
|
||||
if (fileName.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -889,8 +889,17 @@ void DatabaseWidget::clearLastGroup(Group* group)
|
||||
void DatabaseWidget::lock()
|
||||
{
|
||||
Q_ASSERT(currentMode() != DatabaseWidget::LockedMode);
|
||||
if (isInSearchMode()) {
|
||||
closeSearch();
|
||||
}
|
||||
|
||||
if (m_groupView->currentGroup()) {
|
||||
m_groupBeforeLock = m_groupView->currentGroup()->uuid();
|
||||
}
|
||||
else {
|
||||
m_groupBeforeLock = m_db->rootGroup()->uuid();
|
||||
}
|
||||
|
||||
m_groupBeforeLock = m_groupView->currentGroup()->uuid();
|
||||
clearAllWidgets();
|
||||
m_unlockDatabaseWidget->load(m_filename);
|
||||
setCurrentWidget(m_unlockDatabaseWidget);
|
||||
|
||||
@@ -53,7 +53,7 @@ QString FileDialog::getOpenFileName(QWidget* parent, const QString& caption, QSt
|
||||
|
||||
QString FileDialog::getSaveFileName(QWidget* parent, const QString& caption, QString dir,
|
||||
const QString& filter, QString* selectedFilter,
|
||||
QFileDialog::Options options)
|
||||
QFileDialog::Options options, const QString& defaultExtension)
|
||||
{
|
||||
if (!m_nextFileName.isEmpty()) {
|
||||
QString result = m_nextFileName;
|
||||
@@ -65,8 +65,29 @@ QString FileDialog::getSaveFileName(QWidget* parent, const QString& caption, QSt
|
||||
dir = config()->get("LastDir").toString();
|
||||
}
|
||||
|
||||
QString result = QFileDialog::getSaveFileName(parent, caption, dir, filter,
|
||||
selectedFilter, options);
|
||||
QString result;
|
||||
#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
|
||||
// the native dialogs on these platforms already append the file extension
|
||||
result = QFileDialog::getSaveFileName(parent, caption, dir, filter,
|
||||
selectedFilter, options);
|
||||
#else
|
||||
QFileDialog dialog(parent, caption, dir, filter);
|
||||
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||
dialog.setFileMode(QFileDialog::AnyFile);
|
||||
if (selectedFilter) {
|
||||
dialog.selectNameFilter(*selectedFilter);
|
||||
}
|
||||
dialog.setOptions(options);
|
||||
dialog.setDefaultSuffix(defaultExtension);
|
||||
|
||||
QStringList results;
|
||||
if (dialog.exec()) {
|
||||
results = dialog.selectedFiles();
|
||||
if (!results.isEmpty()) {
|
||||
result = results[0];
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// on Mac OS X the focus is lost after closing the native dialog
|
||||
if (parent) {
|
||||
|
||||
@@ -27,10 +27,11 @@ class FileDialog
|
||||
public:
|
||||
QString getOpenFileName(QWidget* parent = Q_NULLPTR, const QString& caption = QString(),
|
||||
QString dir = QString(), const QString& filter = QString(),
|
||||
QString* selectedFilter = Q_NULLPTR, QFileDialog::Options options = Q_NULLPTR);
|
||||
QString* selectedFilter = Q_NULLPTR, QFileDialog::Options options = 0);
|
||||
QString getSaveFileName(QWidget* parent = Q_NULLPTR, const QString& caption = QString(),
|
||||
QString dir = QString(), const QString& filter = QString(),
|
||||
QString* selectedFilter = Q_NULLPTR, QFileDialog::Options options = Q_NULLPTR);
|
||||
QString* selectedFilter = Q_NULLPTR, QFileDialog::Options options = 0,
|
||||
const QString& defaultExtension = QString());
|
||||
|
||||
/**
|
||||
* Sets the result of the next get* method call.
|
||||
|
||||
@@ -512,6 +512,7 @@ void MainWindow::updateTrayIcon()
|
||||
}
|
||||
else {
|
||||
if (m_trayIcon) {
|
||||
m_trayIcon->hide();
|
||||
delete m_trayIcon;
|
||||
m_trayIcon = Q_NULLPTR;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,9 @@ void HashedBlockStream::init()
|
||||
|
||||
bool HashedBlockStream::reset()
|
||||
{
|
||||
if (isWritable()) {
|
||||
// Write final block(s) only if device is writable and we haven't
|
||||
// already written a final block.
|
||||
if (isWritable() && (!m_buffer.isEmpty() || m_blockIndex != 0)) {
|
||||
if (!m_buffer.isEmpty()) {
|
||||
if (!writeHashedBlock()) {
|
||||
return false;
|
||||
@@ -74,7 +76,9 @@ bool HashedBlockStream::reset()
|
||||
|
||||
void HashedBlockStream::close()
|
||||
{
|
||||
if (isWritable()) {
|
||||
// Write final block(s) only if device is writable and we haven't
|
||||
// already written a final block.
|
||||
if (isWritable() && (!m_buffer.isEmpty() || m_blockIndex != 0)) {
|
||||
if (!m_buffer.isEmpty()) {
|
||||
writeHashedBlock();
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ SymmetricCipherStream::SymmetricCipherStream(QIODevice* baseDevice, SymmetricCip
|
||||
, m_bufferFilling(false)
|
||||
, m_error(false)
|
||||
, m_isInitalized(false)
|
||||
, m_dataWritten(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -43,6 +44,16 @@ bool SymmetricCipherStream::init(const QByteArray& key, const QByteArray& iv)
|
||||
return m_isInitalized;
|
||||
}
|
||||
|
||||
void SymmetricCipherStream::resetInternalState()
|
||||
{
|
||||
m_buffer.clear();
|
||||
m_bufferPos = 0;
|
||||
m_bufferFilling = false;
|
||||
m_error = false;
|
||||
m_dataWritten = false;
|
||||
m_cipher->reset();
|
||||
}
|
||||
|
||||
bool SymmetricCipherStream::open(QIODevice::OpenMode mode)
|
||||
{
|
||||
if (!m_isInitalized) {
|
||||
@@ -54,27 +65,25 @@ bool SymmetricCipherStream::open(QIODevice::OpenMode mode)
|
||||
|
||||
bool SymmetricCipherStream::reset()
|
||||
{
|
||||
if (isWritable()) {
|
||||
if (isWritable() && m_dataWritten) {
|
||||
if (!writeBlock(true)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
m_buffer.clear();
|
||||
m_bufferPos = 0;
|
||||
m_bufferFilling = false;
|
||||
m_error = false;
|
||||
m_cipher->reset();
|
||||
resetInternalState();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SymmetricCipherStream::close()
|
||||
{
|
||||
if (isWritable()) {
|
||||
if (isWritable() && m_dataWritten) {
|
||||
writeBlock(true);
|
||||
}
|
||||
|
||||
resetInternalState();
|
||||
|
||||
LayeredStream::close();
|
||||
}
|
||||
|
||||
@@ -115,11 +124,25 @@ qint64 SymmetricCipherStream::readData(char* data, qint64 maxSize)
|
||||
|
||||
bool SymmetricCipherStream::readBlock()
|
||||
{
|
||||
QByteArray newData;
|
||||
|
||||
if (m_bufferFilling) {
|
||||
m_buffer.append(m_baseDevice->read(m_cipher->blockSize() - m_buffer.size()));
|
||||
newData.resize(m_cipher->blockSize() - m_buffer.size());
|
||||
}
|
||||
else {
|
||||
m_buffer = m_baseDevice->read(m_cipher->blockSize());
|
||||
m_buffer.clear();
|
||||
newData.resize(m_cipher->blockSize());
|
||||
}
|
||||
|
||||
int readResult = m_baseDevice->read(newData.data(), newData.size());
|
||||
|
||||
if (readResult == -1) {
|
||||
m_error = true;
|
||||
setErrorString(m_baseDevice->errorString());
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
m_buffer.append(newData.left(readResult));
|
||||
}
|
||||
|
||||
if (m_buffer.size() != m_cipher->blockSize()) {
|
||||
@@ -172,6 +195,7 @@ qint64 SymmetricCipherStream::writeData(const char* data, qint64 maxSize)
|
||||
return -1;
|
||||
}
|
||||
|
||||
m_dataWritten = true;
|
||||
qint64 bytesRemaining = maxSize;
|
||||
qint64 offset = 0;
|
||||
|
||||
@@ -200,6 +224,8 @@ qint64 SymmetricCipherStream::writeData(const char* data, qint64 maxSize)
|
||||
|
||||
bool SymmetricCipherStream::writeBlock(bool lastBlock)
|
||||
{
|
||||
Q_ASSERT(lastBlock || (m_buffer.size() == m_cipher->blockSize()));
|
||||
|
||||
if (lastBlock) {
|
||||
// PKCS7 padding
|
||||
int padLen = m_cipher->blockSize() - m_buffer.size();
|
||||
@@ -207,9 +233,6 @@ bool SymmetricCipherStream::writeBlock(bool lastBlock)
|
||||
m_buffer.append(static_cast<char>(padLen));
|
||||
}
|
||||
}
|
||||
else if (m_buffer.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!m_cipher->processInPlace(m_buffer)) {
|
||||
m_error = true;
|
||||
@@ -219,7 +242,7 @@ bool SymmetricCipherStream::writeBlock(bool lastBlock)
|
||||
|
||||
if (m_baseDevice->write(m_buffer) != m_buffer.size()) {
|
||||
m_error = true;
|
||||
setErrorString(m_cipher->errorString());
|
||||
setErrorString(m_baseDevice->errorString());
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -42,6 +42,7 @@ protected:
|
||||
qint64 writeData(const char* data, qint64 maxSize) Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
void resetInternalState();
|
||||
bool readBlock();
|
||||
bool writeBlock(bool lastBlock);
|
||||
|
||||
@@ -51,6 +52,7 @@ private:
|
||||
bool m_bufferFilling;
|
||||
bool m_error;
|
||||
bool m_isInitalized;
|
||||
bool m_dataWritten;
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_SYMMETRICCIPHERSTREAM_H
|
||||
|
||||
@@ -93,9 +93,9 @@ set(TEST_LIBRARIES
|
||||
${ZLIB_LIBRARIES}
|
||||
)
|
||||
|
||||
set(modeltest_SOURCRS modeltest.cpp)
|
||||
qt4_wrap_cpp(modeltest_SOURCRS modeltest.h)
|
||||
add_library(modeltest STATIC ${modeltest_SOURCRS})
|
||||
set(testsupport_SOURCES modeltest.cpp FailDevice.cpp)
|
||||
qt4_wrap_cpp(testsupport_SOURCES modeltest.h FailDevice.h)
|
||||
add_library(testsupport STATIC ${testsupport_SOURCES})
|
||||
|
||||
add_unit_test(NAME testgroup SOURCES TestGroup.cpp MOCS TestGroup.h
|
||||
LIBS ${TEST_LIBRARIES})
|
||||
@@ -110,13 +110,13 @@ add_unit_test(NAME testkeepass2reader SOURCES TestKeePass2Reader.cpp MOCS TestKe
|
||||
LIBS ${TEST_LIBRARIES})
|
||||
|
||||
add_unit_test(NAME testkeepass2writer SOURCES TestKeePass2Writer.cpp MOCS TestKeePass2Writer.h
|
||||
LIBS ${TEST_LIBRARIES})
|
||||
LIBS testsupport ${TEST_LIBRARIES})
|
||||
|
||||
add_unit_test(NAME testgroupmodel SOURCES TestGroupModel.cpp MOCS TestGroupModel.h
|
||||
LIBS modeltest ${TEST_LIBRARIES})
|
||||
LIBS testsupport ${TEST_LIBRARIES})
|
||||
|
||||
add_unit_test(NAME testentrymodel SOURCES TestEntryModel.cpp MOCS TestEntryModel.h
|
||||
LIBS modeltest ${TEST_LIBRARIES})
|
||||
LIBS testsupport ${TEST_LIBRARIES})
|
||||
|
||||
add_unit_test(NAME testcryptohash SOURCES TestCryptoHash.cpp MOCS TestCryptoHash.h
|
||||
LIBS ${TEST_LIBRARIES})
|
||||
@@ -125,7 +125,7 @@ add_unit_test(NAME testsymmetriccipher SOURCES TestSymmetricCipher.cpp MOCS Test
|
||||
LIBS ${TEST_LIBRARIES})
|
||||
|
||||
add_unit_test(NAME testhashedblockstream SOURCES TestHashedBlockStream.cpp MOCS TestHashedBlockStream.h
|
||||
LIBS ${TEST_LIBRARIES})
|
||||
LIBS testsupport ${TEST_LIBRARIES})
|
||||
|
||||
add_unit_test(NAME testkeepass2randomstream SOURCES TestKeePass2RandomStream.cpp MOCS TestKeePass2RandomStream.h
|
||||
LIBS ${TEST_LIBRARIES})
|
||||
|
||||
63
tests/FailDevice.cpp
Normal file
63
tests/FailDevice.cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright (C) 2015 Felix Geyer <debfx@fobos.de>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#include "FailDevice.h"
|
||||
|
||||
FailDevice::FailDevice(int failAfter, QObject* parent)
|
||||
: QBuffer(parent)
|
||||
, m_failAfter(failAfter)
|
||||
, m_readCount(0)
|
||||
, m_writeCount(0)
|
||||
{
|
||||
}
|
||||
|
||||
bool FailDevice::open(QIODevice::OpenMode openMode)
|
||||
{
|
||||
return QBuffer::open(openMode | QIODevice::Unbuffered);
|
||||
}
|
||||
|
||||
qint64 FailDevice::readData(char* data, qint64 len)
|
||||
{
|
||||
if (m_readCount >= m_failAfter) {
|
||||
setErrorString("FAILDEVICE");
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
qint64 result = QBuffer::readData(data, len);
|
||||
if (result != -1) {
|
||||
m_readCount += result;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
qint64 FailDevice::writeData(const char* data, qint64 len)
|
||||
{
|
||||
if (m_writeCount >= m_failAfter) {
|
||||
setErrorString("FAILDEVICE");
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
qint64 result = QBuffer::writeData(data, len);
|
||||
if (result != -1) {
|
||||
m_writeCount += result;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
43
tests/FailDevice.h
Normal file
43
tests/FailDevice.h
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (C) 2015 Felix Geyer <debfx@fobos.de>
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#ifndef KEEPASSX_FAILDEVICE_H
|
||||
#define KEEPASSX_FAILDEVICE_H
|
||||
|
||||
#include <QBuffer>
|
||||
|
||||
#include "core/Global.h"
|
||||
|
||||
class FailDevice : public QBuffer
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit FailDevice(int failAfter, QObject* parent = Q_NULLPTR);
|
||||
bool open(QIODevice::OpenMode openMode) Q_DECL_OVERRIDE;
|
||||
|
||||
protected:
|
||||
qint64 readData(char* data, qint64 len) Q_DECL_OVERRIDE;
|
||||
qint64 writeData(const char* data, qint64 len) Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
int m_failAfter;
|
||||
int m_readCount;
|
||||
int m_writeCount;
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_FAILDEVICE_H
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <QTest>
|
||||
|
||||
#include "tests.h"
|
||||
#include "FailDevice.h"
|
||||
#include "crypto/Crypto.h"
|
||||
#include "streams/HashedBlockStream.h"
|
||||
|
||||
@@ -71,3 +72,34 @@ void TestHashedBlockStream::testWriteRead()
|
||||
buffer.reset();
|
||||
buffer.buffer().clear();
|
||||
}
|
||||
|
||||
void TestHashedBlockStream::testReset()
|
||||
{
|
||||
QBuffer buffer;
|
||||
QVERIFY(buffer.open(QIODevice::WriteOnly));
|
||||
|
||||
HashedBlockStream writer(&buffer, 16);
|
||||
QVERIFY(writer.open(QIODevice::WriteOnly));
|
||||
QCOMPARE(writer.write(QByteArray(8, 'Z')), qint64(8));
|
||||
// test if reset() and close() write only one final block
|
||||
QVERIFY(writer.reset());
|
||||
QVERIFY(writer.reset());
|
||||
writer.close();
|
||||
QCOMPARE(buffer.buffer().size(), 8 + (32 + 4 + 4) * 2);
|
||||
}
|
||||
|
||||
void TestHashedBlockStream::testWriteFailure()
|
||||
{
|
||||
FailDevice failDevice(1500);
|
||||
QVERIFY(failDevice.open(QIODevice::WriteOnly));
|
||||
|
||||
QByteArray input(2000, 'Z');
|
||||
|
||||
HashedBlockStream writer(&failDevice, 500);
|
||||
QVERIFY(writer.open(QIODevice::WriteOnly));
|
||||
|
||||
QCOMPARE(writer.write(input.left(900)), qint64(900));
|
||||
writer.write(input.left(900));
|
||||
QVERIFY(!writer.reset());
|
||||
QCOMPARE(writer.errorString(), QString("FAILDEVICE"));
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ class TestHashedBlockStream : public QObject
|
||||
private Q_SLOTS:
|
||||
void initTestCase();
|
||||
void testWriteRead();
|
||||
void testReset();
|
||||
void testWriteFailure();
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_TESTHASHEDBLOCKSTREAM_H
|
||||
|
||||
@@ -21,12 +21,14 @@
|
||||
#include <QTest>
|
||||
|
||||
#include "tests.h"
|
||||
#include "FailDevice.h"
|
||||
#include "core/Database.h"
|
||||
#include "core/Group.h"
|
||||
#include "core/Metadata.h"
|
||||
#include "crypto/Crypto.h"
|
||||
#include "format/KeePass2Reader.h"
|
||||
#include "format/KeePass2Writer.h"
|
||||
#include "format/KeePass2XmlWriter.h"
|
||||
#include "keys/PasswordKey.h"
|
||||
|
||||
QTEST_GUILESS_MAIN(TestKeePass2Writer)
|
||||
@@ -101,6 +103,30 @@ void TestKeePass2Writer::testNonAsciiPasswords()
|
||||
QCOMPARE(m_dbTest->rootGroup()->entries()[0]->password(), m_dbOrg->rootGroup()->entries()[0]->password());
|
||||
}
|
||||
|
||||
void TestKeePass2Writer::testDeviceFailure()
|
||||
{
|
||||
CompositeKey key;
|
||||
key.addKey(PasswordKey("test"));
|
||||
Database* db = new Database();
|
||||
db->setKey(key);
|
||||
// Disable compression so we write a predictable number of bytes.
|
||||
db->setCompressionAlgo(Database::CompressionNone);
|
||||
|
||||
Entry* entry = new Entry();
|
||||
entry->setParent(db->rootGroup());
|
||||
QByteArray attachment(4096, 'Z');
|
||||
entry->attachments()->set("test", attachment);
|
||||
|
||||
FailDevice failDevice(512);
|
||||
QVERIFY(failDevice.open(QIODevice::WriteOnly));
|
||||
KeePass2Writer writer;
|
||||
writer.writeDatabase(&failDevice, db);
|
||||
QVERIFY(writer.hasError());
|
||||
QCOMPARE(writer.errorString(), QString("FAILDEVICE"));
|
||||
|
||||
delete db;
|
||||
}
|
||||
|
||||
void TestKeePass2Writer::cleanupTestCase()
|
||||
{
|
||||
delete m_dbOrg;
|
||||
|
||||
@@ -32,6 +32,7 @@ private Q_SLOTS:
|
||||
void testProtectedAttributes();
|
||||
void testAttachments();
|
||||
void testNonAsciiPasswords();
|
||||
void testDeviceFailure();
|
||||
void cleanupTestCase();
|
||||
|
||||
private:
|
||||
|
||||
@@ -207,3 +207,22 @@ void TestSymmetricCipher::testPadding()
|
||||
QByteArray decrypted = streamDec.readAll();
|
||||
QCOMPARE(decrypted, plainText);
|
||||
}
|
||||
|
||||
void TestSymmetricCipher::testStreamReset()
|
||||
{
|
||||
QByteArray key = QByteArray::fromHex("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4");
|
||||
QByteArray iv = QByteArray::fromHex("000102030405060708090a0b0c0d0e0f");
|
||||
|
||||
QBuffer buffer;
|
||||
QVERIFY(buffer.open(QIODevice::WriteOnly));
|
||||
SymmetricCipherStream writer(&buffer, SymmetricCipher::Aes256, SymmetricCipher::Cbc,
|
||||
SymmetricCipher::Encrypt);
|
||||
QVERIFY(writer.init(key, iv));
|
||||
QVERIFY(writer.open(QIODevice::WriteOnly));
|
||||
QCOMPARE(writer.write(QByteArray(4, 'Z')), qint64(4));
|
||||
// test if reset() and close() write only one block
|
||||
QVERIFY(writer.reset());
|
||||
QVERIFY(writer.reset());
|
||||
writer.close();
|
||||
QCOMPARE(buffer.buffer().size(), 16);
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ private Q_SLOTS:
|
||||
void testAes256CbcDecryption();
|
||||
void testSalsa20();
|
||||
void testPadding();
|
||||
void testStreamReset();
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_TESTSYMMETRICCIPHER_H
|
||||
|
||||
@@ -57,11 +57,21 @@ void TestGui::initTestCase()
|
||||
m_tabWidget = m_mainWindow->findChild<DatabaseTabWidget*>("tabWidget");
|
||||
m_mainWindow->show();
|
||||
Tools::wait(50);
|
||||
|
||||
QByteArray tmpData;
|
||||
QFile sourceDbFile(QString(KEEPASSX_TEST_DATA_DIR).append("/NewDatabase.kdbx"));
|
||||
QVERIFY(sourceDbFile.open(QIODevice::ReadOnly));
|
||||
QVERIFY(Tools::readAllFromDevice(&sourceDbFile, tmpData));
|
||||
|
||||
QVERIFY(m_orgDbFile.open());
|
||||
m_orgDbFileName = QFileInfo(m_orgDbFile.fileName()).fileName();
|
||||
QCOMPARE(m_orgDbFile.write(tmpData), static_cast<qint64>((tmpData.size())));
|
||||
m_orgDbFile.close();
|
||||
}
|
||||
|
||||
void TestGui::testOpenDatabase()
|
||||
{
|
||||
fileDialog()->setNextFileName(QString(KEEPASSX_TEST_DATA_DIR).append("/NewDatabase.kdbx"));
|
||||
fileDialog()->setNextFileName(m_orgDbFile.fileName());
|
||||
triggerAction("actionDatabaseOpen");
|
||||
|
||||
QWidget* databaseOpenWidget = m_mainWindow->findChild<QWidget*>("databaseOpenWidget");
|
||||
@@ -75,7 +85,7 @@ void TestGui::testOpenDatabase()
|
||||
void TestGui::testTabs()
|
||||
{
|
||||
QCOMPARE(m_tabWidget->count(), 1);
|
||||
QCOMPARE(m_tabWidget->tabText(m_tabWidget->currentIndex()), QString("NewDatabase.kdbx"));
|
||||
QCOMPARE(m_tabWidget->tabText(m_tabWidget->currentIndex()), m_orgDbFileName);
|
||||
|
||||
m_dbWidget = m_tabWidget->currentDatabaseWidget();
|
||||
m_db = m_dbWidget->database();
|
||||
@@ -103,7 +113,7 @@ void TestGui::testEditEntry()
|
||||
QTest::mouseClick(editEntryWidgetButtonBox->button(QDialogButtonBox::Ok), Qt::LeftButton);
|
||||
// make sure the database isn't marked as modified
|
||||
// wait for modified timer
|
||||
QTRY_COMPARE(m_tabWidget->tabText(m_tabWidget->currentIndex()), QString("NewDatabase.kdbx"));
|
||||
QTRY_COMPARE(m_tabWidget->tabText(m_tabWidget->currentIndex()), m_orgDbFileName);
|
||||
}
|
||||
|
||||
void TestGui::testAddEntry()
|
||||
@@ -134,7 +144,7 @@ void TestGui::testAddEntry()
|
||||
QCOMPARE(entry->title(), QString("test"));
|
||||
QCOMPARE(entry->historyItems().size(), 0);
|
||||
// wait for modified timer
|
||||
QTRY_COMPARE(m_tabWidget->tabText(m_tabWidget->currentIndex()), QString("NewDatabase.kdbx*"));
|
||||
QTRY_COMPARE(m_tabWidget->tabText(m_tabWidget->currentIndex()), QString("%1*").arg(m_orgDbFileName));
|
||||
|
||||
QAction* entryEditAction = m_mainWindow->findChild<QAction*>("actionEntryEdit");
|
||||
QVERIFY(entryEditAction->isEnabled());
|
||||
@@ -352,7 +362,7 @@ void TestGui::testDragAndDropGroup()
|
||||
|
||||
void TestGui::testSaveAs()
|
||||
{
|
||||
QFileInfo fileInfo(QString(KEEPASSX_TEST_DATA_DIR).append("/NewDatabase.kdbx"));
|
||||
QFileInfo fileInfo(m_orgDbFile.fileName());
|
||||
QDateTime lastModified = fileInfo.lastModified();
|
||||
|
||||
m_db->metadata()->setName("SaveAs");
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <QAbstractItemModel>
|
||||
#include <QObject>
|
||||
#include <QTemporaryFile>
|
||||
|
||||
class Database;
|
||||
class DatabaseTabWidget;
|
||||
@@ -60,6 +61,8 @@ private:
|
||||
MainWindow* m_mainWindow;
|
||||
DatabaseTabWidget* m_tabWidget;
|
||||
DatabaseWidget* m_dbWidget;
|
||||
QTemporaryFile m_orgDbFile;
|
||||
QString m_orgDbFileName;
|
||||
QString m_tmpFileName;
|
||||
Database* m_db;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user