mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-12-04 15:39:34 +01:00
Compare commits
43 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c8857ac2ba | ||
|
|
367fbbba39 | ||
|
|
abf469f743 | ||
|
|
878995366a | ||
|
|
1635a5211f | ||
|
|
595b1011dd | ||
|
|
9bb291235d | ||
|
|
7d4ef0b8d0 | ||
|
|
8d16522d39 | ||
|
|
cd1192b409 | ||
|
|
bf2fd63131 | ||
|
|
9532bedd7d | ||
|
|
e9c8363b70 | ||
|
|
fb57ed2bcd | ||
|
|
57ec558396 | ||
|
|
6e2de1cd79 | ||
|
|
8ace3ab7f2 | ||
|
|
18e4dca6c9 | ||
|
|
48eca3e11f | ||
|
|
57c1a0f4b6 | ||
|
|
bde4d63fdb | ||
|
|
4867d26f7d | ||
|
|
9bd3ab717e | ||
|
|
3679b21701 | ||
|
|
49f58b4ed8 | ||
|
|
235361faf4 | ||
|
|
208b803fbe | ||
|
|
8a92cec03f | ||
|
|
00f068b93e | ||
|
|
654353e26b | ||
|
|
d670ef2638 | ||
|
|
aff935b3c7 | ||
|
|
107c0673c7 | ||
|
|
c14d04b3e8 | ||
|
|
7a017041bf | ||
|
|
eb56bd8973 | ||
|
|
93585aded7 | ||
|
|
38245aa2a9 | ||
|
|
1f33e6f044 | ||
|
|
4752adf9d3 | ||
|
|
2d741afe3e | ||
|
|
5e6b17aba4 | ||
|
|
c51098e2cf |
32
CHANGELOG
32
CHANGELOG
@@ -1,3 +1,35 @@
|
||||
2.0.3 (2016-09-04)
|
||||
=========================
|
||||
|
||||
- Improved error reporting when reading / writing databases fails. [#450, #462]
|
||||
- Display an error message when opening a custom icon fails.
|
||||
- Detect custom icon format based on contents instead of the filename. [#512]
|
||||
- Keep symlink intact when saving databases. [#442].
|
||||
- Fix a crash when deleting parent group of recycle bin. [#520]
|
||||
- Display a confirm dialog before moving an entry to the recycle bin. [#447]
|
||||
- Repair UUIDs of inconsistent history items. [#130]
|
||||
- Only include top-level windows in auto-type window list when using gnome-shell.
|
||||
- Update translations.
|
||||
|
||||
2.0.2 (2016-02-02)
|
||||
=========================
|
||||
|
||||
- Fix regression in database writer that caused it to strip certain special
|
||||
characters (characters from Unicode plane > 0).
|
||||
- Fix bug in repair function that caused it to strip non-ASCII characters.
|
||||
|
||||
2.0.1 (2016-01-31)
|
||||
=========================
|
||||
|
||||
- Flush temporary file before opening attachment. [#390]
|
||||
- Disable password generator when showing entry in history mode. [#422]
|
||||
- Strip invalid XML chars when writing databases. [#392]
|
||||
- Add repair function to fix databases with invalid XML chars. [#392]
|
||||
- Display custom icons scaled. [#322]
|
||||
- Allow opening databases that have no password and keyfile. [#391]
|
||||
- Fix crash when importing .kdb files with invalid icon ids. [#425]
|
||||
- Update translations.
|
||||
|
||||
2.0 (2015-12-06)
|
||||
=========================
|
||||
|
||||
|
||||
@@ -33,8 +33,8 @@ option(WITH_TESTS "Enable building of unit tests" ON)
|
||||
option(WITH_GUI_TESTS "Enable building of GUI tests" OFF)
|
||||
option(WITH_CXX11 "Build with the C++ 11 standard" ON)
|
||||
|
||||
set(KEEPASSX_VERSION "2.0")
|
||||
set(KEEPASSX_VERSION_NUM "2.0")
|
||||
set(KEEPASSX_VERSION "2.0.3")
|
||||
set(KEEPASSX_VERSION_NUM "2.0.3")
|
||||
|
||||
if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
||||
set(CMAKE_COMPILER_IS_CLANG 1)
|
||||
|
||||
@@ -57,12 +57,12 @@ The following libraries are required:
|
||||
* Qt 4 (>= 4.6)
|
||||
* libgcrypt
|
||||
* zlib
|
||||
* libxtst (optional for auto-type on X11)
|
||||
* libxi, libxtst (optional for auto-type on X11)
|
||||
|
||||
On Debian you can install them with:
|
||||
|
||||
```bash
|
||||
sudo apt-get install build-essential cmake libqt4-dev libgcrypt11-dev zlib1g-dev
|
||||
sudo apt-get install build-essential cmake libqt4-dev libgcrypt11-dev zlib1g-dev libxi-dev libxtst-dev
|
||||
```
|
||||
|
||||
#### Build Steps
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Revize</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>S použitím:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -95,7 +99,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to create Key File : </source>
|
||||
<translation>Nedaří se vytvořit soubor s klíčem :</translation>
|
||||
<translation>Nedaří se vytvořit soubor s klíčem:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a key file</source>
|
||||
@@ -103,7 +107,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Question</source>
|
||||
<translation>Otázka</translation>
|
||||
<translation>Dotaz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to use an empty string as password?</source>
|
||||
@@ -148,7 +152,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Databázi se nepodařilo otevřít.</translation>
|
||||
<translation>Databázi se nedaří otevřít.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
@@ -167,6 +171,43 @@
|
||||
<translation>Vyberte soubor s klíčem</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Opravit databázi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Chyba</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Nedaří se otevřít soubor s klíčem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Databáze je v pořádku otevřená. Není třeba žádného zásahu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Nedaří se otevřít databázi.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Úspěch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>Databáze je úspěšně opravená
|
||||
Nyní jí můžete uložit.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Databázi se nedaří opravit.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -179,7 +220,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Transform rounds:</source>
|
||||
<translation>Počet průchodů algoritmu:</translation>
|
||||
<translation>Počet průchodů šifrovacího algoritmu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default username:</source>
|
||||
@@ -191,7 +232,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source> MiB</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation> MiB</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Benchmark</source>
|
||||
@@ -199,11 +240,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Max. history items:</source>
|
||||
<translation>Nejvyšší umožněný počet položek historie:</translation>
|
||||
<translation>Omezit počet uchovávaných předchozích verzí položky na:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max. history size:</source>
|
||||
<translation>Nejvyšší umožněný objem dat historie záznamů:</translation>
|
||||
<translation>Omezit datový objem předchozích verzí položek na:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -214,7 +255,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>Databáze aplikace KeePass verze 2</translation>
|
||||
<translation>Databáze ve formátu KeePass verze 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
@@ -234,11 +275,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Open KeePass 1 database</source>
|
||||
<translation>Otevřít databázi aplikace KeePass verze 1</translation>
|
||||
<translation>Otevřít databázi ve formátu KeePass verze 1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 1 database</source>
|
||||
<translation>Databáze aplikace KeePass verze 1</translation>
|
||||
<translation>Databáze ve formátu KeePass verze 1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files (*)</source>
|
||||
@@ -255,7 +296,7 @@
|
||||
<message>
|
||||
<source>"%1" was modified.
|
||||
Save changes?</source>
|
||||
<translation>%1 bylo změněno.
|
||||
<translation>„%1“ bylo změněno.
|
||||
Uložit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -282,7 +323,7 @@ Uložit změny?</translation>
|
||||
<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
|
||||
.lock soubor). To znamená, že je nejspíš už 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
|
||||
@@ -302,7 +343,7 @@ Pokud chcete změny dokončit, klikněte na Zrušit. V opačném případě změ
|
||||
<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 neuzamykat.</translation>
|
||||
Buď ji můžete uložit, nebo neuzamknout.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
@@ -315,7 +356,7 @@ Pokud ne, provedené změny budou ztraceny.</translation>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation>%1 je právě upravováno.
|
||||
<translation>„%1“ je právě upravováno.
|
||||
Přesto zavřít a zahodit změny?</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -349,7 +390,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to delete the entry "%1" for good?</source>
|
||||
<translation>Opravdu chcete nenávratně smazat položku %1?</translation>
|
||||
<translation>Opravdu chcete nenávratně smazat položku „%1“?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entries?</source>
|
||||
@@ -373,7 +414,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to delete the group "%1" for good?</source>
|
||||
<translation>Opravdu chcete nenávratně smazat skupinu %1?</translation>
|
||||
<translation>Opravdu chcete nenávratně smazat skupinu „%1“?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Current group</source>
|
||||
@@ -385,7 +426,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Nepodařilo se spočítat hlavní klíč</translation>
|
||||
<translation>Nedaří se spočítat hlavní klíč</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -520,11 +561,11 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>+</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>+</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>-</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>-</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Window title:</source>
|
||||
@@ -574,7 +615,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat:</source>
|
||||
<translation>Zopakovat:</translation>
|
||||
<translation>Zopakování hesla:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gen.</source>
|
||||
@@ -590,7 +631,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Presets</source>
|
||||
<translation>Přednastavené</translation>
|
||||
<translation>Předpřipravené</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Notes:</source>
|
||||
@@ -699,7 +740,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<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. Používá ji %n položek</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ště jí používá %n položek.</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -777,7 +818,7 @@ Přesto uložit?</translation>
|
||||
<name>KeePass1OpenWidget</name>
|
||||
<message>
|
||||
<source>Import KeePass1 database</source>
|
||||
<translation>Importovat databázi aplikace KeePass verze 1</translation>
|
||||
<translation>Importovat databázi ve formátu KeePass verze 1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@@ -785,14 +826,14 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Databázi nelze otevřít.</translation>
|
||||
<translation>Databázi se nedaří otevřít.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass1Reader</name>
|
||||
<message>
|
||||
<source>Unable to read keyfile.</source>
|
||||
<translation>Soubor s klíčem nebylo možné načíst.</translation>
|
||||
<translation>Nedaří se načíst soubor s klíčem.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not a KeePass database.</source>
|
||||
@@ -833,6 +874,16 @@ Přesto uložit?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Nedaří se spočítat hlavní klíč</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Zvolený soubor je databáze ve starém formátu KeePass 1 (.kdb).
|
||||
|
||||
Můžete ho importovat pomocí Databáze → Importovat databázi KeePass 1.
|
||||
Jedná se o jednosměrný převod. Databázi, vzniklou z importu, nepůjde otevřít ve staré verzi KeePassX 0.4.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -877,7 +928,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quit</source>
|
||||
<translation>Ukončit</translation>
|
||||
<translation>Ukončit aplikaci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About</source>
|
||||
@@ -993,7 +1044,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle window</source>
|
||||
<translation>Přepnout okno</translation>
|
||||
<translation>Zobrazit/skrýt okno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
@@ -1011,6 +1062,30 @@ Přesto uložit?</translation>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Exportovat do CSV souboru</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Opravit databázi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>Databáze ve formátu KeePass 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Všechny soubory</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Uložit opravenou databázi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Chyba</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Zápis do databáze se nezdařil.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1036,7 +1111,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Numbers</source>
|
||||
<translation>Čísla</translation>
|
||||
<translation>Číslice</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Special Characters</source>
|
||||
@@ -1155,7 +1230,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Case sensitive</source>
|
||||
<translation>Rozlišovat velikost písmen</translation>
|
||||
<translation>Rozlišovat malá/velká písmena</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Current group</source>
|
||||
@@ -1221,7 +1296,7 @@ Přesto uložit?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show a system tray icon</source>
|
||||
<translation>Zobrazit ikonu v oznamovací oblasti systémového panelu</translation>
|
||||
<translation>Zobrazovat ikonu v oznamovací oblasti systémového panelu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Revision</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Bruger:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -167,6 +171,43 @@
|
||||
<translation>Vælg nøglefil</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Reparer database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fejl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Kan ikke åbne nøglefil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Databasen åbnede fint. Intet at gøre.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Kan ikke åbne databasen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Succes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>Databasen er blevet succesfuldt repareret
|
||||
Du kan gemme den nu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Kan ikke reparere databasen.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -828,6 +869,16 @@ Vil du alligevel gemme?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Kan ikke beregne hovednøgle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Den valgte fil er en gammel KeePass 1 databasefil (.kdb).
|
||||
|
||||
Du kan importere den ved at klikke på Database > 'Importér KeePass 1 database'.
|
||||
Dette er en envejs konvertering. Du vil ikke være i stand til at åbne den importerede database med den gamle KeePassX 0.4 version.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -1006,6 +1057,30 @@ Vil du alligevel gemme?</translation>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Eksportér til CSV-fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Reparer database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>KeePass 2 Database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Alle filer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Gem repareret database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fejl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Skrivning til database fejler.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Überarbeitung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>In Benutzung:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -166,6 +170,43 @@
|
||||
<translation>Schlüsseldatei auswählen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Datenbank reparieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Schlüsseldatei kann nicht geöffnet werden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Datenbank wurde ordnungsgemäß geöffnet. Es gibt nichts zu tun.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Öffnen der Datenbank nicht möglich.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Erfolg</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>Datenbank erfolgreich repariert
|
||||
sie kann nun gespeichert werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Reparieren der Datenbank nicht möglich.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -826,6 +867,16 @@ Soll sie dennoch gespeichert werden? </translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Berechnung des "master keys" gescheitert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Die ausgewählte Datei ist eine alte KeePass 1 Datenbank (.kdb).
|
||||
|
||||
Zum Importieren gehen Sie auf Datenbank > 'KeePass 1 Datenbank importieren'.
|
||||
Dieser Vorgang ist nur in eine Richtung möglich. Die importierte Datenbank kann später nicht mehr mit der alten KeePassX Version 0.4 geöffnet werden.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -1004,6 +1055,30 @@ Soll sie dennoch gespeichert werden? </translation>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Als CSV Datei exportieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Datenbank reparieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>KeePass 2 Datenbank</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Alle Dateien</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Reparierte Datenbank speichern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Schreiben der Datenbank fehlgeschlagen.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -172,6 +172,42 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -329,6 +365,10 @@ Discard changes and close anyway?</source>
|
||||
Do you want to save it anyway?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -383,6 +423,14 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entry to recycle bin?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to move entry "%1" to the recycle bin?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidget</name>
|
||||
@@ -705,6 +753,14 @@ Do you want to save it anyway?</source>
|
||||
<numerusform></numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't read icon:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
@@ -818,6 +874,10 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>KeePass2Reader</name>
|
||||
@@ -1022,6 +1082,30 @@ This is a one-way migration. You won't be able to open the imported databas
|
||||
<source>Export to CSV file</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -9,6 +9,14 @@
|
||||
<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 es distribuido bajo los términos de la versión 2 de la Licencia Pública GNU (GPL) o por la versión 3 (si así lo prefiere).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Revision</source>
|
||||
<translation>Revisión</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Usando:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -163,6 +171,43 @@
|
||||
<translation>Seleccionar archivo llave</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Reparar base de datos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>No se puede abrir el archivo llave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Base de datos abierta correctamente. Nada que hacer.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>No se pudo abrir la base de datos.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Éxito</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>La base de datos ha sido reparada correctamente
|
||||
Ahora puede guardarla.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>No se pudo reparar la base de datos.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -322,6 +367,12 @@ Discard changes and close anyway?</source>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation>La escritura del archivo CSV falló.</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>La base de datos que está tratando de guardar está bloqueda por otra instancia de KeePassX.
|
||||
̉¿Desea guardarla de cualquier manera?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -819,6 +870,16 @@ Discard changes and close anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>No se puede calcular la clave maestra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>El archivo seleccionado es una vieja base de datos de KeePass 1 (.kdb).
|
||||
|
||||
Puede importarla haciendo click en 'Base de datos' > 'Importar base de datos de Keepass 1'.
|
||||
Esta migración es en un único sentido. No podrá abrir la base importada con la vieja versión 0.4 de KeePassX. </translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -997,6 +1058,30 @@ Discard changes and close anyway?</source>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Exportar a un archivo CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Reparar la base de datos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>Base de datos de KeePass 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Todos los archivos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Guardar base de datos reparada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Error</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Fallo al escribir la base de datos.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1269,10 +1354,6 @@ Discard changes and close anyway?</source>
|
||||
<source>path to a custom config file</source>
|
||||
<translation>ruta a un archivo de configuración personalizado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>password of the database (DANGEROUS!)</source>
|
||||
<translation>contraseña de la base de datos (¡PELIGROSO!)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>key file of the database</source>
|
||||
<translation>archivo llave de la base de datos</translation>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Utilise :</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -79,7 +83,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Key files</source>
|
||||
<translation>Fichiers de clé</translation>
|
||||
<translation>Fichiers-clés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
@@ -120,7 +124,7 @@
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>Impossible de définir %1 comme fichier-clé:
|
||||
<translation>Impossible de définir %1 comme fichier-clé :
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
@@ -167,6 +171,43 @@
|
||||
<translation>Choisissez un fichier-clé</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Réparer la base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Erreur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Impossible d'ouvrir le fichier-clé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>La base de données s'est bien ouverte. Aucune action à effectuer.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Impossible d'ouvrir la base de données.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Succès</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>La base de données a correctement été réparée.
|
||||
Vous pouvez maintenant la sauvegarder.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Impossible de réparer la base de données.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -286,7 +327,7 @@ Voulez-vous quand même l'ouvrir ? Dans ce cas, elle sera ouverte en lectur
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation>Verrouiiler la base de données</translation>
|
||||
<translation>Verrouiller la base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
@@ -449,7 +490,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
<message>
|
||||
<source>Unable to save the attachment:
|
||||
</source>
|
||||
<translation>Impossible d'enregistrer le fichier attaché:
|
||||
<translation>Impossible d'enregistrer le fichier attaché :
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -532,7 +573,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set custom sequence:</source>
|
||||
<translation>Définir une séquence personnalisé :</translation>
|
||||
<translation>Définir une séquence personnalisée :</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -562,7 +603,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
<translation>Non d'utilisateur :</translation>
|
||||
<translation>Nom d'utilisateur :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password:</source>
|
||||
@@ -755,7 +796,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Non d'utilisateur</translation>
|
||||
<translation>Nom d'utilisateur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>URL</source>
|
||||
@@ -792,7 +833,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not a KeePass database.</source>
|
||||
<translation>Ce n'est pas une base de donnée KeePass.</translation>
|
||||
<translation>Ce n'est pas une base de données KeePass.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported encryption algorithm.</source>
|
||||
@@ -800,7 +841,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported KeePass database version.</source>
|
||||
<translation>Version de base de donnée KeePass non supportée.</translation>
|
||||
<translation>Version de base de données KeePass non supportée.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Root</source>
|
||||
@@ -815,20 +856,30 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
<name>KeePass2Reader</name>
|
||||
<message>
|
||||
<source>Not a KeePass database.</source>
|
||||
<translation>Ce n'est pas une base de donnée KeePass.</translation>
|
||||
<translation>Ce n'est pas une base de données KeePass.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported KeePass database version.</source>
|
||||
<translation>Version de base de donnée KeePass non supportée.</translation>
|
||||
<translation>Version de base de données KeePass non supportée.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Mauvaise clé ou fichier de base de donnée corrompu.</translation>
|
||||
<translation>Mauvaise clé ou fichier de base de données corrompu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Impossible de calculer la clé maître</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Le fichier sélectionné est une ancienne base de données pour KeePass 1 (.kdb).
|
||||
|
||||
Vous pouvez l'importer en cliquant sur "Base de données" > "Importer une base de données KeePass 1".
|
||||
Ceci est une migration à sens unique. Vous ne serez plus en mesure d'ouvrir la base de données importée avec l'ancienne version KeePassX version 0.4.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -861,7 +912,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy attribute to clipboard</source>
|
||||
<translation>Copier l'attribut dans le presse-papiers</translation>
|
||||
<translation>Copier l'attribut dans le presse-papier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Groups</source>
|
||||
@@ -881,19 +932,19 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open database</source>
|
||||
<translation>Ouvrir une base de donnée</translation>
|
||||
<translation>Ouvrir une base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save database</source>
|
||||
<translation>Enregistrer la base de donnée</translation>
|
||||
<translation>Enregistrer la base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close database</source>
|
||||
<translation>Fermer la base de donnée</translation>
|
||||
<translation>Fermer la base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New database</source>
|
||||
<translation>Nouvelle base de donnée</translation>
|
||||
<translation>Nouvelle base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add new entry</source>
|
||||
@@ -921,7 +972,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save database as</source>
|
||||
<translation>Enregistrer la base de donnée sous</translation>
|
||||
<translation>Enregistrer la base de données sous</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
@@ -929,11 +980,11 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database settings</source>
|
||||
<translation>Paramètre de la base de donnée</translation>
|
||||
<translation>Paramètres de la base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database</source>
|
||||
<translation>Importer une base de donnée KeePass 1</translation>
|
||||
<translation>Importer une base de données KeePass 1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clone entry</source>
|
||||
@@ -945,11 +996,11 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Copier le nom d'utilisateur dans le presse-papiers</translation>
|
||||
<translation>Copier le nom d'utilisateur dans le presse-papier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Copier le mot de passe dans le presse-papiers</translation>
|
||||
<translation>Copier le mot de passe dans le presse-papier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings</source>
|
||||
@@ -1007,6 +1058,30 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Exporter au format CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Réparer la base de données</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>Base de données KeePass 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Tous les fichiers</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Sauvegarder la base de données réparée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Erreur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Une erreur s'est produite lors de l'écriture de la base de données.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1020,7 +1095,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Character Types</source>
|
||||
<translation>Types de caractère</translation>
|
||||
<translation>Types de caractères</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upper Case Letters</source>
|
||||
@@ -1055,7 +1130,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
<name>QCommandLineParser</name>
|
||||
<message>
|
||||
<source>Displays version information.</source>
|
||||
<translation>Afficher les informations de version</translation>
|
||||
<translation>Afficher les informations de version.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Displays this help.</source>
|
||||
@@ -1166,7 +1241,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
<name>SettingsWidget</name>
|
||||
<message>
|
||||
<source>Application Settings</source>
|
||||
<translation>Paramètre de l'application</translation>
|
||||
<translation>Paramètres de l'application</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>General</source>
|
||||
@@ -1185,19 +1260,19 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Ouvrir les base de données précédentes au démarrage</translation>
|
||||
<translation>Ouvrir les bases de données précédentes au démarrage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Sauvegarde automatiquement à la sortie</translation>
|
||||
<translation>Sauvegarder automatiquement à la sortie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save after every change</source>
|
||||
<translation>Sauvegarde automatiquement après chaque modification</translation>
|
||||
<translation>Sauvegarder automatiquement après chaque modification</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize when copying to clipboard</source>
|
||||
<translation>Réduire lors de la copie dans le presse-papiers</translation>
|
||||
<translation>Réduire lors de la copie dans le presse-papier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use group icon on entry creation</source>
|
||||
@@ -1232,7 +1307,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
<message>
|
||||
<source>Clear clipboard after</source>
|
||||
<translation>Vider le presse-papiers après</translation>
|
||||
<translation>Vider le presse-papier après</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> sec</source>
|
||||
@@ -1240,7 +1315,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock databases after inactivity of</source>
|
||||
<translation>Verrouiller les bases de donnée après une inactivité de</translation>
|
||||
<translation>Verrouiller les bases de données après une inactivité de</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show passwords in cleartext by default</source>
|
||||
@@ -1255,7 +1330,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
<name>UnlockDatabaseWidget</name>
|
||||
<message>
|
||||
<source>Unlock database</source>
|
||||
<translation>Déverrouiller la base de donnée</translation>
|
||||
<translation>Déverrouiller la base de données</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1273,7 +1348,7 @@ Voulez-vous quand même la sauvegarder ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>filename of the password database to open (*.kdbx)</source>
|
||||
<translation>Nom de fichier de la base de donnée de mot de pass à ouvrir (*.kdbx)</translation>
|
||||
<translation>Nom de fichier de la base de données de mot de passe à ouvrir (*.kdbx)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>path to a custom config file</source>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Revisi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Menggunakan:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -79,7 +83,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Key files</source>
|
||||
<translation>Berkas Kunci</translation>
|
||||
<translation>Berkas kunci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
@@ -99,7 +103,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a key file</source>
|
||||
<translation>Pilih sebuah berkas kunci</translation>
|
||||
<translation>Pilih berkas kunci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Question</source>
|
||||
@@ -111,7 +115,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Sandi yang berbeda diberikan.</translation>
|
||||
<translation>Sandi berbeda.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
@@ -167,6 +171,43 @@
|
||||
<translation>Pilih berkas kunci</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Perbaiki basis data</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Galat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Tidak bisa membuka berkas kunci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Basis data terbuka dengan baik. Tidak perlu melakukan apa-apa.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Tidak bisa membuka basis data.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Sukses</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>Basis data berhasil diperbaiki
|
||||
Anda bisa menyimpannya sekarang.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Tidak bisa memperbaiki basis data.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -428,7 +469,7 @@ Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation>Kata sandi yang berbeda diberikan.</translation>
|
||||
<translation>Sandi berbeda.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New attribute</source>
|
||||
@@ -586,7 +627,7 @@ Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Presets</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Prasetel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Notes:</source>
|
||||
@@ -829,6 +870,16 @@ Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Tidak bisa mengkalkulasi kunci utama</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Berkas yang dipilih adalah basis data KeePass 1 yang lama (.kdb).
|
||||
|
||||
Anda bisa mengimpornya dengan mengklik Basis Data > 'Impor basis data KeePass 1'.
|
||||
Ini adalah migrasi satu arah. Anda tidak akan bisa lagi membuka basis data yang diimpor dengan versi lama KeePassX 0.4.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -1007,6 +1058,30 @@ Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Ekspor ke berkas CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Perbaiki basis data</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>Basis Data KeePass 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Semua Berkas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Simpan basis data yang sudah diperbaiki</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Galat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Gagal menyimpan basis data.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1117,15 +1192,15 @@ Apakah Anda tetap ingin menyimpannya?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error writing to underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Terjadi kesalahan saat menyimpan ke perangkat:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error opening underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Terjadi kesalahan saat membuka perangkat:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading data from underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Terjadi kesalahan saat membaca data dari perangkat:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error when decompressing: </source>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Revisione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>In uso:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -48,7 +52,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Select entry to Auto-Type:</source>
|
||||
<translation>Selezionare una voce per Auto-Type:</translation>
|
||||
<translation>Seleziona una voce per Auto-Type:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -59,11 +63,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter password:</source>
|
||||
<translation>Inserire password:</translation>
|
||||
<translation>Inserisci password:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat password:</source>
|
||||
<translation>Ripetere password:</translation>
|
||||
<translation>Ripeti password:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key file</source>
|
||||
@@ -75,7 +79,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Create</source>
|
||||
<translation>Creare</translation>
|
||||
<translation>Crea</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key files</source>
|
||||
@@ -87,7 +91,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Create Key File...</source>
|
||||
<translation>Creare file chiave...</translation>
|
||||
<translation>Crea file chiave...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@@ -120,18 +124,19 @@
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>Impossibile impostare %1 come file Chiave: %2</translation>
|
||||
<translation>Impossibile impostare %1 come file chiave:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseOpenWidget</name>
|
||||
<message>
|
||||
<source>Enter master key</source>
|
||||
<translation>Inserire password</translation>
|
||||
<translation>Inserisci la chiave principale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key File:</source>
|
||||
<translation>File Chiave:</translation>
|
||||
<translation>File chiave:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password:</source>
|
||||
@@ -139,7 +144,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Browse</source>
|
||||
<translation>Sfogliare</translation>
|
||||
<translation>Sfoglia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@@ -159,18 +164,55 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Key files</source>
|
||||
<translation>Files chiave</translation>
|
||||
<translation>File chiave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select key file</source>
|
||||
<translation>Seleziona file chiave</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Ripara database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Errore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Impossibile aprire il file chiave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Database aperto correttamente. Nessuna operazione da eseguire.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Impossibile aprire il database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Successo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>Il database è stato riparato con successo
|
||||
Adesso puoi salvarlo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Impossibile riparare il database</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
<source>Database name:</source>
|
||||
<translation>Nome database:</translation>
|
||||
<translation>Nome del database:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database description:</source>
|
||||
@@ -178,7 +220,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Transform rounds:</source>
|
||||
<translation>Rounds di trasformazione:</translation>
|
||||
<translation>Round di trasformazione:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default username:</source>
|
||||
@@ -186,7 +228,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Use recycle bin:</source>
|
||||
<translation>Utilizzare cestino:</translation>
|
||||
<translation>Utilizza cestino:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> MiB</source>
|
||||
@@ -254,7 +296,7 @@
|
||||
<message>
|
||||
<source>"%1" was modified.
|
||||
Save changes?</source>
|
||||
<translation>"%1" è stata modificata.
|
||||
<translation>"%1" è stata modificato.
|
||||
Salvare le modifiche?</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -263,11 +305,11 @@ Salvare le modifiche?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Scrittura del database fallita.</translation>
|
||||
<translation>Scrittura del database non riuscita.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save database as</source>
|
||||
<translation>Salvare database come</translation>
|
||||
<translation>Salva database come</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New database</source>
|
||||
@@ -280,18 +322,18 @@ 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>Il Database che stai tentando di aprire è bloccato da un'altra esecuzione di KeePassX.
|
||||
Vuoi aprirlo comunque? In alternativa, il database verrà aperto in sola lettura.</translation>
|
||||
<translation>Il database che stai tentando di aprire è bloccato da un'altra istanza di KeePassX.
|
||||
Vuoi aprirlo comunque? Altrimenti il database verrà aperto in sola lettura.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
<translation>Bloccare database</translation>
|
||||
<translation>Blocca 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>Non è possibile bloccare il database nel modo in cui lo stai modificando.
|
||||
Premere annulla per terminare le modifiche o scartarle .</translation>
|
||||
<translation>Non è possibile bloccare il database dato che lo stai modificando.
|
||||
Premere Annulla per completare le modifiche o scartarle.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
@@ -323,12 +365,12 @@ Annullare le modifiche e chiudere comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation>Scrittura del file CSV fallita.</translation>
|
||||
<translation>Scrittura del file CSV non riuscita.</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>Il database che si sta tentando di salvare è bloccato da un'altra istanza di KeePassX.
|
||||
<translation>Il database che stai tentando di salvare è bloccato da un'altra istanza di KeePassX.
|
||||
Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
</context>
|
||||
@@ -336,7 +378,7 @@ Vuoi salvare comunque?</translation>
|
||||
<name>DatabaseWidget</name>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
<translation>Cambia password principale</translation>
|
||||
<translation>Cambia chiave principale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entry?</source>
|
||||
@@ -457,15 +499,15 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n week(s)</source>
|
||||
<translation><numerusform>%n settimana(e)</numerusform><numerusform>%n settimana(e)</numerusform></translation>
|
||||
<translation><numerusform>%n settimana</numerusform><numerusform>%n settimane</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n month(s)</source>
|
||||
<translation><numerusform>%n mese(i)</numerusform><numerusform>%n mese(i)</numerusform></translation>
|
||||
<translation><numerusform>%n mese</numerusform><numerusform>%n mesi</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>1 year</source>
|
||||
<translation>1 anno</translation>
|
||||
<translation>Un anno</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -476,15 +518,15 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add</source>
|
||||
<translation>Aggiungere</translation>
|
||||
<translation>Aggiungi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit</source>
|
||||
<translation>Modificare</translation>
|
||||
<translation>Modifica</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remove</source>
|
||||
<translation>Rimuovere</translation>
|
||||
<translation>Rimuovi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Attachments</source>
|
||||
@@ -492,26 +534,26 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save</source>
|
||||
<translation>Salvare</translation>
|
||||
<translation>Salva</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open</source>
|
||||
<translation>Aprire</translation>
|
||||
<translation>Apri</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
<message>
|
||||
<source>Enable Auto-Type for this entry</source>
|
||||
<translation>Abilitare Auto-Type per questa voce</translation>
|
||||
<translation>Abilita Auto-Type per questa voce</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inherit default Auto-Type sequence from the group</source>
|
||||
<translation>Ereditare la sequenza predefinita di Auto-Type dal gruppo</translation>
|
||||
<translation>Eredita la sequenza predefinita di Auto-Type dal gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use custom Auto-Type sequence:</source>
|
||||
<translation>Usare sequenza personalizzata di Auto-Type:</translation>
|
||||
<translation>Usa sequenza personalizzata di Auto-Type:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>+</source>
|
||||
@@ -527,30 +569,30 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default sequence</source>
|
||||
<translation>Usare sequenza predefinita</translation>
|
||||
<translation>Usa sequenza predefinita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set custom sequence:</source>
|
||||
<translation>Impostare sequenza personalizzata:</translation>
|
||||
<translation>Imposta sequenza personalizzata:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditEntryWidgetHistory</name>
|
||||
<message>
|
||||
<source>Show</source>
|
||||
<translation>Mostrare</translation>
|
||||
<translation>Mostra</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Restore</source>
|
||||
<translation>Ripristinare</translation>
|
||||
<translation>Ripristina</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete</source>
|
||||
<translation>Eliminare</translation>
|
||||
<translation>Elimina</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete all</source>
|
||||
<translation>Eliminare tutti</translation>
|
||||
<translation>Elimina tutti</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -569,7 +611,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat:</source>
|
||||
<translation>Ripetere:</translation>
|
||||
<translation>Ripeti:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gen.</source>
|
||||
@@ -585,7 +627,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Presets</source>
|
||||
<translation>Presets</translation>
|
||||
<translation>Preimpostazioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Notes:</source>
|
||||
@@ -624,7 +666,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inherit from parent group (%1)</source>
|
||||
<translation>Ereditare dal gruppo genitore (%1)</translation>
|
||||
<translation>Eredita dal gruppo genitore (%1)</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -643,7 +685,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search</source>
|
||||
<translation>Cercare</translation>
|
||||
<translation>Cerca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-type</source>
|
||||
@@ -651,30 +693,30 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation>Ereditare la sequenza predefinita di auto-type dal gruppo</translation>
|
||||
<translation>Eredita la sequenza predefinita di auto-type dal gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation>Usare sequenza auto-type predefinita</translation>
|
||||
<translation>Usa sequenza di auto-type predefinita</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
<message>
|
||||
<source>Use default icon</source>
|
||||
<translation>Usare icona predefinita</translation>
|
||||
<translation>Usa icona predefinita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use custom icon</source>
|
||||
<translation>Usare icona personalizzata</translation>
|
||||
<translation>Usa icona personalizzata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add custom icon</source>
|
||||
<translation>Aggiungere icona personalizzata</translation>
|
||||
<translation>Aggiungi icona personalizzata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete custom icon</source>
|
||||
<translation>Rimuovere icona personalizzata</translation>
|
||||
<translation>Rimuovi icona personalizzata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Images</source>
|
||||
@@ -686,7 +728,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select Image</source>
|
||||
<translation>Seleziona Immagine</translation>
|
||||
<translation>Seleziona immagine</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't delete icon!</source>
|
||||
@@ -694,18 +736,18 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>Impossibile eliminare l'icona in quanto è in uso da %n voce(i).</numerusform><numerusform>Impossibile eliminare l'icona in quanto è in uso da %n voce(i).</numerusform></translation>
|
||||
<translation><numerusform>Impossibile eliminare l'icona in quanto è in uso da %n voce.</numerusform><numerusform>Impossibile eliminare l'icona in quanto è in uso da %n voci.</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetProperties</name>
|
||||
<message>
|
||||
<source>Created:</source>
|
||||
<translation>Creato:</translation>
|
||||
<translation>Creazione:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Modified:</source>
|
||||
<translation>Modificato:</translation>
|
||||
<translation>Modifica:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accessed:</source>
|
||||
@@ -713,7 +755,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uuid:</source>
|
||||
<translation>Uuid:</translation>
|
||||
<translation>UUID:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -754,7 +796,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username</source>
|
||||
<translation>Nome Utente</translation>
|
||||
<translation>Nome utente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>URL</source>
|
||||
@@ -772,7 +814,7 @@ Vuoi salvare comunque?</translation>
|
||||
<name>KeePass1OpenWidget</name>
|
||||
<message>
|
||||
<source>Import KeePass1 database</source>
|
||||
<translation>Importare database KeePass1</translation>
|
||||
<translation>Importa database KeePass1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@@ -787,7 +829,7 @@ Vuoi salvare comunque?</translation>
|
||||
<name>KeePass1Reader</name>
|
||||
<message>
|
||||
<source>Unable to read keyfile.</source>
|
||||
<translation>Impossibile leggere il file chiave.</translation>
|
||||
<translation>Impossibile leggere il file della chiave.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not a KeePass database.</source>
|
||||
@@ -807,7 +849,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Impossibile calcolare la chiave master</translation>
|
||||
<translation>Impossibile calcolare la chiave principale</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -822,11 +864,21 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation>Password errata o file database corrotto.</translation>
|
||||
<translation>Chiave errata o file del database danneggiato.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Impossibile calcolare la chiave master</translation>
|
||||
<translation>Impossibile calcolare la chiave principale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Il file selezionato è un vecchio database KeePass 1 (.kdb).
|
||||
|
||||
Puoi importarlo facendo clic su Database > 'Importa database KeePass 1'.
|
||||
Questa è una migrazione in una sola direzione. Non potrai aprire il database importato con la vecchia versione 0.4 di KeePassX. </translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -872,23 +924,23 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quit</source>
|
||||
<translation>Uscire</translation>
|
||||
<translation>Esci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About</source>
|
||||
<translation>A Proposito</translation>
|
||||
<translation>Informazioni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open database</source>
|
||||
<translation>Aprire database</translation>
|
||||
<translation>Apri database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save database</source>
|
||||
<translation>Salvare database</translation>
|
||||
<translation>Salva database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close database</source>
|
||||
<translation>Chiudere database</translation>
|
||||
<translation>Chiudi database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New database</source>
|
||||
@@ -896,35 +948,35 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add new entry</source>
|
||||
<translation>Aggiungere nuova voce</translation>
|
||||
<translation>Aggiungi nuova voce</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View/Edit entry</source>
|
||||
<translation>Visualizzare/Modificare voce</translation>
|
||||
<translation>Visualizza/modifica voce</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entry</source>
|
||||
<translation>Eliminare voce</translation>
|
||||
<translation>Elimina voce</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add new group</source>
|
||||
<translation>Aggiungere nuovo gruppo</translation>
|
||||
<translation>Aggiungi nuovo gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit group</source>
|
||||
<translation>Modificare gruppo</translation>
|
||||
<translation>Modifica gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete group</source>
|
||||
<translation>Eliminare gruppo</translation>
|
||||
<translation>Elimina gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save database as</source>
|
||||
<translation>Salvare database come</translation>
|
||||
<translation>Salva database come</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change master key</source>
|
||||
<translation>Cambiare password principale</translation>
|
||||
<translation>Cambia chiave principale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database settings</source>
|
||||
@@ -932,7 +984,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import KeePass 1 database</source>
|
||||
<translation>Importare database KeePass 1</translation>
|
||||
<translation>Importa database KeePass 1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clone entry</source>
|
||||
@@ -940,15 +992,15 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Find</source>
|
||||
<translation>Trovare</translation>
|
||||
<translation>Trova</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
<translation>Copiare nome utente negli appunti</translation>
|
||||
<translation>Copia nome utente negli appunti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password to clipboard</source>
|
||||
<translation>Copiare password negli appunti</translation>
|
||||
<translation>Copia password negli appunti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings</source>
|
||||
@@ -956,15 +1008,15 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Perform Auto-Type</source>
|
||||
<translation>Eseguire Auto-Type</translation>
|
||||
<translation>Esegui Auto-Type</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open URL</source>
|
||||
<translation>Aprire URL</translation>
|
||||
<translation>Apri URL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock databases</source>
|
||||
<translation>Bloccare database</translation>
|
||||
<translation>Blocca database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title</source>
|
||||
@@ -1006,6 +1058,30 @@ Vuoi salvare comunque?</translation>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Esporta in un file CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Ripara database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>Database KeePass 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Tutti i file</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Salva il database riparato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Errore</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Scrittura del database non riuscita.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1039,26 +1115,26 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exclude look-alike characters</source>
|
||||
<translation>Escludere caratteri simili</translation>
|
||||
<translation>Escludi caratteri simili</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ensure that the password contains characters from every group</source>
|
||||
<translation>Assicurare che la password contenga caratteri di ogni gruppo</translation>
|
||||
<translation>Verifica che la password contenga caratteri di ogni gruppo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept</source>
|
||||
<translation>Accettare</translation>
|
||||
<translation>Accetta</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QCommandLineParser</name>
|
||||
<message>
|
||||
<source>Displays version information.</source>
|
||||
<translation>Mostrare informazioni sulla versione.</translation>
|
||||
<translation>Mostra informazioni sulla versione.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Displays this help.</source>
|
||||
<translation>Mostrare questo aiuto.</translation>
|
||||
<translation>Mostra questo aiuto.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown option '%1'.</source>
|
||||
@@ -1101,7 +1177,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing canceled by application</source>
|
||||
<translation>Scrittura cancellata dall'applicazione</translation>
|
||||
<translation>Scrittura annullata dall'applicazione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Partial write. Partition full?</source>
|
||||
@@ -1146,7 +1222,7 @@ Vuoi salvare comunque?</translation>
|
||||
<name>SearchWidget</name>
|
||||
<message>
|
||||
<source>Find:</source>
|
||||
<translation>Trovare:</translation>
|
||||
<translation>Trova:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Case sensitive</source>
|
||||
@@ -1184,23 +1260,23 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Aprire precedente database all'avvio</translation>
|
||||
<translation>Apri il database precedente all'avvio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Salvare automaticamente all'uscita</translation>
|
||||
<translation>Salva automaticamente all'uscita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save after every change</source>
|
||||
<translation>Salvare automaticamente dopo ogni modifica</translation>
|
||||
<translation>Salva automaticamente dopo ogni modifica</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize when copying to clipboard</source>
|
||||
<translation>Minimizzare quando si copia negli appunti</translation>
|
||||
<translation>Minimizza quando si copia negli appunti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use group icon on entry creation</source>
|
||||
<translation>Usare l'icona del gruppo alla creazione di una voce</translation>
|
||||
<translation>Usa l'icona del gruppo alla creazione di una voce</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Global Auto-Type shortcut</source>
|
||||
@@ -1208,7 +1284,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use entry title to match windows for global auto-type</source>
|
||||
<translation>Utilizzare il titolo della voce per abbinare la finestra per auto-type globale</translation>
|
||||
<translation>Utilizza il titolo della voce per abbinare la finestra per auto-type globale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Language</source>
|
||||
@@ -1224,14 +1300,14 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation>Ricorda gli ultimi files chiave</translation>
|
||||
<translation>Ricorda gli ultimi file di chiavi</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
<message>
|
||||
<source>Clear clipboard after</source>
|
||||
<translation>Pulire appunti dopo</translation>
|
||||
<translation>Pulisci appunti dopo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> sec</source>
|
||||
@@ -1239,22 +1315,22 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock databases after inactivity of</source>
|
||||
<translation>Bloccare i database dopo un'inattività di</translation>
|
||||
<translation>Blocca i database dopo un'inattività di</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show passwords in cleartext by default</source>
|
||||
<translation>Mostrare la password in chiaro in maniera predefinita</translation>
|
||||
<translation>Mostra la password in chiaro in maniera predefinita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always ask before performing auto-type</source>
|
||||
<translation>Chiedere sempre prima di eseguire auto-type</translation>
|
||||
<translation>Chiedi sempre prima di eseguire auto-type</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UnlockDatabaseWidget</name>
|
||||
<message>
|
||||
<source>Unlock database</source>
|
||||
<translation>Sbloccare database</translation>
|
||||
<translation>Sblocca database</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1272,7 +1348,7 @@ Vuoi salvare comunque?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>filename of the password database to open (*.kdbx)</source>
|
||||
<translation>nome del file del database da aprire (*.kdbx)</translation>
|
||||
<translation>nome del file di database da aprire (*.kdbx)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>path to a custom config file</source>
|
||||
|
||||
@@ -9,6 +9,14 @@
|
||||
<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はGNU General Public License (GPL) version 2 または version 3 (どちらかを選択)の条件で配布されます。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Revision</source>
|
||||
<translation>リビジョン</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>利用中:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -18,7 +26,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't find an entry that matches the window title:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ウィンドウタイトルに一致するエントリーが見つかりませんでした:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -29,11 +37,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Sequence</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>シーケンス</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default sequence</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>デフォルトのシーケンス</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -44,7 +52,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Select entry to Auto-Type:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>自動入力するエントリーを選択してください:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -107,16 +115,17 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>異なるパスワードが入力されました。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>キーファイルのセットに失敗しました</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>%1 をキーファイルとしてセットできませんでした:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -147,7 +156,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>キーファイルを開けませんでした。</translation>
|
||||
<translation>キーファイルを開けませんでした</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
@@ -162,6 +171,43 @@
|
||||
<translation>キーファイルを選択</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>データベースを修復する</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>エラー</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>キーファイルを開けませんでした</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>データベースは正常に開かれています。行うべきことはありません。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>データベースを開けませんでした。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>成功</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>データベースは正常に修復されました
|
||||
データベースの保存を行ってください。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>データベースを修復できませんでした。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -205,7 +251,7 @@
|
||||
<name>DatabaseTabWidget</name>
|
||||
<message>
|
||||
<source>Root</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ルート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
@@ -286,35 +332,46 @@ Do you want to open it anyway? Alternatively the database is opened read-only.</
|
||||
<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>現在編集中のため、データベースをロックすることができませんでした。
|
||||
キャンセルボタンを押し、変更を完了させるか破棄してください。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation type="unfinished"/>
|
||||
<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 type="unfinished"/>
|
||||
<translation>このデータベースは変更されました。
|
||||
ロックを行う前にデータベースを保存しますか?
|
||||
保存しない場合には変更点は失われます。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>"%1" は現在編集モードです。
|
||||
変更を破棄して閉じてしまってもよろしいですか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>データベースをCSVファイルにエクスポートする</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>CSVファイル</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>CSVファイルの書き込みに失敗しました。</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>保存しようとしたデータベースは別のKeePassXプログラムからロックされています。
|
||||
とにかく保存しますか?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -329,7 +386,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to delete the entry "%1" for good?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>本当にエントリー "%1" を永遠に消去しますか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete entries?</source>
|
||||
@@ -337,7 +394,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Do you really want to delete %1 entries for good?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>本当に %1 個のエントリーを永遠に消去しますか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Move entries to recycle bin?</source>
|
||||
@@ -412,7 +469,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>異なるパスワードが入力されました。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New attribute</source>
|
||||
@@ -442,11 +499,11 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n week(s)</source>
|
||||
<translation><numerusform>%s週間()</numerusform></translation>
|
||||
<translation><numerusform>%n週間</numerusform></translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>%n month(s)</source>
|
||||
<translation><numerusform>%nヶ月()</numerusform></translation>
|
||||
<translation><numerusform>%nヶ月</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>1 year</source>
|
||||
@@ -496,7 +553,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use custom Auto-Type sequence:</source>
|
||||
<translation>カスタムの自動入力手順を使う</translation>
|
||||
<translation>カスタムの自動入力手順を使う:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>+</source>
|
||||
@@ -546,7 +603,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
<translation>ユーザ名</translation>
|
||||
<translation>ユーザ名:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password:</source>
|
||||
@@ -679,7 +736,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>%s個のアイテム()から使われているので、アイコンを削除できません。</numerusform></translation>
|
||||
<translation><numerusform>%n個のアイテムから使われているので、アイコンを削除できません。</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -705,7 +762,7 @@ Discard changes and close anyway?</source>
|
||||
<name>EntryAttributesModel</name>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>名前</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -813,6 +870,16 @@ Discard changes and close anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>マスターキーを計算できません</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>選択されたファイルは古い KeePass 1 のデータベース (.kdb) です。
|
||||
|
||||
データベース > 'KeePass 1 データベースをインポート' をクリックすることでインポートできます。
|
||||
これは一方向の移行操作であり、インポートされたデータベースは古い KeePassX 0.4 のバージョンでは開くことはできません。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -973,7 +1040,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle window</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ウィンドウ切替</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
@@ -981,15 +1048,39 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ユーザ名をコピー</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>パスワードをコピー</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>CSVファイルへエクスポート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>データベースを修復する</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>KeePass 2 データベース</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>全てのファイル</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>修復されたデータベースを保存する</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>エラー</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>データベースの書き込みに失敗しました。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1039,11 +1130,11 @@ Discard changes and close anyway?</source>
|
||||
<name>QCommandLineParser</name>
|
||||
<message>
|
||||
<source>Displays version information.</source>
|
||||
<translation>バージョン情報を表示する</translation>
|
||||
<translation>バージョン情報を表示する。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Displays this help.</source>
|
||||
<translation>このヘルプを表示する</translation>
|
||||
<translation>このヘルプを表示する。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown option '%1'.</source>
|
||||
@@ -1082,7 +1173,7 @@ Discard changes and close anyway?</source>
|
||||
<name>QSaveFile</name>
|
||||
<message>
|
||||
<source>Existing file %1 is not writable</source>
|
||||
<translation>存在するファイル %1 は書き込みできません。</translation>
|
||||
<translation>存在するファイル %1 は書き込みできません</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing canceled by application</source>
|
||||
@@ -1090,14 +1181,14 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Partial write. Partition full?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>一部しか書き込めませんでした。パーティションがいっぱいかも?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtIOCompressor</name>
|
||||
<message>
|
||||
<source>Internal zlib error when compressing: </source>
|
||||
<translation>圧縮時に内部zlibエラーが発生しました</translation>
|
||||
<translation>圧縮時に内部zlibエラーが発生しました: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error writing to underlying device: </source>
|
||||
@@ -1113,7 +1204,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error when decompressing: </source>
|
||||
<translation>解凍時に内部zlibエラーが発生しました</translation>
|
||||
<translation>解凍時に内部zlibエラーが発生しました: </translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1193,7 +1284,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use entry title to match windows for global auto-type</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>グローバル自動入力の際に、エントリーのタイトルとウィンドウのマッチングを行う</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Language</source>
|
||||
@@ -1205,7 +1296,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>最小化された際にシステムトレイへ格納する</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
@@ -1261,11 +1352,7 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>path to a custom config file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>password of the database (DANGEROUS!)</source>
|
||||
<translation>データベースのパスワード (危険!)</translation>
|
||||
<translation>カスタム設定ファイルへのパス</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>key file of the database</source>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>리비전</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>사용:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -166,6 +170,43 @@
|
||||
<translation>키 파일 선택</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>데이터베이스 복구</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>오류</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>키 파일을 열 수 없음</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>데이터베이스를 열었습니다. 할 일이 없습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>데이터베이스를 열 수 없습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>성공</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>데이터베이스를 복구했습니다
|
||||
이제 저장할 수 있습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>데이터베이스를 복구할 수 없습니다.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -826,6 +867,16 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>마스터 키를 계산할 수 없습니다</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>선택한 파일은 KeePass 1 데이터베이스(.kdb)입니다.
|
||||
|
||||
데이터베이스 > 'KeePass 1 데이터베이스 가져오기' 항목을 선택해서 변환해야 합니다.
|
||||
변환은 한 방향으로만 이루어지며, 가져온 데이터베이스는 KeePassX 0.4 버전으로 더 이상 열 수 없습니다.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -1004,6 +1055,30 @@ Do you want to save it anyway?</source>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>CSV 파일로 내보내기</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>데이터베이스 복구</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>KeePass 2 데이터베이스</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>모든 파일</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>복구한 데이터베이스 저장</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>오류</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>데이터베이스에 쓸 수 없습니다.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -13,12 +13,16 @@
|
||||
<source>Revision</source>
|
||||
<translation>Poversijis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Naudojama:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
<message>
|
||||
<source>Auto-Type - KeePassX</source>
|
||||
<translation>Automatinis Rinkimas - KeePassX</translation>
|
||||
<translation>Automatinis rinkimas - KeePassX</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't find an entry that matches the window title:</source>
|
||||
@@ -44,11 +48,11 @@
|
||||
<name>AutoTypeSelectDialog</name>
|
||||
<message>
|
||||
<source>Auto-Type - KeePassX</source>
|
||||
<translation>Automatinis Rinkimas - KeePassX</translation>
|
||||
<translation>Automatinis rinkimas - KeePassX</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select entry to Auto-Type:</source>
|
||||
<translation>Pasirinkite įrašą Automatiniam Rinkimui:</translation>
|
||||
<translation>Pasirinkite įrašą automatiniam rinkimui:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -59,7 +63,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter password:</source>
|
||||
<translation>Įveskite slaptažodį:</translation>
|
||||
<translation>Įrašykite slaptažodį:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat password:</source>
|
||||
@@ -87,7 +91,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Create Key File...</source>
|
||||
<translation>Sukurti Rakto Failą...</translation>
|
||||
<translation>Sukurti rakto failą...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@@ -95,7 +99,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to create Key File : </source>
|
||||
<translation>Nepavyko sukurti Rakto Failo : </translation>
|
||||
<translation>Nepavyko sukurti rakto failo : </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a key file</source>
|
||||
@@ -120,7 +124,7 @@
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation>Nepavyko nustatyti %1 kaip Rakto failą:
|
||||
<translation>Nepavyko nustatyti %1 kaip rakto failą:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
@@ -132,7 +136,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Key File:</source>
|
||||
<translation>Rakto Failas:</translation>
|
||||
<translation>Rakto failas:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Password:</source>
|
||||
@@ -167,6 +171,43 @@
|
||||
<translation>Pasirinkite rakto failą</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Taisyti duomenų bazę</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Klaida</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Nepavyksta atverti rakto failo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Duomenų bazė atsivėrė tvarkingai. Nėra ką atlikti.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Nepavyko atverti duomenų bazės.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Pavyko</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>Duomenų bazė buvo sėkmingai pataisyta
|
||||
Dabar galite ją įrašyti.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Duomenų bazės pataisyti nepavyko.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -214,7 +255,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>KeePass 2 Duomenų Bazė</translation>
|
||||
<translation>KeePass 2 duomenų bazė</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
@@ -400,7 +441,7 @@ Ar vis tiek norite ją įrašyti?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-Type</source>
|
||||
<translation>Automatinis Rinkimas</translation>
|
||||
<translation>Automatinis rinkimas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Properties</source>
|
||||
@@ -504,15 +545,15 @@ Ar vis tiek norite ją įrašyti?</translation>
|
||||
<name>EditEntryWidgetAutoType</name>
|
||||
<message>
|
||||
<source>Enable Auto-Type for this entry</source>
|
||||
<translation>Įjungti šiam įrašui Automatinį Rinkimą</translation>
|
||||
<translation>Įjungti šiam įrašui automatinį rinkimą</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inherit default Auto-Type sequence from the group</source>
|
||||
<translation>Paveldėti numatytąją Automatinio Rinkimo seką iš grupės</translation>
|
||||
<translation>Paveldėti numatytąją automatinio rinkimo seką iš grupės</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use custom Auto-Type sequence:</source>
|
||||
<translation>Naudoti tinkintą Automatinio Rinkimo seka:</translation>
|
||||
<translation>Naudoti tinkintą automatinio rinkimo seka:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>+</source>
|
||||
@@ -687,7 +728,7 @@ Ar vis tiek norite ją įrašyti?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select Image</source>
|
||||
<translation>Pasirinkite Paveikslą</translation>
|
||||
<translation>Pasirinkite paveikslą</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't delete icon!</source>
|
||||
@@ -829,6 +870,16 @@ Ar vis tiek norite ją įrašyti?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Nepavyko apskaičiuoti pagrindinio rakto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Pasirinktas failas yra sena KeePass 1 duomenų bazė (.kdb).
|
||||
|
||||
Jūs galite ją importuoti, nuspausdami Duomenų bazė > "Importuoti KeePass 1 duomenų bazę".
|
||||
Tai yra vienakryptis perkėlimas. Jūs negalėsite atverti importuotos duomenų bazės, naudodami senąją KeePassX 0.4 versija.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -957,7 +1008,7 @@ Ar vis tiek norite ją įrašyti?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Perform Auto-Type</source>
|
||||
<translation>Atlikti Automatinį Rinkimą</translation>
|
||||
<translation>Atlikti automatinį rinkimą</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open URL</source>
|
||||
@@ -1007,6 +1058,30 @@ Ar vis tiek norite ją įrašyti?</translation>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Eksportuoti į CSV failą</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Taisyti duomenų bazę</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>KeePass 2 duomenų bazė</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Visi failai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Įrašyti pataisytą duomenų bazę</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Klaida</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Duomenų bazės rašymas nepavyko.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1020,15 +1095,15 @@ Ar vis tiek norite ją įrašyti?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Character Types</source>
|
||||
<translation>Simbolių Tipai</translation>
|
||||
<translation>Simbolių tipai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upper Case Letters</source>
|
||||
<translation>Viršutinio Registro Raidės</translation>
|
||||
<translation>Viršutinio registro raidės</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lower Case Letters</source>
|
||||
<translation>Apatinio Registro Raidės</translation>
|
||||
<translation>Apatinio registro raidės</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Numbers</source>
|
||||
@@ -1036,7 +1111,7 @@ Ar vis tiek norite ją įrašyti?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Special Characters</source>
|
||||
<translation>Specialūs Simboliai</translation>
|
||||
<translation>Specialūs simboliai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exclude look-alike characters</source>
|
||||
@@ -1166,7 +1241,7 @@ Ar vis tiek norite ją įrašyti?</translation>
|
||||
<name>SettingsWidget</name>
|
||||
<message>
|
||||
<source>Application Settings</source>
|
||||
<translation>Programos Nustatymai</translation>
|
||||
<translation>Programos nustatymai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>General</source>
|
||||
@@ -1205,7 +1280,7 @@ Ar vis tiek norite ją įrašyti?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Global Auto-Type shortcut</source>
|
||||
<translation>Visuotinis Automatinio Rinkimo spartusis klavišas</translation>
|
||||
<translation>Visuotinis automatinio rinkimo spartusis klavišas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use entry title to match windows for global auto-type</source>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Revisie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Maakt gebruik van:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -167,6 +171,43 @@
|
||||
<translation>Kies sleutelbestand</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Database repareren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fout</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Niet mogelijk om het sleutelbestand te openen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Database werd zonder problemen geopend. Niets te doen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Niet mogelijk om de database te openen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Gelukt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>De database is met succes gerepareerd
|
||||
U kunt deze nu opslaan.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Niet mogelijk om de database te repareren.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -829,6 +870,16 @@ Wilt u toch doorgaan met opslaan?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Niet mogelijk om hoofdsleutel te berekenen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Het gekozen bestand is een oude KeePass 1 database (.kdb).
|
||||
|
||||
U kunt het importeren door te klikken op Database > 'KeePass 1 database importeren'.
|
||||
Deze actie is niet omkeerbaar. U kunt de geimporteerde database niet meer openen met KeePassX 0.4.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -1007,6 +1058,30 @@ Wilt u toch doorgaan met opslaan?</translation>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Naar CSV-bestand exporteren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Database repareren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>KeePass 2 Database</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Alle bestanden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Gerepareerde database opslaan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fout</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Opslaan van de database is mislukt.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1197,7 +1272,7 @@ Wilt u toch doorgaan met opslaan?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize when copying to clipboard</source>
|
||||
<translation>Minimaliseer bij kopieeren naar klembord</translation>
|
||||
<translation>Minimaliseer bij kopiëren naar klembord</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use group icon on entry creation</source>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Rewizja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Używanie:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -22,7 +26,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't find an entry that matches the window title:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Nie mogę znaleźć wpisu, który by pasował do tytułu okna: </translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -95,7 +99,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to create Key File : </source>
|
||||
<translation>Nie można utworzyć pliku klucza</translation>
|
||||
<translation>Nie można utworzyć pliku klucza :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a key file</source>
|
||||
@@ -111,16 +115,17 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Podano różne hasła.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set key file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd w ustawianiu pliku z kluczem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to set %1 as the Key file:
|
||||
%2</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd w ustawieniu %1 jako plik klucza:
|
||||
%2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -166,6 +171,43 @@
|
||||
<translation>Wybierz plik z kluczem</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Napraw bazę</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Błąd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Nie mogę otworzyć pliku z kluczem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Pomyślnie otworzono bazę. Nic do zrobienia.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Nie można otworzyć bazy kluczy.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Sukces</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>Baza została naprawiona
|
||||
Możesz teraz ją już zapisać.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Nie mogę naprawić bazę.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -174,7 +216,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Database description:</source>
|
||||
<translation>Opis bazy danych</translation>
|
||||
<translation>Opis bazy danych:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transform rounds:</source>
|
||||
@@ -198,11 +240,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Max. history items:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Max. ilość wpisów w historii:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max. history size:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Max. rozmiar historii:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -237,24 +279,25 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 1 database</source>
|
||||
<translation>Baza danych KeePass1</translation>
|
||||
<translation>Baza danych KeePass 1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files (*)</source>
|
||||
<translation>Wszystkie pliki(*)</translation>
|
||||
<translation>Wszystkie pliki (*)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close?</source>
|
||||
<translation>Zamknąć ?</translation>
|
||||
<translation>Zamknąć?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save changes?</source>
|
||||
<translation>Zapisać zmiany ?</translation>
|
||||
<translation>Zapisać zmiany?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" was modified.
|
||||
Save changes?</source>
|
||||
<translation>"%1" został zmieniony. Zapisać zmiany ?</translation>
|
||||
<translation>"%1" został zmieniony.
|
||||
Zapisać zmiany?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@@ -274,12 +317,13 @@ Save changes?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>locked</source>
|
||||
<translation>plik CSV</translation>
|
||||
<translation>zablokowana</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"/>
|
||||
<translation>Baza, którą próbujesz otworzyć, jest zablokowana przez inną instancję KeePassX.
|
||||
Czy chcesz ją otworzyć pomimo tego? Inaczej baza będzie otwarta tylko do odczytu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
@@ -288,23 +332,28 @@ Do you want to open it anyway? Alternatively the database is opened read-only.</
|
||||
<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>Nie można zablokować bazy, którą edytujesz.
|
||||
Naciśnij anuluj, aby zakończyć zmiany albo porzucić je.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Baza nie została nigdy zapisana.
|
||||
Możesz ją zapisać albo przestać blokować.</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>Baza została zmodyfikowana.
|
||||
Czy chcesz zapisać przed zablokowaniem jej?
|
||||
W przeciwnym wypadku zmiany zostaną porzucone.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>"%1" jest w trybie edytowania.
|
||||
Odrzucić zmiany i zamknąć?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
@@ -321,7 +370,8 @@ Discard changes and close anyway?</source>
|
||||
<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>Baza, którą próbujesz zapisać jest zablokowana przez inną instancję KeePassX.
|
||||
Czy chcesz zapisać mimo to?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -352,7 +402,7 @@ Do you want to save it anyway?</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><numerusform></numerusform></translation>
|
||||
<translation><numerusform>Czy na pewno chcesz przenieść %n wpis do kosza?</numerusform><numerusform>Czy na pewno chcesz przenieść %n wpisów do kosza?</numerusform><numerusform>Czy na pewno chcesz przenieść %n wpisów do kosza?</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete group?</source>
|
||||
@@ -407,7 +457,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add entry</source>
|
||||
<translation>Nowy wpis</translation>
|
||||
<translation>Dodaj wpis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit entry</source>
|
||||
@@ -419,7 +469,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Different passwords supplied.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Podano różne hasła.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New attribute</source>
|
||||
@@ -565,7 +615,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gen.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Gen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>URL:</source>
|
||||
@@ -577,7 +627,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Presets</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Prezentuje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Notes:</source>
|
||||
@@ -686,7 +736,7 @@ Do you want to save it anyway?</source>
|
||||
</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>Nie mogę usunąć ikony. Nadal używana przez %n wpis.</numerusform><numerusform>Nie mogę usunąć ikony. Nadal używana przez %n wpisów.</numerusform><numerusform>Nie mogę usunąć ikony. Nadal używana przez %n wpisów.</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -820,6 +870,16 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Nie mogę wyliczyć głównego klucza</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Wybrany plik jest bazą starego KeePassX 1 (.kdb).
|
||||
|
||||
Możesz zaimportować ją przez wybranie Baza > 'Importuj bazę danych KeePass 1'.
|
||||
Nie będzie można skonwertować nowej bazy do starego programu KeePassX 0.4.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -980,7 +1040,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle window</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Pokaż/ukryj okno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tools</source>
|
||||
@@ -998,6 +1058,30 @@ Do you want to save it anyway?</source>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Eksport do pliku CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Napraw bazę</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>Baza KeePass 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Wszystkie pliki</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Zapisz naprawioną bazę</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Błąd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Błąd przy zapisie bazy.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1011,7 +1095,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Character Types</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Typy znaków</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upper Case Letters</source>
|
||||
@@ -1035,7 +1119,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ensure that the password contains characters from every group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Zapewnij, że hasło będzie zawierało znaki ze wszystkich grup</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Accept</source>
|
||||
@@ -1074,7 +1158,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Usage: %1</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Używanie: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Options:</source>
|
||||
@@ -1089,7 +1173,7 @@ Do you want to save it anyway?</source>
|
||||
<name>QSaveFile</name>
|
||||
<message>
|
||||
<source>Existing file %1 is not writable</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Istniejący plik %1 jest nie do zapisu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing canceled by application</source>
|
||||
@@ -1097,7 +1181,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Partial write. Partition full?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Częściowy zapis. Pełny dysk?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1108,15 +1192,15 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error writing to underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd w zapisie na urządzenie:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error opening underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd w otwieraniu z urządzenia:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading data from underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Błąd w odczycie danych z urządzenia:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error when decompressing: </source>
|
||||
@@ -1150,7 +1234,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Root group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Główna grupa</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1200,7 +1284,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use entry title to match windows for global auto-type</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Wykorzystaj tytuł wpisu do dopasowania dla globalnego auto-wpisywania</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Language</source>
|
||||
@@ -1227,7 +1311,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source> sec</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>s</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock databases after inactivity of</source>
|
||||
@@ -1260,15 +1344,15 @@ Do you want to save it anyway?</source>
|
||||
<name>main</name>
|
||||
<message>
|
||||
<source>KeePassX - cross-platform password manager</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>KeePassX - wieloplatformowy menadżer haseł</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>filename of the password database to open (*.kdbx)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>nazwa pliku z bazą haseł do otwarcia (*.kdbx)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>path to a custom config file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ścieżka do pliku z ustawieniami</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>key file of the database</source>
|
||||
|
||||
@@ -11,7 +11,11 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Revision</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Revisão</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Usando:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -22,7 +26,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Couldn't find an entry that matches the window title:</source>
|
||||
<translation>Não foi possível encontrar uma entrada que corresponda ao título da janela:</translation>
|
||||
<translation>Não foi possível localizar uma entrada que corresponda ao título da janela:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -95,7 +99,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to create Key File : </source>
|
||||
<translation>Não foi possível criar o Arquivo-Chave :</translation>
|
||||
<translation>Não foi possível criar o Arquivo-Chave : </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select a key file</source>
|
||||
@@ -167,15 +171,52 @@
|
||||
<translation>Escolha o arquivo-chave</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Reparar banco de dados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Erro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Não foi possível abrir arquivo-chave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Banco de dados aberto com sucesso. Nada para fazer.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Não foi possível abrir o banco de dados.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Sucesso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>O banco de dados foi reparado com sucesso
|
||||
Você pode salvá-lo agora.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Não foi possível reparar o banco de dados.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
<source>Database name:</source>
|
||||
<translation>Nome do Banco de Dados:</translation>
|
||||
<translation>Nome do banco de dados:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database description:</source>
|
||||
<translation>Descrição do Banco de Dados:</translation>
|
||||
<translation>Descrição do banco de dados:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transform rounds:</source>
|
||||
@@ -191,7 +232,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source> MiB</source>
|
||||
<translation>MB</translation>
|
||||
<translation> MB</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Benchmark</source>
|
||||
@@ -199,18 +240,18 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>Max. history items:</source>
|
||||
<translation>Máx. Itens no histórico:</translation>
|
||||
<translation>Máx. itens no histórico:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max. history size:</source>
|
||||
<translation>Tamanho Máx. do histórico:</translation>
|
||||
<translation>Tamanho máx. do histórico:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseTabWidget</name>
|
||||
<message>
|
||||
<source>Root</source>
|
||||
<translation>Raíz</translation>
|
||||
<translation>Raiz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
@@ -230,7 +271,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>File not found!</source>
|
||||
<translation>Arquivo não encontrado!</translation>
|
||||
<translation>Arquivo não localizado!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open KeePass 1 database</source>
|
||||
@@ -238,7 +279,7 @@
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 1 database</source>
|
||||
<translation>banco de dados KeePass 1</translation>
|
||||
<translation>Banco de dados KeePass 1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files (*)</source>
|
||||
@@ -276,13 +317,13 @@ Salvar alterações?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>locked</source>
|
||||
<translation>Trancado</translation>
|
||||
<translation>trancado</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>O banco de dados que você está tentando abrir está bloqueado por outra instância do KeePassX.
|
||||
Você quer abri-lo de qualquer forma? Alternativamente o banco de dados é aberto como somente leitura.</translation>
|
||||
Você quer abri-lo de qualquer forma? Alternativamente, o banco de dados é aberto como somente leitura.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock database</source>
|
||||
@@ -292,23 +333,27 @@ Você quer abri-lo de qualquer forma? Alternativamente o banco de dados é abert
|
||||
<source>Can't lock the database as you are currently editing it.
|
||||
Please press cancel to finish your changes or discard them.</source>
|
||||
<translation>Não é possível trancar o banco de dados uma vez que você o está editando.
|
||||
Por favor aperte cancelar para finalizar suas alterações ou descartá-las.</translation>
|
||||
Por favor, aperte cancelar para finalizar suas alterações ou descartá-las.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Esse banco de dados nunca foi salvo.
|
||||
Você pode salvar o banco de dados ou parar de trancá-lo.</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>Esse banco de dados foi modificado.
|
||||
Você deseja salvar o banco de dados antes de travá-lo?
|
||||
Do contrário, suas alterações serão perdidas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>"%1" está em modo de edição.
|
||||
Descartar alterações e fechar mesmo assim?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
@@ -325,7 +370,8 @@ Discard changes and close anyway?</source>
|
||||
<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>O banco de dados que você está tentando salvar como está travado por uma outra instância de KeePassX.
|
||||
Você deseja salvá-lo mesmo assim?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -356,7 +402,7 @@ Do you want to save it anyway?</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>Você realmente deseja mover %n entrada para a lixeira?</numerusform><numerusform>Você realmente deseja mover %n entradas para a lixeira?</numerusform></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete group?</source>
|
||||
@@ -565,7 +611,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat:</source>
|
||||
<translation>Repetir</translation>
|
||||
<translation>Repetir:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gen.</source>
|
||||
@@ -577,7 +623,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires</source>
|
||||
<translation>Expira em:</translation>
|
||||
<translation>Expira em</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Presets</source>
|
||||
@@ -647,18 +693,18 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Usar sequência de auto-digitação padrão do grupo pai</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Definir sequência auto-digitação padrão</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditWidgetIcons</name>
|
||||
<message>
|
||||
<source>Use default icon</source>
|
||||
<translation>Usar Ícone padrão</translation>
|
||||
<translation>Usar ícone padrão</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use custom icon</source>
|
||||
@@ -690,7 +736,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<source>Can't delete icon. Still used by %n item(s).</source>
|
||||
<translation><numerusform>Não é possível apagar o ícone. Ainda usado por %n item.</numerusform><numerusform>Não é possível apagar o ícone. Ainda usado por %n item(s).</numerusform></translation>
|
||||
<translation><numerusform>Não é possível apagar o ícone. Ainda usado por %n item.</numerusform><numerusform>Não é possível apagar o ícone. Ainda usado por %n itens.</numerusform></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -818,18 +864,28 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong key or database file is corrupt.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Chave errada ou arquivo de banco de dados está corrompido.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Não foi possível calcular a chave mestre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>O arquivo selecionado é um banco de dados antigo do KeePass 1 (.kdb).
|
||||
|
||||
Você pode importá-lo clicando em Banco de Dados > 'Importar banco de dados KeePass 1'.
|
||||
Esta é uma migração de uma via. Você não poderá abrir o banco de dados importado com a versão antiga do KeePassX 0.4.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
<message>
|
||||
<source>Fatal error while testing the cryptographic functions.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Erro fatal enquanto testava as funções criptográficas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePassX - Error</source>
|
||||
@@ -936,7 +992,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Find</source>
|
||||
<translation>Encontrar</translation>
|
||||
<translation>Localizar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username to clipboard</source>
|
||||
@@ -1002,6 +1058,30 @@ Do you want to save it anyway?</source>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Exportar para arquivo CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Reparar banco de dados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>Banco de dados Keepass 2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Todos arquivos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Salvar banco de dados reparado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Erro</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Escrita do banco de dados falhou.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1108,45 +1188,45 @@ Do you want to save it anyway?</source>
|
||||
<name>QtIOCompressor</name>
|
||||
<message>
|
||||
<source>Internal zlib error when compressing: </source>
|
||||
<translation>Erro interno do zlib ao compactar:</translation>
|
||||
<translation>Erro interno do zlib ao compactar: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error writing to underlying device: </source>
|
||||
<translation>Erro ao gravar no dispositivo subjacente:</translation>
|
||||
<translation>Erro ao gravar no dispositivo subjacente: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error opening underlying device: </source>
|
||||
<translation>Erro ao abrir dispositivo subjacente:</translation>
|
||||
<translation>Erro ao abrir dispositivo subjacente: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error reading data from underlying device: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Erro ao ler dados do dispositivo subjacente: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error when decompressing: </source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Erro interno do zlib ao descompactar: </translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtIOCompressor::open</name>
|
||||
<message>
|
||||
<source>The gzip format not supported in this version of zlib.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Sem suporte ao formato gzip nesta versão do zlib.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal zlib error: </source>
|
||||
<translation>Erro interno do zlib:</translation>
|
||||
<translation>Erro interno do zlib: </translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SearchWidget</name>
|
||||
<message>
|
||||
<source>Find:</source>
|
||||
<translation>Encontrar:</translation>
|
||||
<translation>Localizar:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Case sensitive</source>
|
||||
<translation>diferenciar maiúsculas e minúsculas</translation>
|
||||
<translation>Diferenciar maiúsculas e minúsculas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Current group</source>
|
||||
@@ -1154,7 +1234,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Root group</source>
|
||||
<translation>Grupo Raíz</translation>
|
||||
<translation>Grupo Raiz</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1196,15 +1276,15 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use group icon on entry creation</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Usar ícone de grupo na criação da entrada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Global Auto-Type shortcut</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Atalho para Auto-Digitação Global</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use entry title to match windows for global auto-type</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Usar título da entrada para comparar janelas para auto-digitação global</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Language</source>
|
||||
@@ -1216,34 +1296,34 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide window to system tray when minimized</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ocultar janela na bandeja de sistema quando minimizada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remember last key files</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Lembrar dos últimos arquivos-chave</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsWidgetSecurity</name>
|
||||
<message>
|
||||
<source>Clear clipboard after</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Limpar área de transferência após</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> sec</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation> seg</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Lock databases after inactivity of</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Travar bancos de dados após inatividade de</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show passwords in cleartext by default</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Mostrar senhas em texto claro por padrão</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always ask before performing auto-type</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Sempre perguntar antes de realizar auto-digitação</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1257,26 +1337,26 @@ Do you want to save it anyway?</source>
|
||||
<name>WelcomeWidget</name>
|
||||
<message>
|
||||
<source>Welcome!</source>
|
||||
<translation>Bemvindo!</translation>
|
||||
<translation>Bem-vindo!</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>main</name>
|
||||
<message>
|
||||
<source>KeePassX - cross-platform password manager</source>
|
||||
<translation>KeePassX - gerenciador de senhas Multiplataforma</translation>
|
||||
<translation>KeePassX - gerenciador de senhas multiplataforma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>filename of the password database to open (*.kdbx)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>nome de arquivo do banco de dados de senhas a ser aberto (*.kdbx)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>path to a custom config file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>caminho para um arquivo de configuração personalizado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>key file of the database</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>arquivo-chave do banco de dados</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -9,6 +9,14 @@
|
||||
<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 é distribuído sob os termos GNU de licença pública geral (GPL) versão 2 ou (á sua escolha) versão 3.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Revision</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -163,6 +171,42 @@
|
||||
<translation>Seleccionar o ficheiro chave</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -322,6 +366,11 @@ Fechar e Ignorar alterações ?</translation>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation>Falha na escrita do ficheiro CSV</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"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseWidget</name>
|
||||
@@ -818,6 +867,13 @@ Fechar e Ignorar alterações ?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Impossível calcular chave mestra:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -996,6 +1052,30 @@ Fechar e Ignorar alterações ?</translation>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Exportar para ficheiro CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1268,10 +1348,6 @@ Fechar e Ignorar alterações ?</translation>
|
||||
<source>path to a custom config file</source>
|
||||
<translation>caminho para um ficheiro de configuração personalizado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>password of the database (DANGEROUS!)</source>
|
||||
<translation>senha da base de dados (PERIGOSO !)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>key file of the database</source>
|
||||
<translation>ficheiro chave da base de dados</translation>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Ревизия</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>С помощью:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -167,6 +171,43 @@
|
||||
<translation>Выберите файл-ключ</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Восстановление хранилища</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Ошибка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Не могу открыть файл-ключ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Невозможно открыть хранилище.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Успешно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>Хранилище было восстановлено.
|
||||
Теперь Вы можете сохранить его.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Невозможно восстановить хранилище.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -290,12 +331,14 @@ Do you want to open it anyway? Alternatively the database is opened read-only.</
|
||||
<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>Невозможно заблокировать базу данных, так как вы в настоящее время редактируете её.
|
||||
Пожалуйста нажмите Отмена, чтобы завершить свои изменения или отклонить их.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has never been saved.
|
||||
You can save the database or stop locking it.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Эта база данных никогда не была сохранена.
|
||||
Вы можете сохранить базу данных или остановить её заблокированной.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This database has been modified.
|
||||
@@ -571,7 +614,7 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Gen.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Генеральный.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>URL:</source>
|
||||
@@ -649,11 +692,11 @@ Do you want to save it anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use default auto-type sequence of parent group</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Используйте стандартный автоввод из последовательности родительской группы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set default auto-type sequence</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Последовательность автоввода указать по умолчанию</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -826,6 +869,16 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Невозможно вычислить мастер-пароль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Выбранный файл от старой KeePass 1 базы данных (.kdb).
|
||||
|
||||
Вы можете импортировать его, нажав на База Данных > 'Импорт KeePass 1 базы данных'.
|
||||
Это одностороннее перемещение. Вы не сможете открыть импортированный базу данных на старой версии KeePassX 0,4.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -1004,6 +1057,30 @@ Do you want to save it anyway?</source>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Экспортировать в файл CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Восстановление хранилища</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Все файлы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Сохранить восстановленное хранилище</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Ошибка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -167,6 +171,42 @@
|
||||
<translation>Izberi datoteko s ključi</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -827,6 +867,13 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Izračun glavnega ključa ni uspel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -1005,6 +1052,30 @@ Do you want to save it anyway?</source>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Izvozi v CSV datoteko</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Revision</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Använder:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -167,6 +171,43 @@
|
||||
<translation>Välj nyckel-fil</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Laga databasen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>Kan inte öppna nyckelfilen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>Databas öppnades fint. Inget att göra.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>Misslyckades att öppna databasen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>Succé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>Databasens reparation har varit lyckad.
|
||||
Du kan nu spara den.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>Misslyckades med att laga databasen.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -291,7 +332,7 @@ Vill du öppna den ändå? Databasen kommer då att öppnas skrivskyddad.</trans
|
||||
<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 inte låsa databasen eftersom du håller på att redigera den.
|
||||
<translation>Kan inte låsa databasen eftersom du håller på att redigera den.
|
||||
Tryck avbryt för att ansluta dina ändringar alternativt kasta dem.</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -829,6 +870,16 @@ Vill du spara endå?</translation>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Kunde inte räkna nu master-nyckeln</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Den valda filen är en gammal KeePass 1 databas (.kdb)
|
||||
|
||||
Du kan importera den genom att klicka på Databas > Importera KeePass 1 databas.
|
||||
Detta är en envägsmigration. Du kan inte spara en databas som KeePass1 databas. Det som används i KeePassX 0.4.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -849,7 +900,7 @@ Vill du spara endå?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent databases</source>
|
||||
<translation>Senast använda databser</translation>
|
||||
<translation>Senast använda databaser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Help</source>
|
||||
@@ -1007,6 +1058,30 @@ Vill du spara endå?</translation>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Exportera till CSV-fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>Laga databasen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>KeePass 2 databas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>Alla filer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>Spara lagad databas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>Fel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>Misslyckades med att skriva till databasen.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
@@ -1185,11 +1260,11 @@ Vill du spara endå?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open previous databases on startup</source>
|
||||
<translation>Öppna senaste databasen är programmet startar</translation>
|
||||
<translation>Öppna senaste databasen när programmet startar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save on exit</source>
|
||||
<translation>Spara automatiskt är applikationen anslutas</translation>
|
||||
<translation>Spara automatiskt när applikationen anslutas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Automatically save after every change</source>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>Ревізія</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>Використання:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -167,6 +171,42 @@
|
||||
<translation>Оберіть файл-ключ</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -828,6 +868,16 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>Неможливо вирахувати майстер-пароль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>Обрано файл сховища попередньої версії KeePass 1 (.kdb).
|
||||
|
||||
Ви можете імпортувати його, натиснувши Сховище > 'Імпортувати сховище KeePass 1'.
|
||||
Це односторонній спосіб міграції. Ви не зможете відкрити імпортоване сховище в попередній версії KeePassX 0.4.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -1006,6 +1056,30 @@ Do you want to save it anyway?</source>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>Експортувати в файл CSV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -9,6 +9,14 @@
|
||||
<source>KeePassX is distributed under the term of the GNU General Public License (GPL) version 2 or (at your option) version 3.</source>
|
||||
<translation>KeePassX 使用的是第 2 版 GNU 通用公共授权协议(GPL)(你可以根据需要选用第 3 版).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Revision</source>
|
||||
<translation>修改</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>使用:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -163,6 +171,43 @@
|
||||
<translation>选择秘钥文件</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>修复数据库</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>错误</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>无法打开密钥文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>数据库打开正常。没什么可做的。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>无法打开数据库</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>成功</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>数据库已经修复成功
|
||||
现在可以保存数据库</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>无法修复数据库</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -307,19 +352,26 @@ Otherwise your changes are lost.</source>
|
||||
<message>
|
||||
<source>"%1" is in edit mode.
|
||||
Discard changes and close anyway?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>正在编辑 "%1" 。
|
||||
仍然要放弃修改并且关闭吗?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export database to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>把数据库导出为CSV格式文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>CSV格式文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the CSV file failed.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>写入CSV格式文件失败</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>你要保存的数据库已被另一个KeePassX锁住。
|
||||
你仍然要保存吗?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -762,7 +814,7 @@ Discard changes and close anyway?</source>
|
||||
<name>KeePass1OpenWidget</name>
|
||||
<message>
|
||||
<source>Import KeePass1 database</source>
|
||||
<translation>导入KeePass 1 数据库</translation>
|
||||
<translation>导入 KeePass 1 数据库</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
@@ -818,6 +870,15 @@ Discard changes and close anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>无法计算主密码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>当前选择的文件是旧版本 KeePass 1 数据库(.kdb)。
|
||||
你可以通过点击 数据库 > '导入KeePass 1 数据库’ 来导入。
|
||||
这是不可逆的修改。导入后的数据库将无法由旧版的KeePassX 0.4版本打开。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -986,15 +1047,39 @@ Discard changes and close anyway?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy username</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>复制用户名</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy password</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>复制密码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Export to CSV file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>导出为CSV格式文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>修复数据库</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>KeePass 2 数据库</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>所有文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>保存修复后的数据库</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>错误</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>数据库写入失败</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -1268,10 +1353,6 @@ Discard changes and close anyway?</source>
|
||||
<source>path to a custom config file</source>
|
||||
<translation>自定义配置文件路径</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>password of the database (DANGEROUS!)</source>
|
||||
<translation>数据库密码(危险!)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>key file of the database</source>
|
||||
<translation>数据库秘钥文件</translation>
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
<source>Revision</source>
|
||||
<translation>修改紀錄</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Using:</source>
|
||||
<translation>使用:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutoType</name>
|
||||
@@ -167,6 +171,43 @@
|
||||
<translation>選擇金鑰檔案</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseRepairWidget</name>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>修復資料庫</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>錯誤</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't open key file</source>
|
||||
<translation>無法打開金鑰檔案</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Database opened fine. Nothing to do.</source>
|
||||
<translation>資料庫正常打開。沒什麼事。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to open the database.</source>
|
||||
<translation>無法打開這個資料庫</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Success</source>
|
||||
<translation>成功</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The database has been successfully repaired
|
||||
You can now save it.</source>
|
||||
<translation>這個資料庫已經成功修復
|
||||
現在你可以儲存它。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to repair the database.</source>
|
||||
<translation>無法開啟這個資料庫</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DatabaseSettingsWidget</name>
|
||||
<message>
|
||||
@@ -828,6 +869,17 @@ Do you want to save it anyway?</source>
|
||||
<source>Unable to calculate master key</source>
|
||||
<translation>無法計算主金鑰</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected file is an old KeePass 1 database (.kdb).
|
||||
|
||||
You can import it by clicking on Database > 'Import KeePass 1 database'.
|
||||
This is a one-way migration. You won't be able to open the imported database with the old KeePassX 0.4 version.</source>
|
||||
<translation>被選擇的檔案是舊的 KeePass 1 資料庫 (.kdb) 。
|
||||
|
||||
|
||||
你可以點選 資料庫 > 「匯入 KeePass 1 資料庫」。
|
||||
這是單向遷移。你無法用舊的 KeePassX 0.4 的版本打開被匯入的資料庫。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Main</name>
|
||||
@@ -1006,6 +1058,30 @@ Do you want to save it anyway?</source>
|
||||
<source>Export to CSV file</source>
|
||||
<translation>輸出成 CSV 檔案</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repair database</source>
|
||||
<translation>修復資料庫</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>KeePass 2 Database</source>
|
||||
<translation>KeePass 2 資料庫</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All files</source>
|
||||
<translation>所有的檔案</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save repaired database</source>
|
||||
<translation>儲存已修復的資料庫</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation>錯誤</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Writing the database failed.</source>
|
||||
<translation>寫入資料庫失敗</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PasswordGeneratorWidget</name>
|
||||
|
||||
@@ -78,6 +78,7 @@ set(keepassx_SOURCES
|
||||
format/KeePass2.h
|
||||
format/KeePass2RandomStream.cpp
|
||||
format/KeePass2Reader.cpp
|
||||
format/KeePass2Repair.cpp
|
||||
format/KeePass2Writer.cpp
|
||||
format/KeePass2XmlReader.cpp
|
||||
format/KeePass2XmlWriter.cpp
|
||||
@@ -86,6 +87,7 @@ set(keepassx_SOURCES
|
||||
gui/ChangeMasterKeyWidget.cpp
|
||||
gui/Clipboard.cpp
|
||||
gui/DatabaseOpenWidget.cpp
|
||||
gui/DatabaseRepairWidget.cpp
|
||||
gui/DatabaseSettingsWidget.cpp
|
||||
gui/DatabaseTabWidget.cpp
|
||||
gui/DatabaseWidget.cpp
|
||||
@@ -180,6 +182,7 @@ set(keepassx_MOC
|
||||
gui/ChangeMasterKeyWidget.h
|
||||
gui/Clipboard.h
|
||||
gui/DatabaseOpenWidget.h
|
||||
gui/DatabaseRepairWidget.h
|
||||
gui/DatabaseSettingsWidget.h
|
||||
gui/DatabaseTabWidget.h
|
||||
gui/DatabaseWidget.h
|
||||
|
||||
@@ -2,7 +2,7 @@ if(Q_WS_X11)
|
||||
find_package(X11)
|
||||
if(PRINT_SUMMARY)
|
||||
add_feature_info(libXi X11_Xi_FOUND "The X11 Xi Protocol library is required for auto-type")
|
||||
add_feature_info(libXtest X11_XTest_FOUND "The X11 XTEST Protocol library is required for auto-type")
|
||||
add_feature_info(libXtst X11_XTest_FOUND "The X11 XTEST Protocol library is required for auto-type")
|
||||
endif()
|
||||
|
||||
if(X11_FOUND AND X11_Xi_FOUND AND X11_XTest_FOUND)
|
||||
|
||||
@@ -363,13 +363,21 @@ bool AutoTypePlatformX11::isTopLevelWindow(Window window)
|
||||
unsigned long nitems;
|
||||
unsigned long after;
|
||||
unsigned char* data = Q_NULLPTR;
|
||||
int retVal = XGetWindowProperty(m_dpy, window, m_atomWmState, 0, 0, False, AnyPropertyType, &type, &format,
|
||||
int retVal = XGetWindowProperty(m_dpy, window, m_atomWmState, 0, 2, False, m_atomWmState, &type, &format,
|
||||
&nitems, &after, &data);
|
||||
if (data) {
|
||||
|
||||
bool result = false;
|
||||
|
||||
if (retVal == 0 && data) {
|
||||
if (type == m_atomWmState && format == 32 && nitems > 0) {
|
||||
qint32 state = static_cast<qint32>(*data);
|
||||
result = (state != WithdrawnState);
|
||||
}
|
||||
|
||||
XFree(data);
|
||||
}
|
||||
|
||||
return (retVal == 0) && type;
|
||||
return result;
|
||||
}
|
||||
|
||||
KeySym AutoTypePlatformX11::charToKeySym(const QChar& ch)
|
||||
|
||||
@@ -114,13 +114,25 @@ QPixmap Entry::iconPixmap() const
|
||||
else {
|
||||
Q_ASSERT(database());
|
||||
|
||||
QPixmap pixmap;
|
||||
if (database() && !QPixmapCache::find(m_pixmapCacheKey, &pixmap)) {
|
||||
pixmap = QPixmap::fromImage(database()->metadata()->customIcon(m_data.customIcon));
|
||||
m_pixmapCacheKey = QPixmapCache::insert(pixmap);
|
||||
if (database()) {
|
||||
return database()->metadata()->customIconPixmap(m_data.customIcon);
|
||||
}
|
||||
else {
|
||||
return QPixmap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pixmap;
|
||||
QPixmap Entry::iconScaledPixmap() const
|
||||
{
|
||||
if (m_data.customIcon.isNull()) {
|
||||
// built-in icons are 16x16 so don't need to be scaled
|
||||
return databaseIcons()->iconPixmap(m_data.iconNumber);
|
||||
}
|
||||
else {
|
||||
Q_ASSERT(database());
|
||||
|
||||
return database()->metadata()->customIconScaledPixmap(m_data.customIcon);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -248,8 +260,6 @@ void Entry::setIcon(int iconNumber)
|
||||
m_data.iconNumber = iconNumber;
|
||||
m_data.customIcon = Uuid();
|
||||
|
||||
m_pixmapCacheKey = QPixmapCache::Key();
|
||||
|
||||
Q_EMIT modified();
|
||||
emitDataChanged();
|
||||
}
|
||||
@@ -263,8 +273,6 @@ void Entry::setIcon(const Uuid& uuid)
|
||||
m_data.customIcon = uuid;
|
||||
m_data.iconNumber = 0;
|
||||
|
||||
m_pixmapCacheKey = QPixmapCache::Key();
|
||||
|
||||
Q_EMIT modified();
|
||||
emitDataChanged();
|
||||
}
|
||||
@@ -364,7 +372,6 @@ const QList<Entry*>& Entry::historyItems() const
|
||||
void Entry::addHistoryItem(Entry* entry)
|
||||
{
|
||||
Q_ASSERT(!entry->parent());
|
||||
Q_ASSERT(entry->uuid() == uuid());
|
||||
|
||||
m_history.append(entry);
|
||||
Q_EMIT modified();
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
#include <QImage>
|
||||
#include <QMap>
|
||||
#include <QPixmap>
|
||||
#include <QPixmapCache>
|
||||
#include <QPointer>
|
||||
#include <QSet>
|
||||
#include <QUrl>
|
||||
@@ -61,6 +60,7 @@ public:
|
||||
Uuid uuid() const;
|
||||
QImage icon() const;
|
||||
QPixmap iconPixmap() const;
|
||||
QPixmap iconScaledPixmap() const;
|
||||
int iconNumber() const;
|
||||
Uuid iconUuid() const;
|
||||
QColor foregroundColor() const;
|
||||
@@ -169,7 +169,6 @@ private:
|
||||
Entry* m_tmpHistoryItem;
|
||||
bool m_modifiedSinceBegin;
|
||||
QPointer<Group> m_group;
|
||||
mutable QPixmapCache::Key m_pixmapCacheKey;
|
||||
bool m_updateTimeinfo;
|
||||
};
|
||||
|
||||
|
||||
@@ -134,13 +134,30 @@ QPixmap Group::iconPixmap() const
|
||||
else {
|
||||
Q_ASSERT(m_db);
|
||||
|
||||
QPixmap pixmap;
|
||||
if (m_db && !QPixmapCache::find(m_pixmapCacheKey, &pixmap)) {
|
||||
pixmap = QPixmap::fromImage(m_db->metadata()->customIcon(m_data.customIcon));
|
||||
m_pixmapCacheKey = QPixmapCache::insert(pixmap);
|
||||
if (m_db) {
|
||||
return m_db->metadata()->customIconPixmap(m_data.customIcon);
|
||||
}
|
||||
else {
|
||||
return QPixmap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pixmap;
|
||||
QPixmap Group::iconScaledPixmap() const
|
||||
{
|
||||
if (m_data.customIcon.isNull()) {
|
||||
// built-in icons are 16x16 so don't need to be scaled
|
||||
return databaseIcons()->iconPixmap(m_data.iconNumber);
|
||||
}
|
||||
else {
|
||||
Q_ASSERT(m_db);
|
||||
|
||||
if (m_db) {
|
||||
return m_db->metadata()->customIconScaledPixmap(m_data.customIcon);
|
||||
}
|
||||
else {
|
||||
return QPixmap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,8 +231,6 @@ void Group::setIcon(int iconNumber)
|
||||
m_data.iconNumber = iconNumber;
|
||||
m_data.customIcon = Uuid();
|
||||
|
||||
m_pixmapCacheKey = QPixmapCache::Key();
|
||||
|
||||
updateTimeinfo();
|
||||
Q_EMIT modified();
|
||||
Q_EMIT dataChanged(this);
|
||||
@@ -230,8 +245,6 @@ void Group::setIcon(const Uuid& uuid)
|
||||
m_data.customIcon = uuid;
|
||||
m_data.iconNumber = 0;
|
||||
|
||||
m_pixmapCacheKey = QPixmapCache::Key();
|
||||
|
||||
updateTimeinfo();
|
||||
Q_EMIT modified();
|
||||
Q_EMIT dataChanged(this);
|
||||
@@ -491,7 +504,7 @@ Group* Group::clone(Entry::CloneFlags entryFlags) const
|
||||
}
|
||||
|
||||
Q_FOREACH (Group* groupChild, children()) {
|
||||
Group* clonedGroupChild = groupChild->clone();
|
||||
Group* clonedGroupChild = groupChild->clone(entryFlags);
|
||||
clonedGroupChild->setParent(clonedGroup);
|
||||
}
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ public:
|
||||
QString notes() const;
|
||||
QImage icon() const;
|
||||
QPixmap iconPixmap() const;
|
||||
QPixmap iconScaledPixmap() const;
|
||||
int iconNumber() const;
|
||||
Uuid iconUuid() const;
|
||||
TimeInfo timeInfo() const;
|
||||
@@ -155,7 +156,6 @@ private:
|
||||
QList<Entry*> m_entries;
|
||||
|
||||
QPointer<Group> m_parent;
|
||||
mutable QPixmapCache::Key m_pixmapCacheKey;
|
||||
|
||||
bool m_updateTimeinfo;
|
||||
|
||||
|
||||
@@ -167,6 +167,43 @@ QImage Metadata::customIcon(const Uuid& uuid) const
|
||||
return m_customIcons.value(uuid);
|
||||
}
|
||||
|
||||
QPixmap Metadata::customIconPixmap(const Uuid& uuid) const
|
||||
{
|
||||
QPixmap pixmap;
|
||||
|
||||
if (!m_customIcons.contains(uuid)) {
|
||||
return pixmap;
|
||||
}
|
||||
|
||||
QPixmapCache::Key& cacheKey = m_customIconCacheKeys[uuid];
|
||||
|
||||
if (!QPixmapCache::find(cacheKey, &pixmap)) {
|
||||
pixmap = QPixmap::fromImage(m_customIcons.value(uuid));
|
||||
cacheKey = QPixmapCache::insert(pixmap);
|
||||
}
|
||||
|
||||
return pixmap;
|
||||
}
|
||||
|
||||
QPixmap Metadata::customIconScaledPixmap(const Uuid& uuid) const
|
||||
{
|
||||
QPixmap pixmap;
|
||||
|
||||
if (!m_customIcons.contains(uuid)) {
|
||||
return pixmap;
|
||||
}
|
||||
|
||||
QPixmapCache::Key& cacheKey = m_customIconScaledCacheKeys[uuid];
|
||||
|
||||
if (!QPixmapCache::find(cacheKey, &pixmap)) {
|
||||
QImage image = m_customIcons.value(uuid).scaled(16, 16, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||
pixmap = QPixmap::fromImage(image);
|
||||
cacheKey = QPixmapCache::insert(pixmap);
|
||||
}
|
||||
|
||||
return pixmap;
|
||||
}
|
||||
|
||||
bool Metadata::containsCustomIcon(const Uuid& uuid) const
|
||||
{
|
||||
return m_customIcons.contains(uuid);
|
||||
@@ -177,6 +214,17 @@ QHash<Uuid, QImage> Metadata::customIcons() const
|
||||
return m_customIcons;
|
||||
}
|
||||
|
||||
QHash<Uuid, QPixmap> Metadata::customIconsScaledPixmaps() const
|
||||
{
|
||||
QHash<Uuid, QPixmap> result;
|
||||
|
||||
Q_FOREACH (const Uuid& uuid, m_customIconsOrder) {
|
||||
result.insert(uuid, customIconScaledPixmap(uuid));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
QList<Uuid> Metadata::customIconsOrder() const
|
||||
{
|
||||
return m_customIconsOrder;
|
||||
@@ -338,6 +386,9 @@ void Metadata::addCustomIcon(const Uuid& uuid, const QImage& icon)
|
||||
Q_ASSERT(!m_customIcons.contains(uuid));
|
||||
|
||||
m_customIcons.insert(uuid, icon);
|
||||
// reset cache in case there is also an icon with that uuid
|
||||
m_customIconCacheKeys[uuid] = QPixmapCache::Key();
|
||||
m_customIconScaledCacheKeys[uuid] = QPixmapCache::Key();
|
||||
m_customIconsOrder.append(uuid);
|
||||
Q_ASSERT(m_customIcons.count() == m_customIconsOrder.count());
|
||||
Q_EMIT modified();
|
||||
@@ -365,6 +416,10 @@ void Metadata::removeCustomIcon(const Uuid& uuid)
|
||||
Q_ASSERT(m_customIcons.contains(uuid));
|
||||
|
||||
m_customIcons.remove(uuid);
|
||||
QPixmapCache::remove(m_customIconCacheKeys.value(uuid));
|
||||
m_customIconCacheKeys.remove(uuid);
|
||||
QPixmapCache::remove(m_customIconScaledCacheKeys.value(uuid));
|
||||
m_customIconScaledCacheKeys.remove(uuid);
|
||||
m_customIconsOrder.removeAll(uuid);
|
||||
Q_ASSERT(m_customIcons.count() == m_customIconsOrder.count());
|
||||
Q_EMIT modified();
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
#include <QDateTime>
|
||||
#include <QHash>
|
||||
#include <QImage>
|
||||
#include <QPixmap>
|
||||
#include <QPixmapCache>
|
||||
#include <QPointer>
|
||||
|
||||
#include "core/Global.h"
|
||||
@@ -78,10 +80,13 @@ public:
|
||||
bool protectNotes() const;
|
||||
// bool autoEnableVisualHiding() const;
|
||||
QImage customIcon(const Uuid& uuid) const;
|
||||
QPixmap customIconPixmap(const Uuid& uuid) const;
|
||||
QPixmap customIconScaledPixmap(const Uuid& uuid) const;
|
||||
bool containsCustomIcon(const Uuid& uuid) const;
|
||||
QHash<Uuid, QImage> customIcons() const;
|
||||
QList<Uuid> customIconsOrder() const;
|
||||
bool recycleBinEnabled() const;
|
||||
QHash<Uuid, QPixmap> customIconsScaledPixmaps() const;
|
||||
Group* recycleBin();
|
||||
const Group* recycleBin() const;
|
||||
QDateTime recycleBinChanged() const;
|
||||
@@ -153,6 +158,8 @@ private:
|
||||
MetadataData m_data;
|
||||
|
||||
QHash<Uuid, QImage> m_customIcons;
|
||||
mutable QHash<Uuid, QPixmapCache::Key> m_customIconCacheKeys;
|
||||
mutable QHash<Uuid, QPixmapCache::Key> m_customIconScaledCacheKeys;
|
||||
QList<Uuid> m_customIconsOrder;
|
||||
|
||||
QPointer<Group> m_recycleBin;
|
||||
|
||||
@@ -380,6 +380,10 @@ SymmetricCipherStream* KeePass1Reader::testKeys(const QString& password, const Q
|
||||
}
|
||||
}
|
||||
|
||||
if (!cipherStream) {
|
||||
raiseError(tr("Wrong key or database file is corrupt."));
|
||||
}
|
||||
|
||||
return cipherStream.take();
|
||||
}
|
||||
|
||||
@@ -901,10 +905,10 @@ bool KeePass1Reader::parseCustomIcons4(const QByteArray& data)
|
||||
QByteArray entryUuid = data.mid(pos, 16);
|
||||
pos += 16;
|
||||
|
||||
int iconId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
|
||||
quint32 iconId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
|
||||
pos += 4;
|
||||
|
||||
if (m_entryUuids.contains(entryUuid) && (iconId < iconUuids.size())) {
|
||||
if (m_entryUuids.contains(entryUuid) && (iconId < static_cast<quint32>(iconUuids.size()))) {
|
||||
m_entryUuids[entryUuid]->setIcon(iconUuids[iconId]);
|
||||
}
|
||||
}
|
||||
@@ -917,10 +921,10 @@ bool KeePass1Reader::parseCustomIcons4(const QByteArray& data)
|
||||
quint32 groupId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
|
||||
pos += 4;
|
||||
|
||||
int iconId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
|
||||
quint32 iconId = Endian::bytesToUInt32(data.mid(pos, 4), KeePass1::BYTEORDER);
|
||||
pos += 4;
|
||||
|
||||
if (m_groupIds.contains(groupId) && (iconId < iconUuids.size())) {
|
||||
if (m_groupIds.contains(groupId) && (iconId < static_cast<quint32>(iconUuids.size()))) {
|
||||
m_groupIds[groupId]->setIcon(iconUuids[iconId]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ KeePass2Reader::KeePass2Reader()
|
||||
{
|
||||
}
|
||||
|
||||
Database* KeePass2Reader::readDatabase(QIODevice* device, const CompositeKey& key)
|
||||
Database* KeePass2Reader::readDatabase(QIODevice* device, const CompositeKey& key, bool keepDatabase)
|
||||
{
|
||||
QScopedPointer<Database> db(new Database());
|
||||
m_db = db.data();
|
||||
@@ -178,7 +178,12 @@ Database* KeePass2Reader::readDatabase(QIODevice* device, const CompositeKey& ke
|
||||
|
||||
if (xmlReader.hasError()) {
|
||||
raiseError(xmlReader.errorString());
|
||||
return Q_NULLPTR;
|
||||
if (keepDatabase) {
|
||||
return db.take();
|
||||
}
|
||||
else {
|
||||
return Q_NULLPTR;
|
||||
}
|
||||
}
|
||||
|
||||
Q_ASSERT(version < 0x00030001 || !xmlReader.headerHash().isEmpty());
|
||||
@@ -186,7 +191,7 @@ Database* KeePass2Reader::readDatabase(QIODevice* device, const CompositeKey& ke
|
||||
if (!xmlReader.headerHash().isEmpty()) {
|
||||
QByteArray headerHash = CryptoHash::hash(headerStream.storedData(), CryptoHash::Sha256);
|
||||
if (headerHash != xmlReader.headerHash()) {
|
||||
raiseError("Head doesn't match hash");
|
||||
raiseError("Header doesn't match hash");
|
||||
return Q_NULLPTR;
|
||||
}
|
||||
}
|
||||
@@ -232,6 +237,11 @@ QByteArray KeePass2Reader::xmlData()
|
||||
return m_xmlData;
|
||||
}
|
||||
|
||||
QByteArray KeePass2Reader::streamKey()
|
||||
{
|
||||
return m_protectedStreamKey;
|
||||
}
|
||||
|
||||
void KeePass2Reader::raiseError(const QString& errorMessage)
|
||||
{
|
||||
m_error = true;
|
||||
|
||||
@@ -31,12 +31,13 @@ class KeePass2Reader
|
||||
|
||||
public:
|
||||
KeePass2Reader();
|
||||
Database* readDatabase(QIODevice* device, const CompositeKey& key);
|
||||
Database* readDatabase(QIODevice* device, const CompositeKey& key, bool keepDatabase = false);
|
||||
Database* readDatabase(const QString& filename, const CompositeKey& key);
|
||||
bool hasError();
|
||||
QString errorString();
|
||||
void setSaveXml(bool save);
|
||||
QByteArray xmlData();
|
||||
QByteArray streamKey();
|
||||
|
||||
private:
|
||||
void raiseError(const QString& errorMessage);
|
||||
|
||||
107
src/format/KeePass2Repair.cpp
Normal file
107
src/format/KeePass2Repair.cpp
Normal file
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* Copyright (C) 2016 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 "KeePass2Repair.h"
|
||||
|
||||
#include <QBuffer>
|
||||
#include <QRegExp>
|
||||
|
||||
#include "format/KeePass2RandomStream.h"
|
||||
#include "format/KeePass2Reader.h"
|
||||
#include "format/KeePass2XmlReader.h"
|
||||
|
||||
KeePass2Repair::KeePass2Repair()
|
||||
: m_db(Q_NULLPTR)
|
||||
{
|
||||
}
|
||||
|
||||
KeePass2Repair::RepairResult KeePass2Repair::repairDatabase(QIODevice* device, const CompositeKey& key)
|
||||
{
|
||||
m_db = Q_NULLPTR;
|
||||
m_errorStr.clear();
|
||||
|
||||
KeePass2Reader reader;
|
||||
reader.setSaveXml(true);
|
||||
|
||||
Database* db = reader.readDatabase(device, key, true);
|
||||
if (!reader.hasError()) {
|
||||
delete db;
|
||||
return NothingTodo;
|
||||
}
|
||||
|
||||
QByteArray xmlData = reader.xmlData();
|
||||
if (!db || xmlData.isEmpty()) {
|
||||
delete db;
|
||||
m_errorStr = reader.errorString();
|
||||
return UnableToOpen;
|
||||
}
|
||||
|
||||
bool repairAction = false;
|
||||
|
||||
QString xmlStart = QString::fromLatin1(xmlData.constData(), qMin(100, xmlData.size()));
|
||||
QRegExp encodingRegExp("encoding=\"([^\"]+)\"", Qt::CaseInsensitive, QRegExp::RegExp2);
|
||||
if (encodingRegExp.indexIn(xmlStart) != -1) {
|
||||
if (encodingRegExp.cap(1).compare("utf-8", Qt::CaseInsensitive) != 0
|
||||
&& encodingRegExp.cap(1).compare("utf8", Qt::CaseInsensitive) != 0)
|
||||
{
|
||||
// database is not utf-8 encoded, we don't support repairing that
|
||||
delete db;
|
||||
return RepairFailed;
|
||||
}
|
||||
}
|
||||
|
||||
// try to fix broken databases because of bug #392
|
||||
for (int i = (xmlData.size() - 1); i >= 0; i--) {
|
||||
quint8 ch = static_cast<quint8>(xmlData.at(i));
|
||||
if (ch < 0x20 && ch != 0x09 && ch != 0x0A && ch != 0x0D) {
|
||||
xmlData.remove(i, 1);
|
||||
repairAction = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!repairAction) {
|
||||
// we were unable to find the problem
|
||||
delete db;
|
||||
return RepairFailed;
|
||||
}
|
||||
|
||||
KeePass2RandomStream randomStream;
|
||||
randomStream.init(reader.streamKey());
|
||||
KeePass2XmlReader xmlReader;
|
||||
QBuffer buffer(&xmlData);
|
||||
buffer.open(QIODevice::ReadOnly);
|
||||
xmlReader.readDatabase(&buffer, db, &randomStream);
|
||||
|
||||
if (xmlReader.hasError()) {
|
||||
delete db;
|
||||
return RepairFailed;
|
||||
}
|
||||
else {
|
||||
m_db = db;
|
||||
return RepairSuccess;
|
||||
}
|
||||
}
|
||||
|
||||
Database* KeePass2Repair::database() const
|
||||
{
|
||||
return m_db;
|
||||
}
|
||||
|
||||
QString KeePass2Repair::errorString() const
|
||||
{
|
||||
return m_errorStr;
|
||||
}
|
||||
50
src/format/KeePass2Repair.h
Normal file
50
src/format/KeePass2Repair.h
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (C) 2016 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_KEEPASS2REPAIR_H
|
||||
#define KEEPASSX_KEEPASS2REPAIR_H
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QIODevice>
|
||||
|
||||
#include "core/Database.h"
|
||||
#include "keys/CompositeKey.h"
|
||||
|
||||
class KeePass2Repair
|
||||
{
|
||||
Q_DECLARE_TR_FUNCTIONS(KeePass2Repair)
|
||||
|
||||
public:
|
||||
enum RepairResult
|
||||
{
|
||||
NothingTodo,
|
||||
UnableToOpen,
|
||||
RepairSuccess,
|
||||
RepairFailed
|
||||
};
|
||||
|
||||
KeePass2Repair();
|
||||
RepairResult repairDatabase(QIODevice* device, const CompositeKey& key);
|
||||
Database* database() const;
|
||||
QString errorString() const;
|
||||
|
||||
private:
|
||||
Database* m_db;
|
||||
QString m_errorStr;
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_KEEPASS2REPAIR_H
|
||||
@@ -523,6 +523,7 @@ Group* KeePass2XmlReader::parseGroup()
|
||||
if (m_strictMode) {
|
||||
raiseError("Invalid group icon number");
|
||||
}
|
||||
iconId = 0;
|
||||
}
|
||||
else {
|
||||
if (iconId >= DatabaseIcons::IconCount) {
|
||||
@@ -702,6 +703,7 @@ Entry* KeePass2XmlReader::parseEntry(bool history)
|
||||
if (m_strictMode) {
|
||||
raiseError("Invalid entry icon number");
|
||||
}
|
||||
iconId = 0;
|
||||
}
|
||||
else {
|
||||
entry->setIcon(iconId);
|
||||
@@ -776,6 +778,13 @@ Entry* KeePass2XmlReader::parseEntry(bool history)
|
||||
}
|
||||
|
||||
Q_FOREACH (Entry* historyItem, historyItems) {
|
||||
if (historyItem->uuid() != entry->uuid()) {
|
||||
if (m_strictMode) {
|
||||
raiseError("History element with different uuid");
|
||||
} else {
|
||||
historyItem->setUuid(entry->uuid());
|
||||
}
|
||||
}
|
||||
entry->addHistoryItem(historyItem);
|
||||
}
|
||||
|
||||
|
||||
@@ -374,7 +374,7 @@ void KeePass2XmlWriter::writeEntry(const Entry* entry)
|
||||
}
|
||||
|
||||
if (!value.isEmpty()) {
|
||||
m_xml.writeCharacters(value);
|
||||
m_xml.writeCharacters(stripInvalidXml10Chars(value));
|
||||
}
|
||||
m_xml.writeEndElement();
|
||||
|
||||
@@ -445,7 +445,7 @@ void KeePass2XmlWriter::writeString(const QString& qualifiedName, const QString&
|
||||
m_xml.writeEmptyElement(qualifiedName);
|
||||
}
|
||||
else {
|
||||
m_xml.writeTextElement(qualifiedName, string);
|
||||
m_xml.writeTextElement(qualifiedName, stripInvalidXml10Chars(string));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -549,6 +549,31 @@ QString KeePass2XmlWriter::colorPartToString(int value)
|
||||
return str;
|
||||
}
|
||||
|
||||
QString KeePass2XmlWriter::stripInvalidXml10Chars(QString str)
|
||||
{
|
||||
for (int i = str.size() - 1; i >= 0; i--) {
|
||||
const QChar ch = str.at(i);
|
||||
const ushort uc = ch.unicode();
|
||||
|
||||
if (ch.isLowSurrogate() && i != 0 && str.at(i - 1).isHighSurrogate()) {
|
||||
// keep valid surrogate pair
|
||||
i--;
|
||||
}
|
||||
else if ((uc < 0x20 && uc != 0x09 && uc != 0x0A && uc != 0x0D) // control chracters
|
||||
|| (uc >= 0x7F && uc <= 0x84) // control chracters, valid but discouraged by XML
|
||||
|| (uc >= 0x86 && uc <= 0x9F) // control chracters, valid but discouraged by XML
|
||||
|| (uc > 0xFFFD) // noncharacter
|
||||
|| ch.isLowSurrogate() // single low surrogate
|
||||
|| ch.isHighSurrogate()) // single high surrogate
|
||||
{
|
||||
qWarning("Stripping invalid XML 1.0 codepoint %x", uc);
|
||||
str.remove(i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
void KeePass2XmlWriter::raiseError(const QString& errorMessage)
|
||||
{
|
||||
m_error = true;
|
||||
|
||||
@@ -73,6 +73,7 @@ private:
|
||||
void writeColor(const QString& qualifiedName, const QColor& color);
|
||||
void writeTriState(const QString& qualifiedName, Group::TriState triState);
|
||||
QString colorPartToString(int value);
|
||||
QString stripInvalidXml10Chars(QString str);
|
||||
|
||||
void raiseError(const QString& errorMessage);
|
||||
|
||||
|
||||
@@ -49,10 +49,6 @@ DatabaseOpenWidget::DatabaseOpenWidget(QWidget* parent)
|
||||
connect(m_ui->editPassword, SIGNAL(textChanged(QString)), SLOT(activatePassword()));
|
||||
connect(m_ui->comboKeyFile, SIGNAL(editTextChanged(QString)), SLOT(activateKeyFile()));
|
||||
|
||||
connect(m_ui->checkPassword, SIGNAL(toggled(bool)), SLOT(setOkButtonEnabled()));
|
||||
connect(m_ui->checkKeyFile, SIGNAL(toggled(bool)), SLOT(setOkButtonEnabled()));
|
||||
connect(m_ui->comboKeyFile, SIGNAL(editTextChanged(QString)), SLOT(setOkButtonEnabled()));
|
||||
|
||||
connect(m_ui->buttonBox, SIGNAL(accepted()), SLOT(openDatabase()));
|
||||
connect(m_ui->buttonBox, SIGNAL(rejected()), SLOT(reject()));
|
||||
}
|
||||
@@ -75,6 +71,7 @@ void DatabaseOpenWidget::load(const QString& filename)
|
||||
}
|
||||
}
|
||||
|
||||
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
|
||||
m_ui->editPassword->setFocus();
|
||||
}
|
||||
|
||||
@@ -99,13 +96,11 @@ void DatabaseOpenWidget::openDatabase()
|
||||
{
|
||||
KeePass2Reader reader;
|
||||
CompositeKey masterKey = databaseKey();
|
||||
if (masterKey.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QFile file(m_filename);
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
// TODO: error message
|
||||
MessageBox::warning(this, tr("Error"), tr("Unable to open the database.").append("\n")
|
||||
.append(file.errorString()));
|
||||
return;
|
||||
}
|
||||
if (m_db) {
|
||||
@@ -172,14 +167,6 @@ void DatabaseOpenWidget::activateKeyFile()
|
||||
m_ui->checkKeyFile->setChecked(true);
|
||||
}
|
||||
|
||||
void DatabaseOpenWidget::setOkButtonEnabled()
|
||||
{
|
||||
bool enable = m_ui->checkPassword->isChecked()
|
||||
|| (m_ui->checkKeyFile->isChecked() && !m_ui->comboKeyFile->currentText().isEmpty());
|
||||
|
||||
m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(enable);
|
||||
}
|
||||
|
||||
void DatabaseOpenWidget::browseKeyFile()
|
||||
{
|
||||
QString filters = QString("%1 (*);;%2 (*.key)").arg(tr("All files"), tr("Key files"));
|
||||
|
||||
@@ -54,7 +54,6 @@ protected Q_SLOTS:
|
||||
private Q_SLOTS:
|
||||
void activatePassword();
|
||||
void activateKeyFile();
|
||||
void setOkButtonEnabled();
|
||||
void browseKeyFile();
|
||||
|
||||
protected:
|
||||
|
||||
105
src/gui/DatabaseRepairWidget.cpp
Normal file
105
src/gui/DatabaseRepairWidget.cpp
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
* Copyright (C) 2016 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 "DatabaseRepairWidget.h"
|
||||
|
||||
#include <QFile>
|
||||
#include <QFileInfo>
|
||||
|
||||
#include "ui_DatabaseOpenWidget.h"
|
||||
#include "core/Database.h"
|
||||
#include "core/Metadata.h"
|
||||
#include "format/KeePass2Repair.h"
|
||||
#include "gui/MessageBox.h"
|
||||
#include "keys/FileKey.h"
|
||||
#include "keys/PasswordKey.h"
|
||||
|
||||
DatabaseRepairWidget::DatabaseRepairWidget(QWidget* parent)
|
||||
: DatabaseOpenWidget(parent)
|
||||
{
|
||||
m_ui->labelHeadline->setText(tr("Repair database"));
|
||||
|
||||
connect(this, SIGNAL(editFinished(bool)), this, SLOT(processEditFinished(bool)));
|
||||
}
|
||||
|
||||
void DatabaseRepairWidget::openDatabase()
|
||||
{
|
||||
CompositeKey masterKey;
|
||||
|
||||
if (m_ui->checkPassword->isChecked()) {
|
||||
masterKey.addKey(PasswordKey(m_ui->editPassword->text()));
|
||||
}
|
||||
|
||||
if (m_ui->checkKeyFile->isChecked()) {
|
||||
FileKey key;
|
||||
QString keyFilename = m_ui->comboKeyFile->currentText();
|
||||
QString errorMsg;
|
||||
if (!key.load(keyFilename, &errorMsg)) {
|
||||
MessageBox::warning(this, tr("Error"), tr("Can't open key file").append(":\n").append(errorMsg));
|
||||
Q_EMIT editFinished(false);
|
||||
return;
|
||||
}
|
||||
masterKey.addKey(key);
|
||||
}
|
||||
|
||||
KeePass2Repair repair;
|
||||
|
||||
QFile file(m_filename);
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
MessageBox::warning(this, tr("Error"), tr("Unable to open the database.").append("\n")
|
||||
.append(file.errorString()));
|
||||
Q_EMIT editFinished(false);
|
||||
return;
|
||||
}
|
||||
if (m_db) {
|
||||
delete m_db;
|
||||
}
|
||||
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
||||
KeePass2Repair::RepairResult repairResult = repair.repairDatabase(&file, masterKey);
|
||||
QApplication::restoreOverrideCursor();
|
||||
|
||||
switch (repairResult) {
|
||||
case KeePass2Repair::NothingTodo:
|
||||
MessageBox::information(this, tr("Error"), tr("Database opened fine. Nothing to do."));
|
||||
Q_EMIT editFinished(false);
|
||||
return;
|
||||
case KeePass2Repair::UnableToOpen:
|
||||
MessageBox::warning(this, tr("Error"), tr("Unable to open the database.").append("\n")
|
||||
.append(repair.errorString()));
|
||||
Q_EMIT editFinished(false);
|
||||
return;
|
||||
case KeePass2Repair::RepairSuccess:
|
||||
m_db = repair.database();
|
||||
MessageBox::warning(this, tr("Success"), tr("The database has been successfully repaired\nYou can now save it."));
|
||||
Q_EMIT editFinished(true);
|
||||
return;
|
||||
case KeePass2Repair::RepairFailed:
|
||||
MessageBox::warning(this, tr("Error"), tr("Unable to repair the database."));
|
||||
Q_EMIT editFinished(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void DatabaseRepairWidget::processEditFinished(bool result)
|
||||
{
|
||||
if (result) {
|
||||
Q_EMIT success();
|
||||
}
|
||||
else {
|
||||
Q_EMIT error();
|
||||
}
|
||||
}
|
||||
41
src/gui/DatabaseRepairWidget.h
Normal file
41
src/gui/DatabaseRepairWidget.h
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2016 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_DATABASEREPAIRWIDGET_H
|
||||
#define KEEPASSX_DATABASEREPAIRWIDGET_H
|
||||
|
||||
#include "gui/DatabaseOpenWidget.h"
|
||||
|
||||
class DatabaseRepairWidget : public DatabaseOpenWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit DatabaseRepairWidget(QWidget* parent = Q_NULLPTR);
|
||||
|
||||
Q_SIGNALS:
|
||||
void success();
|
||||
void error();
|
||||
|
||||
protected:
|
||||
void openDatabase() Q_DECL_OVERRIDE;
|
||||
|
||||
private Q_SLOTS:
|
||||
void processEditFinished(bool result);
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_DATABASEREPAIRWIDGET_H
|
||||
@@ -131,11 +131,10 @@ void DatabaseTabWidget::openDatabase(const QString& fileName, const QString& pw,
|
||||
|
||||
// test if we can read/write or read the file
|
||||
QFile file(fileName);
|
||||
// TODO: error handling
|
||||
if (!file.open(QIODevice::ReadWrite)) {
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
// can't open
|
||||
// TODO: error message
|
||||
MessageBox::warning(this, tr("Error"), tr("Unable to open the database.").append("\n")
|
||||
.append(file.errorString()));
|
||||
return;
|
||||
}
|
||||
else {
|
||||
@@ -296,7 +295,7 @@ bool DatabaseTabWidget::saveDatabase(Database* db)
|
||||
DatabaseManagerStruct& dbStruct = m_dbList[db];
|
||||
|
||||
if (dbStruct.saveToFilename) {
|
||||
QSaveFile saveFile(dbStruct.filePath);
|
||||
QSaveFile saveFile(dbStruct.canonicalFilePath);
|
||||
if (saveFile.open(QIODevice::WriteOnly)) {
|
||||
m_writer.writeDatabase(&saveFile, db);
|
||||
if (m_writer.hasError()) {
|
||||
@@ -310,6 +309,11 @@ bool DatabaseTabWidget::saveDatabase(Database* db)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
MessageBox::critical(this, tr("Error"), tr("Writing the database failed.") + "\n\n"
|
||||
+ saveFile.errorString());
|
||||
return false;
|
||||
}
|
||||
|
||||
dbStruct.modified = false;
|
||||
updateTabName(db);
|
||||
@@ -386,6 +390,9 @@ bool DatabaseTabWidget::saveDatabaseAs(Database* db)
|
||||
return false;
|
||||
}
|
||||
|
||||
// refresh fileinfo since the file didn't exist before
|
||||
fileInfo.refresh();
|
||||
|
||||
dbStruct.modified = false;
|
||||
dbStruct.saveToFilename = true;
|
||||
dbStruct.readOnly = false;
|
||||
|
||||
@@ -341,14 +341,24 @@ void DatabaseWidget::deleteEntries()
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (selected.size() > 1) {
|
||||
QMessageBox::StandardButton result = MessageBox::question(
|
||||
QMessageBox::StandardButton result;
|
||||
|
||||
if (selected.size() == 1) {
|
||||
result = MessageBox::question(
|
||||
this, tr("Move entry to recycle bin?"),
|
||||
tr("Do you really want to move entry \"%1\" to the recycle bin?")
|
||||
.arg(selectedEntries.first()->title()),
|
||||
QMessageBox::Yes | QMessageBox::No);
|
||||
}
|
||||
else {
|
||||
result = MessageBox::question(
|
||||
this, tr("Move entries to recycle bin?"),
|
||||
tr("Do you really want to move %n entry(s) to the recycle bin?", 0, selected.size()),
|
||||
QMessageBox::Yes | QMessageBox::No);
|
||||
if (result == QMessageBox::No) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (result == QMessageBox::No) {
|
||||
return;
|
||||
}
|
||||
|
||||
Q_FOREACH (Entry* entry, selectedEntries) {
|
||||
@@ -493,7 +503,9 @@ void DatabaseWidget::deleteGroup()
|
||||
}
|
||||
|
||||
bool inRecylceBin = Tools::hasChild(m_db->metadata()->recycleBin(), currentGroup);
|
||||
if (inRecylceBin || !m_db->metadata()->recycleBinEnabled()) {
|
||||
bool isRecycleBin = (currentGroup == m_db->metadata()->recycleBin());
|
||||
bool isRecycleBinSubgroup = Tools::hasChild(currentGroup, m_db->metadata()->recycleBin());
|
||||
if (inRecylceBin || isRecycleBin || isRecycleBinSubgroup || !m_db->metadata()->recycleBinEnabled()) {
|
||||
QMessageBox::StandardButton result = MessageBox::question(
|
||||
this, tr("Delete group?"),
|
||||
tr("Do you really want to delete the group \"%1\" for good?")
|
||||
@@ -871,8 +883,7 @@ bool DatabaseWidget::dbHasKey() const
|
||||
bool DatabaseWidget::canDeleteCurrentGroup() const
|
||||
{
|
||||
bool isRootGroup = m_db->rootGroup() == m_groupView->currentGroup();
|
||||
bool isRecycleBin = m_db->metadata()->recycleBin() == m_groupView->currentGroup();
|
||||
return !isRootGroup && !isRecycleBin;
|
||||
return !isRootGroup;
|
||||
}
|
||||
|
||||
bool DatabaseWidget::isInSearchMode() const
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "ui_EditWidgetIcons.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QImageReader>
|
||||
|
||||
#include "core/Group.h"
|
||||
#include "core/Metadata.h"
|
||||
@@ -98,7 +99,7 @@ void EditWidgetIcons::load(Uuid currentUuid, Database* database, IconStruct icon
|
||||
m_database = database;
|
||||
m_currentUuid = currentUuid;
|
||||
|
||||
m_customIconModel->setIcons(database->metadata()->customIcons(),
|
||||
m_customIconModel->setIcons(database->metadata()->customIconsScaledPixmaps(),
|
||||
database->metadata()->customIconsOrder());
|
||||
|
||||
Uuid iconUuid = iconStruct.uuid;
|
||||
@@ -129,17 +130,21 @@ void EditWidgetIcons::addCustomIcon()
|
||||
QString filename = QFileDialog::getOpenFileName(
|
||||
this, tr("Select Image"), "", filter);
|
||||
if (!filename.isEmpty()) {
|
||||
QImage image(filename);
|
||||
QImageReader imageReader(filename);
|
||||
// detect from content, otherwise reading fails if file extension is wrong
|
||||
imageReader.setDecideFormatFromContent(true);
|
||||
QImage image = imageReader.read();
|
||||
if (!image.isNull()) {
|
||||
Uuid uuid = Uuid::random();
|
||||
m_database->metadata()->addCustomIconScaled(uuid, image);
|
||||
m_customIconModel->setIcons(m_database->metadata()->customIcons(),
|
||||
m_customIconModel->setIcons(m_database->metadata()->customIconsScaledPixmaps(),
|
||||
m_database->metadata()->customIconsOrder());
|
||||
QModelIndex index = m_customIconModel->indexFromUuid(uuid);
|
||||
m_ui->customIconsView->setCurrentIndex(index);
|
||||
}
|
||||
else {
|
||||
// TODO: show error
|
||||
MessageBox::critical(this, tr("Error"),
|
||||
tr("Can't read icon:").append("\n").append(imageReader.errorString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -183,7 +188,7 @@ void EditWidgetIcons::removeCustomIcon()
|
||||
}
|
||||
|
||||
m_database->metadata()->removeCustomIcon(iconUuid);
|
||||
m_customIconModel->setIcons(m_database->metadata()->customIcons(),
|
||||
m_customIconModel->setIcons(m_database->metadata()->customIconsScaledPixmaps(),
|
||||
m_database->metadata()->customIconsOrder());
|
||||
if (m_customIconModel->rowCount() > 0) {
|
||||
m_ui->customIconsView->setCurrentIndex(m_customIconModel->index(0, 0));
|
||||
|
||||
@@ -54,7 +54,7 @@ CustomIconModel::CustomIconModel(QObject* parent)
|
||||
{
|
||||
}
|
||||
|
||||
void CustomIconModel::setIcons(const QHash<Uuid, QImage>& icons, const QList<Uuid>& iconsOrder)
|
||||
void CustomIconModel::setIcons(const QHash<Uuid, QPixmap>& icons, const QList<Uuid>& iconsOrder)
|
||||
{
|
||||
beginResetModel();
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#define KEEPASSX_ICONMODELS_H
|
||||
|
||||
#include <QAbstractListModel>
|
||||
#include <QImage>
|
||||
#include <QPixmap>
|
||||
|
||||
#include "core/Global.h"
|
||||
#include "core/Uuid.h"
|
||||
@@ -44,12 +44,12 @@ public:
|
||||
|
||||
virtual int rowCount(const QModelIndex& parent = QModelIndex()) const Q_DECL_OVERRIDE;
|
||||
virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
|
||||
void setIcons(const QHash<Uuid, QImage>& icons, const QList<Uuid>& iconsOrder);
|
||||
void setIcons(const QHash<Uuid, QPixmap>& icons, const QList<Uuid>& iconsOrder);
|
||||
Uuid uuidFromIndex(const QModelIndex& index) const;
|
||||
QModelIndex indexFromUuid(const Uuid& uuid) const;
|
||||
|
||||
private:
|
||||
QHash<Uuid, QImage> m_icons;
|
||||
QHash<Uuid, QPixmap> m_icons;
|
||||
QList<Uuid> m_iconsOrder;
|
||||
};
|
||||
|
||||
|
||||
@@ -49,7 +49,8 @@ void KeePass1OpenWidget::openDatabase()
|
||||
|
||||
QFile file(m_filename);
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
// TODO: error message
|
||||
MessageBox::warning(this, tr("Error"), tr("Unable to open the database.").append("\n")
|
||||
.append(file.errorString()));
|
||||
return;
|
||||
}
|
||||
if (m_db) {
|
||||
|
||||
@@ -27,8 +27,12 @@
|
||||
#include "core/FilePath.h"
|
||||
#include "core/InactivityTimer.h"
|
||||
#include "core/Metadata.h"
|
||||
#include "format/KeePass2Writer.h"
|
||||
#include "gui/AboutDialog.h"
|
||||
#include "gui/DatabaseWidget.h"
|
||||
#include "gui/DatabaseRepairWidget.h"
|
||||
#include "gui/FileDialog.h"
|
||||
#include "gui/MessageBox.h"
|
||||
|
||||
const QString MainWindow::BaseWindowTitle = "KeePassX";
|
||||
|
||||
@@ -163,6 +167,8 @@ MainWindow::MainWindow()
|
||||
SLOT(changeDatabaseSettings()));
|
||||
connect(m_ui->actionImportKeePass1, SIGNAL(triggered()), m_ui->tabWidget,
|
||||
SLOT(importKeePass1Database()));
|
||||
connect(m_ui->actionRepairDatabase, SIGNAL(triggered()), this,
|
||||
SLOT(repairDatabase()));
|
||||
connect(m_ui->actionExportCsv, SIGNAL(triggered()), m_ui->tabWidget,
|
||||
SLOT(exportToCsv()));
|
||||
connect(m_ui->actionLockDatabases, SIGNAL(triggered()), m_ui->tabWidget,
|
||||
@@ -366,6 +372,7 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode)
|
||||
m_ui->actionDatabaseOpen->setEnabled(inDatabaseTabWidgetOrWelcomeWidget);
|
||||
m_ui->menuRecentDatabases->setEnabled(inDatabaseTabWidgetOrWelcomeWidget);
|
||||
m_ui->actionImportKeePass1->setEnabled(inDatabaseTabWidgetOrWelcomeWidget);
|
||||
m_ui->actionRepairDatabase->setEnabled(inDatabaseTabWidgetOrWelcomeWidget);
|
||||
|
||||
m_ui->actionLockDatabases->setEnabled(m_ui->tabWidget->hasLockableDatabases());
|
||||
}
|
||||
@@ -598,6 +605,36 @@ void MainWindow::lockDatabasesAfterInactivity()
|
||||
m_ui->tabWidget->lockDatabases();
|
||||
}
|
||||
|
||||
void MainWindow::repairDatabase()
|
||||
{
|
||||
QString filter = QString("%1 (*.kdbx);;%2 (*)").arg(tr("KeePass 2 Database"), tr("All files"));
|
||||
QString fileName = fileDialog()->getOpenFileName(this, tr("Open database"), QString(),
|
||||
filter);
|
||||
if (fileName.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QScopedPointer<QDialog> dialog(new QDialog(this));
|
||||
DatabaseRepairWidget* dbRepairWidget = new DatabaseRepairWidget(dialog.data());
|
||||
connect(dbRepairWidget, SIGNAL(success()), dialog.data(), SLOT(accept()));
|
||||
connect(dbRepairWidget, SIGNAL(error()), dialog.data(), SLOT(reject()));
|
||||
dbRepairWidget->load(fileName);
|
||||
if (dialog->exec() == QDialog::Accepted && dbRepairWidget->database()) {
|
||||
QString saveFileName = fileDialog()->getSaveFileName(this, tr("Save repaired database"), QString(),
|
||||
tr("KeePass 2 Database").append(" (*.kdbx)"),
|
||||
Q_NULLPTR, 0, "kdbx");
|
||||
|
||||
if (!saveFileName.isEmpty()) {
|
||||
KeePass2Writer writer;
|
||||
writer.writeDatabase(saveFileName, dbRepairWidget->database());
|
||||
if (writer.hasError()) {
|
||||
MessageBox::critical(this, tr("Error"), tr("Writing the database failed.") + "\n\n"
|
||||
+ writer.errorString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool MainWindow::isTrayIconEnabled() const
|
||||
{
|
||||
#ifdef Q_OS_MAC
|
||||
|
||||
@@ -66,6 +66,7 @@ private Q_SLOTS:
|
||||
void trayIconTriggered(QSystemTrayIcon::ActivationReason reason);
|
||||
void toggleWindow();
|
||||
void lockDatabasesAfterInactivity();
|
||||
void repairDatabase();
|
||||
|
||||
private:
|
||||
static void setShortcut(QAction* action, QKeySequence::StandardKey standard, int fallback = 0);
|
||||
|
||||
@@ -121,6 +121,7 @@
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionImportKeePass1"/>
|
||||
<addaction name="actionExportCsv"/>
|
||||
<addaction name="actionRepairDatabase"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionQuit"/>
|
||||
</widget>
|
||||
@@ -422,6 +423,11 @@
|
||||
<string>Export to CSV file</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionRepairDatabase">
|
||||
<property name="text">
|
||||
<string>Repair database</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
|
||||
@@ -49,7 +49,7 @@ void PasswordComboBox::setEcho(bool echo)
|
||||
// Qt on Mac OS doesn't seem to know the generic monospace family (tested with 4.8.6)
|
||||
setStyleSheet("QComboBox { font-family: monospace,Menlo,Monaco; }");
|
||||
#else
|
||||
setStyleSheet("QComboBox { font-family: monospace,Courier; }");
|
||||
setStyleSheet("QComboBox { font-family: monospace,Courier New; }");
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ void PasswordEdit::updateStylesheet()
|
||||
// Qt on Mac OS doesn't seem to know the generic monospace family (tested with 4.8.6)
|
||||
stylesheet.append("font-family: monospace,Menlo,Monaco; ");
|
||||
#else
|
||||
stylesheet.append("font-family: monospace; ");
|
||||
stylesheet.append("font-family: monospace,Courier New; ");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -88,6 +88,14 @@ void PasswordGeneratorWidget::reset()
|
||||
updateGenerator();
|
||||
}
|
||||
|
||||
void PasswordGeneratorWidget::regeneratePassword()
|
||||
{
|
||||
if (m_generator->isValid()) {
|
||||
QString password = m_generator->generatePassword();
|
||||
m_ui->editNewPassword->setEditText(password);
|
||||
}
|
||||
}
|
||||
|
||||
void PasswordGeneratorWidget::updateApplyEnabled(const QString& password)
|
||||
{
|
||||
m_ui->buttonApply->setEnabled(!password.isEmpty());
|
||||
@@ -111,6 +119,10 @@ void PasswordGeneratorWidget::sliderMoved()
|
||||
|
||||
void PasswordGeneratorWidget::spinBoxChanged()
|
||||
{
|
||||
if (m_updatingSpinBox) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Interlock so that we don't update twice - this causes issues as the spinbox can go higher than slider
|
||||
m_updatingSpinBox = true;
|
||||
|
||||
@@ -161,12 +173,39 @@ PasswordGenerator::GeneratorFlags PasswordGeneratorWidget::generatorFlags()
|
||||
|
||||
void PasswordGeneratorWidget::updateGenerator()
|
||||
{
|
||||
m_generator->setLength(m_ui->spinBoxLength->value());
|
||||
m_generator->setCharClasses(charClasses());
|
||||
m_generator->setFlags(generatorFlags());
|
||||
PasswordGenerator::CharClasses classes = charClasses();
|
||||
PasswordGenerator::GeneratorFlags flags = generatorFlags();
|
||||
|
||||
if (m_generator->isValid()) {
|
||||
QString password = m_generator->generatePassword();
|
||||
m_ui->editNewPassword->setEditText(password);
|
||||
int minLength = 0;
|
||||
if (flags.testFlag(PasswordGenerator::CharFromEveryGroup)) {
|
||||
if (classes.testFlag(PasswordGenerator::LowerLetters)) {
|
||||
minLength++;
|
||||
}
|
||||
if (classes.testFlag(PasswordGenerator::UpperLetters)) {
|
||||
minLength++;
|
||||
}
|
||||
if (classes.testFlag(PasswordGenerator::Numbers)) {
|
||||
minLength++;
|
||||
}
|
||||
if (classes.testFlag(PasswordGenerator::SpecialCharacters)) {
|
||||
minLength++;
|
||||
}
|
||||
}
|
||||
minLength = qMax(minLength, 1);
|
||||
|
||||
if (m_ui->spinBoxLength->value() < minLength) {
|
||||
m_updatingSpinBox = true;
|
||||
m_ui->spinBoxLength->setValue(minLength);
|
||||
m_ui->sliderLength->setValue(minLength);
|
||||
m_updatingSpinBox = false;
|
||||
}
|
||||
|
||||
m_ui->spinBoxLength->setMinimum(minLength);
|
||||
m_ui->sliderLength->setMinimum(minLength);
|
||||
|
||||
m_generator->setLength(m_ui->spinBoxLength->value());
|
||||
m_generator->setCharClasses(classes);
|
||||
m_generator->setFlags(flags);
|
||||
|
||||
regeneratePassword();
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ public:
|
||||
~PasswordGeneratorWidget();
|
||||
void loadSettings();
|
||||
void reset();
|
||||
void regeneratePassword();
|
||||
|
||||
Q_SIGNALS:
|
||||
void newPassword(const QString& password);
|
||||
|
||||
@@ -294,6 +294,7 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
|
||||
m_mainUi->expireDatePicker->setReadOnly(m_history);
|
||||
m_mainUi->notesEdit->setReadOnly(m_history);
|
||||
m_mainUi->tooglePasswordGeneratorButton->setChecked(false);
|
||||
m_mainUi->tooglePasswordGeneratorButton->setDisabled(m_history);
|
||||
m_mainUi->passwordGenerator->reset();
|
||||
m_advancedUi->addAttachmentButton->setEnabled(!m_history);
|
||||
updateAttachmentButtonsEnabled(m_advancedUi->attachmentsView->currentIndex());
|
||||
@@ -486,6 +487,7 @@ void EditEntryWidget::clear()
|
||||
|
||||
void EditEntryWidget::togglePasswordGeneratorButton(bool checked)
|
||||
{
|
||||
m_mainUi->passwordGenerator->regeneratePassword();
|
||||
m_mainUi->passwordGenerator->setVisible(checked);
|
||||
}
|
||||
|
||||
@@ -671,6 +673,14 @@ void EditEntryWidget::openAttachment(const QModelIndex& index)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!file->flush()) {
|
||||
MessageBox::warning(this, tr("Error"),
|
||||
tr("Unable to save the attachment:\n").append(file->errorString()));
|
||||
return;
|
||||
}
|
||||
|
||||
file->close();
|
||||
|
||||
QDesktopServices::openUrl(QUrl::fromLocalFile(file->fileName()));
|
||||
}
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const
|
||||
switch (index.column()) {
|
||||
case ParentGroup:
|
||||
if (entry->group()) {
|
||||
return entry->group()->iconPixmap();
|
||||
return entry->group()->iconScaledPixmap();
|
||||
}
|
||||
break;
|
||||
case Title:
|
||||
@@ -154,7 +154,7 @@ QVariant EntryModel::data(const QModelIndex& index, int role) const
|
||||
return databaseIcons()->iconPixmap(DatabaseIcons::ExpiredIconIndex);
|
||||
}
|
||||
else {
|
||||
return entry->iconPixmap();
|
||||
return entry->iconScaledPixmap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ QVariant GroupModel::data(const QModelIndex& index, int role) const
|
||||
return databaseIcons()->iconPixmap(DatabaseIcons::ExpiredIconIndex);
|
||||
}
|
||||
else {
|
||||
return group->iconPixmap();
|
||||
return group->iconScaledPixmap();
|
||||
}
|
||||
}
|
||||
else if (role == Qt::FontRole) {
|
||||
|
||||
@@ -210,17 +210,16 @@ void TestEntryModel::testCustomIconModel()
|
||||
|
||||
QCOMPARE(model->rowCount(), 0);
|
||||
|
||||
QHash<Uuid, QImage> icons;
|
||||
QHash<Uuid, QPixmap> icons;
|
||||
QList<Uuid> iconsOrder;
|
||||
|
||||
Uuid iconUuid(QByteArray(16, '2'));
|
||||
QImage icon;
|
||||
icons.insert(iconUuid, icon);
|
||||
icons.insert(iconUuid, QPixmap());
|
||||
iconsOrder << iconUuid;
|
||||
|
||||
Uuid iconUuid2(QByteArray(16, '1'));
|
||||
QImage icon2;
|
||||
icons.insert(iconUuid2, icon2);
|
||||
icons.insert(iconUuid2, QPixmap());
|
||||
iconsOrder << iconUuid2;
|
||||
|
||||
model->setIcons(icons, iconsOrder);
|
||||
|
||||
@@ -386,7 +386,12 @@ void TestGroup::testClone()
|
||||
QVERIFY(clonedSubGroupEntry->uuid() != subGroupEntry->uuid());
|
||||
QCOMPARE(clonedSubGroupEntry->title(), QString("SubGroupEntry"));
|
||||
|
||||
Group* clonedGroupKeepUuid = originalGroup->clone(Entry::CloneNoFlags);
|
||||
QCOMPARE(clonedGroupKeepUuid->entries().at(0)->uuid(), originalGroupEntry->uuid());
|
||||
QCOMPARE(clonedGroupKeepUuid->children().at(0)->entries().at(0)->uuid(), subGroupEntry->uuid());
|
||||
|
||||
delete clonedGroup;
|
||||
delete clonedGroupKeepUuid;
|
||||
delete db;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,8 +18,10 @@
|
||||
#include "TestKeePass2Writer.h"
|
||||
|
||||
#include <QBuffer>
|
||||
#include <QFile>
|
||||
#include <QTest>
|
||||
|
||||
#include "config-keepassx-tests.h"
|
||||
#include "tests.h"
|
||||
#include "FailDevice.h"
|
||||
#include "core/Database.h"
|
||||
@@ -27,6 +29,7 @@
|
||||
#include "core/Metadata.h"
|
||||
#include "crypto/Crypto.h"
|
||||
#include "format/KeePass2Reader.h"
|
||||
#include "format/KeePass2Repair.h"
|
||||
#include "format/KeePass2Writer.h"
|
||||
#include "format/KeePass2XmlWriter.h"
|
||||
#include "keys/PasswordKey.h"
|
||||
@@ -127,6 +130,34 @@ void TestKeePass2Writer::testDeviceFailure()
|
||||
delete db;
|
||||
}
|
||||
|
||||
void TestKeePass2Writer::testRepair()
|
||||
{
|
||||
QString brokenDbFilename = QString(KEEPASSX_TEST_DATA_DIR).append("/bug392.kdbx");
|
||||
// master password = test
|
||||
// entry username: testuser\x10\x20AC
|
||||
// entry password: testpw
|
||||
CompositeKey key;
|
||||
key.addKey(PasswordKey("test"));
|
||||
|
||||
// test that we can't open the broken database
|
||||
KeePass2Reader reader;
|
||||
Database* dbBroken = reader.readDatabase(brokenDbFilename, key);
|
||||
QVERIFY(!dbBroken);
|
||||
QVERIFY(reader.hasError());
|
||||
|
||||
// test if we can repair the database
|
||||
KeePass2Repair repair;
|
||||
QFile file(brokenDbFilename);
|
||||
file.open(QIODevice::ReadOnly);
|
||||
QCOMPARE(repair.repairDatabase(&file, key), KeePass2Repair::RepairSuccess);
|
||||
Database* dbRepaired = repair.database();
|
||||
QVERIFY(dbRepaired);
|
||||
|
||||
QCOMPARE(dbRepaired->rootGroup()->entries().size(), 1);
|
||||
QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->username(), QString("testuser").append(QChar(0x20AC)));
|
||||
QCOMPARE(dbRepaired->rootGroup()->entries().at(0)->password(), QString("testpw"));
|
||||
}
|
||||
|
||||
void TestKeePass2Writer::cleanupTestCase()
|
||||
{
|
||||
delete m_dbOrg;
|
||||
|
||||
@@ -33,6 +33,7 @@ private Q_SLOTS:
|
||||
void testAttachments();
|
||||
void testNonAsciiPasswords();
|
||||
void testDeviceFailure();
|
||||
void testRepair();
|
||||
void cleanupTestCase();
|
||||
|
||||
private:
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
#include "TestKeePass2XmlReader.h"
|
||||
|
||||
#include <QBuffer>
|
||||
#include <QFile>
|
||||
#include <QTest>
|
||||
|
||||
@@ -26,6 +27,7 @@
|
||||
#include "core/Metadata.h"
|
||||
#include "crypto/Crypto.h"
|
||||
#include "format/KeePass2XmlReader.h"
|
||||
#include "format/KeePass2XmlWriter.h"
|
||||
#include "config-keepassx-tests.h"
|
||||
|
||||
QTEST_GUILESS_MAIN(TestKeePass2XmlReader)
|
||||
@@ -66,6 +68,18 @@ QDateTime TestKeePass2XmlReader::genDT(int year, int month, int day, int hour, i
|
||||
return QDateTime(date, time, Qt::UTC);
|
||||
}
|
||||
|
||||
QByteArray TestKeePass2XmlReader::strToBytes(const QString& str)
|
||||
{
|
||||
QByteArray result;
|
||||
|
||||
for (int i = 0; i < str.size(); i++) {
|
||||
result.append(str.at(i).unicode() >> 8);
|
||||
result.append(str.at(i).unicode() & 0xFF);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void TestKeePass2XmlReader::initTestCase()
|
||||
{
|
||||
QVERIFY(Crypto::init());
|
||||
@@ -393,6 +407,8 @@ void TestKeePass2XmlReader::testBroken_data()
|
||||
QTest::newRow("BrokenGroupReference (not strict)") << "BrokenGroupReference" << false << false;
|
||||
QTest::newRow("BrokenDeletedObjects (strict)") << "BrokenDeletedObjects" << true << true;
|
||||
QTest::newRow("BrokenDeletedObjects (not strict)") << "BrokenDeletedObjects" << false << false;
|
||||
QTest::newRow("BrokenDifferentEntryHistoryUuid (strict)") << "BrokenDifferentEntryHistoryUuid" << true << true;
|
||||
QTest::newRow("BrokenDifferentEntryHistoryUuid (not strict)") << "BrokenDifferentEntryHistoryUuid" << false << false;
|
||||
}
|
||||
|
||||
void TestKeePass2XmlReader::testEmptyUuids()
|
||||
@@ -408,6 +424,97 @@ void TestKeePass2XmlReader::testEmptyUuids()
|
||||
QVERIFY(!reader.hasError());
|
||||
}
|
||||
|
||||
void TestKeePass2XmlReader::testInvalidXmlChars()
|
||||
{
|
||||
QScopedPointer<Database> dbWrite(new Database());
|
||||
|
||||
QString strPlainInvalid = QString().append(QChar(0x02)).append(QChar(0x19))
|
||||
.append(QChar(0xFFFE)).append(QChar(0xFFFF));
|
||||
QString strPlainValid = QString().append(QChar(0x09)).append(QChar(0x0A))
|
||||
.append(QChar(0x20)).append(QChar(0xD7FF))
|
||||
.append(QChar(0xE000)).append(QChar(0xFFFD));
|
||||
// U+10437 in UTF-16: D801 DC37
|
||||
// high low surrogate
|
||||
QString strSingleHighSurrogate1 = QString().append(QChar(0xD801));
|
||||
QString strSingleHighSurrogate2 = QString().append(QChar(0x31)).append(QChar(0xD801)).append(QChar(0x32));
|
||||
QString strHighHighSurrogate = QString().append(QChar(0xD801)).append(QChar(0xD801));
|
||||
QString strSingleLowSurrogate1 = QString().append(QChar(0xDC37));
|
||||
QString strSingleLowSurrogate2 = QString().append(QChar((0x31))).append(QChar(0xDC37)).append(QChar(0x32));
|
||||
QString strLowLowSurrogate = QString().append(QChar(0xDC37)).append(QChar(0xDC37));
|
||||
QString strSurrogateValid1 = QString().append(QChar(0xD801)).append(QChar(0xDC37));
|
||||
QString strSurrogateValid2 = QString().append(QChar(0x31)).append(QChar(0xD801)).append(QChar(0xDC37)).append(QChar(0x32));
|
||||
|
||||
Entry* entry = new Entry();
|
||||
entry->setUuid(Uuid::random());
|
||||
entry->setGroup(dbWrite->rootGroup());
|
||||
entry->attributes()->set("PlainInvalid", strPlainInvalid);
|
||||
entry->attributes()->set("PlainValid", strPlainValid);
|
||||
entry->attributes()->set("SingleHighSurrogate1", strSingleHighSurrogate1);
|
||||
entry->attributes()->set("SingleHighSurrogate2", strSingleHighSurrogate2);
|
||||
entry->attributes()->set("HighHighSurrogate", strHighHighSurrogate);
|
||||
entry->attributes()->set("SingleLowSurrogate1", strSingleLowSurrogate1);
|
||||
entry->attributes()->set("SingleLowSurrogate2", strSingleLowSurrogate2);
|
||||
entry->attributes()->set("LowLowSurrogate", strLowLowSurrogate);
|
||||
entry->attributes()->set("SurrogateValid1", strSurrogateValid1);
|
||||
entry->attributes()->set("SurrogateValid2", strSurrogateValid2);
|
||||
|
||||
QBuffer buffer;
|
||||
buffer.open(QIODevice::ReadWrite);
|
||||
KeePass2XmlWriter writer;
|
||||
writer.writeDatabase(&buffer, dbWrite.data());
|
||||
QVERIFY(!writer.hasError());
|
||||
buffer.seek(0);
|
||||
|
||||
KeePass2XmlReader reader;
|
||||
reader.setStrictMode(true);
|
||||
QScopedPointer<Database> dbRead(reader.readDatabase(&buffer));
|
||||
if (reader.hasError()) {
|
||||
qWarning("Database read error: %s", qPrintable(reader.errorString()));
|
||||
}
|
||||
QVERIFY(!reader.hasError());
|
||||
QVERIFY(!dbRead.isNull());
|
||||
QCOMPARE(dbRead->rootGroup()->entries().size(), 1);
|
||||
Entry* entryRead = dbRead->rootGroup()->entries().at(0);
|
||||
EntryAttributes* attrRead = entryRead->attributes();
|
||||
|
||||
QCOMPARE(strToBytes(attrRead->value("PlainInvalid")), QByteArray());
|
||||
QCOMPARE(strToBytes(attrRead->value("PlainValid")), strToBytes(strPlainValid));
|
||||
QCOMPARE(strToBytes(attrRead->value("SingleHighSurrogate1")), QByteArray());
|
||||
QCOMPARE(strToBytes(attrRead->value("SingleHighSurrogate2")), strToBytes(QString("12")));
|
||||
QCOMPARE(strToBytes(attrRead->value("HighHighSurrogate")), QByteArray());
|
||||
QCOMPARE(strToBytes(attrRead->value("SingleLowSurrogate1")), QByteArray());
|
||||
QCOMPARE(strToBytes(attrRead->value("SingleLowSurrogate2")), strToBytes(QString("12")));
|
||||
QCOMPARE(strToBytes(attrRead->value("LowLowSurrogate")), QByteArray());
|
||||
QCOMPARE(strToBytes(attrRead->value("SurrogateValid1")), strToBytes(strSurrogateValid1));
|
||||
QCOMPARE(strToBytes(attrRead->value("SurrogateValid2")), strToBytes(strSurrogateValid2));
|
||||
}
|
||||
|
||||
void TestKeePass2XmlReader::testRepairUuidHistoryItem()
|
||||
{
|
||||
KeePass2XmlReader reader;
|
||||
QString xmlFile = QString("%1/%2.xml").arg(KEEPASSX_TEST_DATA_DIR, "BrokenDifferentEntryHistoryUuid");
|
||||
QVERIFY(QFile::exists(xmlFile));
|
||||
QScopedPointer<Database> db(reader.readDatabase(xmlFile));
|
||||
if (reader.hasError()) {
|
||||
qWarning("Database read error: %s", qPrintable(reader.errorString()));
|
||||
}
|
||||
QVERIFY(!reader.hasError());
|
||||
|
||||
|
||||
|
||||
QList<Entry*> entries = db.data()->rootGroup()->entries();
|
||||
QCOMPARE(entries.size(), 1);
|
||||
Entry* entry = entries.at(0);
|
||||
|
||||
QList<Entry*> historyItems = entry->historyItems();
|
||||
QCOMPARE(historyItems.size(), 1);
|
||||
Entry* historyItem = historyItems.at(0);
|
||||
|
||||
QVERIFY(!entry->uuid().isNull());
|
||||
QVERIFY(!historyItem->uuid().isNull());
|
||||
QCOMPARE(historyItem->uuid(), entry->uuid());
|
||||
}
|
||||
|
||||
void TestKeePass2XmlReader::cleanupTestCase()
|
||||
{
|
||||
delete m_db;
|
||||
|
||||
@@ -42,10 +42,13 @@ private Q_SLOTS:
|
||||
void testBroken();
|
||||
void testBroken_data();
|
||||
void testEmptyUuids();
|
||||
void testInvalidXmlChars();
|
||||
void testRepairUuidHistoryItem();
|
||||
void cleanupTestCase();
|
||||
|
||||
private:
|
||||
static QDateTime genDT(int year, int month, int day, int hour, int min, int second);
|
||||
static QByteArray strToBytes(const QString& str);
|
||||
|
||||
Database* m_db;
|
||||
};
|
||||
|
||||
17
tests/data/BrokenDifferentEntryHistoryUuid.xml
Normal file
17
tests/data/BrokenDifferentEntryHistoryUuid.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<KeePassFile>
|
||||
<Root>
|
||||
<Group>
|
||||
<UUID>lmU+9n0aeESKZvcEze+bRg==</UUID>
|
||||
<Name>Test</Name>
|
||||
<Entry>
|
||||
<UUID>MTExMTExMTExMTExMTExMQ==</UUID>
|
||||
<History>
|
||||
<Entry>
|
||||
<UUID>MjIyMjIyMjIyMjIyMjIyMg==</UUID>
|
||||
</Entry>
|
||||
</History>
|
||||
</Entry>
|
||||
</Group>
|
||||
</Root>
|
||||
</KeePassFile>
|
||||
BIN
tests/data/bug392.kdbx
Normal file
BIN
tests/data/bug392.kdbx
Normal file
Binary file not shown.
@@ -239,6 +239,7 @@ void TestGui::testSearch()
|
||||
QVERIFY(entryDeleteWidget->isEnabled());
|
||||
QVERIFY(!m_db->metadata()->recycleBin());
|
||||
|
||||
MessageBox::setNextAnswer(QMessageBox::Yes);
|
||||
QTest::mouseClick(entryDeleteWidget, Qt::LeftButton);
|
||||
|
||||
QCOMPARE(entryView->model()->rowCount(), 3);
|
||||
|
||||
Reference in New Issue
Block a user